絞り込み条件を変更する
検索条件を絞り込む
有料ブログの投稿方法はこちら

すべてのカテゴリ

52 件中 1 - 52 件表示
カバー画像

VBAによるExcel業務の自動化:効率と生産性の向上

はじめにExcelはビジネスの世界で広く使用されているツールですが、VBA(Visual Basic for Applications)を使用することで、これらの作業を自動化し、効率を大幅に向上させることができます。この記事では、VBAを用いたExcel業務の自動化事例を紹介し、そのメリットと実装方法について解説します。VBAとは?VBAは、Microsoft Office製品をプログラミングによって制御するための言語です。Excel内のデータ処理、計算、チャート作成など、繰り返し行う作業を自動化するために広く使用されています。自動化事例1: 日報作成の自動化多くの企業では日報の作成が日常的な業務です。VBAを使用すると、特定のフォーマットに沿った日報を自動で作成し、必要なデータを挿入することができます。実装方法テンプレートの作成: 日報の基本的なフォーマットをExcelに作成します。データ入力自動化: VBAを使用して、日々のデータを自動的に日報テンプレートに入力します。レポートの生成: 完成した日報をPDF形式で自動保存するマクロを設定します。自動化事例2: 財務データの分析財務データの分析は複雑で時間がかかる作業ですが、VBAを使うことで、データの収集から分析、レポートの作成までを自動化できます。実装方法データ収集: VBAを用いて、外部データベースから必要な財務データをExcelに自動的にインポートします。データ処理: 財務データを分析用に整形し、計算を行います。レポート作成: 分析結果を基に、自動的にグラフや表を作成し、レポートとして出力します。まとめVBAを用いるこ
0
カバー画像

ExcelVBAの処理速度

Excelの処理速度って遅いなぁと思うことがありませんか。それはもしかするとパソコンの性能じゃないかもしれません。Excelって意外と軽いアプリケーションで、比較的低スペックのマシンでも快適に動くようにできています。それはユーザが作ったVBAも同様です。Excelで特に重い処理トップ3は①グラフィックの描画、②再計算、③セルの書き込み、これらはとても重くなります。連続で行うと一気に処理速度が低下する原因になります。それぞれ解決策はあって、基本的なことで行くと、①に関してはApplication.ScreenUpdatingをオフにすること、②に関しては自動再計算をオフにしたり、計算済みの値をセルに書き込むこと、③に関しては配列に値を設定しておいてまとめて書き込むことなどで処理時間を短縮できます。私の作成するマクロは高速処理が効率に直結する現場で実用されている物ですので、この基本は必ずクリアしている物を提供しております。マクロを作る側、作ってもらう側、双方が満足するマクロの要因の一つに処理速度はあると思いますので、皆さんに気にしていただきたいなと思います。
0
カバー画像

ソースコードはかく語りき

最近の言い方で言うと、・君のソースコードがささやいている・ソースコードは君に語りかけるとかでしょうか。画像は、Image Creator 提供 DALL·E 3です。ExcelVBAやGAS(Google Apps Script)の作成支援、修正などを行っていますと、これまで使っていて、動かなくなったものや、今はもう使われなくなったコードを目にすることがよくあります。今でこそ機能していませんが、かつては動いていた。もしくは動かそうと努力した後が垣間見えます。・ああ、これは令和対応をしたんだな・祝日対応しようとして諦めたんだな・あと一歩なんだけどなかつてこのファイルに触れたことのある人が、努力し、研鑽し、切磋琢磨した後が痕跡として残っています。多分消しても動作に影響はないんだけど、いつか使うかもしれないから残しておくか。そういう気持ちで今に至るコードたちです。こういうところから新しいアイディアが生まれたり勉強になることも少なくないので、私も無駄だからとバッサリ切らずに残しておくことが多いです。そして、本当にまれにですが、なぜか変更すると思うとおりに動作しなくなる箇所があったりします。どう考えても使われていないように見えて、実際には使われているケース。神社やお寺、お地蔵さまや鳥居みたいですね。最近はAIもコードを作成しますので、それも残すともうごちゃごちゃして本当に読める人でないとメンテナンスもできない状態に。ソースコードをAIに渡してきれいにしてくれる時代も来ますかね。
0
カバー画像

効率化を依頼する際の注意点

はじめまして!効率化が趣味の「あやせ」と申します。ココナラブログ初投稿です💦よろしくお願いします!今回は、効率化を依頼する時に何を出品者に伝えればいいのか?分からずに不安な方のために、伝えておくとスムーズに話が進む方法をお伝えします!1.困りごとを思いつく限り書き出すとりあえず、困っていることを沢山教えてください!困りごとが分かれば、それをどう効率化するかは考えてご提案いたします!もちろん、細かい仕様(このデータをこのフォーマットに自動集約してほしい等)が決まっているとすぐにご提案可能です。ですが、どう効率化できるか分からない。でも困っている。そう考えている人の方が多いと感じています。ですので、困りごとだけお伝えいただき、効率化する方法はプロに考えてもらいましょう。2.困りごとが思いつかない場合は、効率化したい作業の流れを書く困りごとを書いて、と言われてもそれも分からないから困っているんだ。そう思われる方もいらっしゃると思います。そんな時は、あなたの作業の流れを教えてください!作業の流れが分かれば、どの作業を効率化できるかご提案可能です!過去ご依頼頂いた方からも、その作業まで効率化できるのか。と驚かれることもありました。効率化について常に考えている為、驚きに繋がるようなご提案となることもあります。他にも出品者に伝えて頂けるとスムーズに進められる点はありますが、「困りごと」「作業の流れ」これらをお伝えいただければ、スムーズに進めやすくなりますので、意識してみてください。最後までご覧いただき、ありがとうございました。
0
カバー画像

VBA×○○○の魅力

VBAは主にOffice系(ExcelやPowerPoint)を自動化する言語であり、Office以外の自動化となると極端にできることが少なくなります。しかしそんなVBAでも別の何らかと連携させることでできることの幅が大きく広がります。ここではそんなVBAと連携させることで機能が拡張できる"別の何らか"をいくつかご紹介します。Windows APIWindows APIとは簡単にいえばWindowsに用意されている機能がまとまっているセットのようなもので、VBAからそれらを呼び出すことでWindowsに用意されている様々な機能を使用することができます。これら機能はほとんどの場合、VBAだけでは実現できないものばかりですVBAではWindowAPIを呼び出すための定型文、いわゆる"おまじない"をコード上に記載するだけすぐに呼び出すことが可能です。ウィンドウを操作(サイズ変更、透明化など)したり、クリップボードを操作したり、マウスやキーボードの制御、画像や図形の描画などのようなVBAでは実現できない非常に多くの操作を可能にしてくれます。ポインタやメモリといったC++言語寄りの考えが出てきたり、外部アプリケーションに影響を与える関数なども存在するためある程度の知識を付けておく必要があります。自作DLL (Dynamic Linking Library)WindowsAPIはWindowsに標準装備されているDLLファイル内にある関数を呼び出しているだけなのですが、DLLファイルは自作することも可能です。たとえば自作DLL内で画像処理が得意なOpenCVを使った顔認識の関数を作成すれば
0
カバー画像

chatGPT × Excel セル内容を喋らせる方法を聞いてみた

chatGPTにExcelに入力したセルを喋らせる方法について尋ねてみた結果面白いことができましたので、共有します。質問した内容は、「Excel VBAで面白く音声を読み上げさせる方法」を教えてとしました。結果として、以下のようなコードが返ってきました。やはりコードの作成が速いですね。ちなみにこのspeak機能2012年頃から搭載されたようですね。何か命令文の終わりを音声で知らせたり、意外と使い道がある方法かなと思いました。Sub SpeakText(text As String)     Dim speaker As SpVoice     Set speaker = New SpVoice     speaker.Speak text End Sub Sub Test()     SpeakText "こんにちは、私はExcel VBAです。" End Sub
0
カバー画像

【Excel小ネタ-2】エクセルでパズル作成

 エクセルは、普段ビジネスやデータ分析などの実務に使われることが多いソフトウェアですが、実は、エクセルを使って簡単なパズルゲームを作成することもできます。たとえば、数独やクロスワードパズル、色を使ったパターンマッチングゲームなどが挙げられます。  数独は、9×9のマス目に数字を配置していくゲームです。エクセルで数独を作成する場合、まずはセルに数字を入力します。数字を入力するときには、同じ数字が入力されていないかを条件付き書式でチェックすることができます。また、数字の入力が完了したら、数式を使って行や列、ブロックの合計が正しいかどうかをチェックすることができます。これによって、自動的に数独の答えが導き出されます。  クロスワードパズルは、縦と横に単語を配置していくゲームです。エクセルでクロスワードパズルを作成する場合、まずはセルに単語を入力します。単語を入力するときには、同じ文字が入力されていないかを条件付き書式でチェックすることができます。また、単語の入力が完了したら、数式を使って単語が重なっている箇所の文字が正しいかどうかをチェックすることができます。これによって、自動的にクロスワードパズルの答えが導き出されます。  色を使ったパターンマッチングゲームは、同じ色のブロックを3つ以上つなげていくゲームです。エクセルで色を使ったパターンマッチングゲームを作成する場合、まずはセルに色を塗ります。色を塗るときには、同じ色が繋がっていないかを条件付き書式でチェックすることができます。また、色の塗りが完了したら、数式を使ってつながっている同じ色のブロックの数を数えることができます。
0
カバー画像

VBAでクラスモジュールを使うわけ

さて、先日使い倒したChatGPTで、VBAのクラスモジュールの制限の事を聞いたら、こんな丁寧で詳しい回答が返ってきました。VBAで作成するクラスモジュールは、Javaなどのオブジェクト指向言語で作成するクラスと比較して、以下のような制限があります。1.クラスの継承の制限: VBAでは、クラスの継承をサポートしていません。そのため、クラスの再利用性が低下する可能性があります。 2.ポリモーフィズムの制限: VBAでは、クラスのメソッドのオーバーロードやオーバーライドをサポートしていません。そのため、同じ名前のメソッドに対して、異なる引数を設定することができないため、ポリモーフィズムの実現が困難になる可能性があります。 3.インターフェースの制限: VBAでは、インターフェースを明示的に定義することができません。そのため、クラスの機能やメソッドが不明瞭になる可能性があります。 4.例外処理の制限: VBAでは、例外処理をサポートしていますが、Javaなどの他のオブジェクト指向言語に比べて、精度が低く、エラーメッセージの表示が不明瞭であるため、開発者にとっては制限に感じられるかもしれません。 以上のように、VBAで作成するクラスモジュールには、オブジェクト指向プログラミングにおける一般的な機能が制限される可能性があるため、開発者は注意が必要です。 固まってしまいました。特に最後の1文、「開発者は注意が必要です」ではなく、「開発者は工夫が必要です」では???他にツッ込みたいところがいくつもありましたが、ここでは止めておきます。VB及びVBAのクラスモジュールの最大の制限、継承ができな
0
カバー画像

エクセル2019勉強中③ 連続印刷(マクロ使用)

少し忙しかったので、ブログ更新をサボってしまいました(-"-)今回も勉強時間は取れないので、私が使っているものの紹介になります。マクロを使用して連続印刷を行います。私自身は請求書発行などで使用していますが、年賀状のあて名書き印刷にも工夫すれば使えると思います。・・・ハガキレイアウト作るのがちょっと大変だと思いますが (^_^;)WORDでの差し込み印刷と同じ感じですが、エクセルの方が使い慣れているので私はこちらを使っています。私自身はプロではないので、もっと良い作成方法あるかもしれませんが、大目に見て頂けると幸いです(^^♪【連続印刷の方法】①印刷レイアウトを作成します。 今回はすごくシンプルに作成しており、関数はVLOOKUPを使っています。 A1の郵便番号部分の関数は  =VLOOKUP($C$2,$A$6:$D$10,3,0) と入っています。意味は、 「表A6~D10の一番左の数字がC2の数字と一致する行の  左から3番目のセル値を表示」となります。②連続印刷用のマクロを作成します。 「表示」タブ → 一番右の「マクロ」の下向き矢印 →「マクロの記録」画面が出てくるので、マクロ名を「連続印刷」と入力 →マクロの記録を開始 →すぐ終了させます。(停止ボタンは記録開始と同じ場所)③作成したマクロを連続印刷用マクロへ書き換えます。 「マクロ」ボタンを押すと、作成したマクロが表示されるので 編集するマクロを選択し、「編集」ボタンを押します。 マクロが表示されるので、下記のマクロを「End Sub」が 最後に来るように貼り付けして、マクロの画面を終了させます。 ※1行目はプロの方
0
カバー画像

ブロックを外すには・・・(マクロの駆動)

昨日のブログにて記載した共有フォルダ上にあるExcelのマクロを動作させる方法を説明します。今回の方法は、共有フォルダがあるIPアドレスを活用する方法です。コントロールパネル→ネットワークとインターネット→ネットワークと共有センターを選択します。インターネットオプションを選択し、インターネットのプロパティを開き、セキュリティのタブを選択します。ローカルイントラネットを選び、サイトをクリック。詳細設定を選択し、このwebサイトをゾーンに追加するの欄に、IPアドレスを記載することでマクロを駆動させることができます。共有フォルダを一度登録してしまえば、別のデータを新規で追加してもマクロは動くことができます。
0
カバー画像

Excelデータを共有し、同時編集を可能にするには。

事業所内ネットワークの、共有フォルダにExcelデータを置いておき、運用する場合に同時編集を可能にする方法について説明します。事業所でExcelデータを共有する場合、同時編集することができるように設定することで、『読み取り専用』になることなく、編集できないストレスを減らすことができます。Excelのバージョンによって異なりますが、使用しているバージョンが、Excel for Microsoft 365であれば、ワンドライブなどクラウド上に保存する方法で、データを共有し、共同編集がが可能となります。しかし、事業所に導入されているExcelバージョンが古いと上記の方法はとれず、データがクラウド上にあるので管理する人も必要になります。そもそも共有フォルダ上にデータが存在しないので、管理するにも注意が必要です。下記に、Excelバージョンが最新でなくても共有できる方法を記載します。①Excelの ファイル→その他→オプション→クイックアクセスツールバーを押します。②コマンドの選択をすべてのコマンドを押し、一覧の中から→ブックの共有(レガシ)を選択し、追加します。③クイックアクセスツールバーにある、ブックの共有ボタンを押す。④編集タブの、『新しい共同編集機能ではなく、以前の共有ブック機能を使用します』にチェックして、『OK』です。かなり簡単ですが、注意が必要な点があります。まず、共有することでVBAの編集、シートの削除ができなくなります。VBAそのものは駆動します。VBAの編集など操作が必要な場合には、リボンの校閲から、ブックの共有を解除します。また、テーブル機能も利用できないので、事前
0
カバー画像

あれ?ExcelVBAのツールで1行目だけうまくいかない。

ExcelVBAのツールで、1行目のデータだけうまく取り込めない(うまく判定されない)ことがあると思います。それは、文字コードが原因の可能性があります。以下の点を確認してみてください。上記の画像では、「UTF-8」となっていますので、これでは、Excelが想定している文字コードではないため、うまくいかない場合があります。「ANSI(Shift-JIS)」に変更してみてください。「ANSI(Shift-JIS)」へ変更方法ファイル>名前付けて保存・・・赤枠の文字コードを「ANSI」を選択し、保存してください。以上で、変更可能です。<補足>変更後、そのまま保存すると文字化けする場合がありますが、その場合は、記載されている文字を別のファイルに退避させておき、文字コードを変えたファイルを作成後貼り付けしてみてください。以上となります。どなたかの参考になれば、嬉しいです。
0
カバー画像

【Excel小ネタ-1】マウスを使わずにExcelを起動する方法

 エクセルを起動するには、デスクトップ上のショートカットアイコンをダブルクリックする方法が一般的かと思います。しかし、これだとわざわざとマウスを使ってカーソルをアイコン上に移動させる必要があり、無駄な時間がかかります。ここでは、Excelをキー操作だけで素早く起動させる方法をご紹介します。①まずWindowsキーを押すと、スタートメニューが表示されます。②続いて、Eキーを押します。 ※WindowsキーとEキーは同時に押すとエクスプローラーが起動してしまいますので、ご注意ください。③最も一致する検索結果として、Excelが表示されますので、そのままEnterキーを押せばエクセルが起動されます。 この方法で短縮できる時間は数秒程度ですが、塵も積もれば山となりますので、一年を通せば結構な効率化になるかと思います。是非試してみてください(^_^) 普段はテンプレ作成からマクロVBAまで、Excelに関する様々な作業を引き受けております。「こういうことはできますか?」の確認だけでも大丈夫ですので、是非お気軽にお問い合わせくださいませ。何か解決策がないか、一緒に考えましょう!(^_^)
0
カバー画像

プログラミングの基本的な事 その1 データ型

これまで幾つかオリジナルでのVBA作成依頼を扱ってきました。その中で気づいた点をいくつか書きたいと思います。オリジナルで依頼されるお客様は作業のシステム化に前向きでそれなりの知識を持っておられる方が多いように思われます。それでも基本的な知識不足を感じる事があります。基本的な「ひな形」を提供してくださる方もおります。「もう少し基本的な知識があればもっとよいひな形作成できるのに」と思ってしまう時があります。ファイルのひな形がそのようなものです。Excelにおいてデータ格納ファイルは「Sheet」になります。通常のデータ格納のファイル「データベース等」はSheetのように簡単に見る事はできません。そして、各項目にデータ型を指定しなければなりません。ExcelVBAもこの「データ型」を指定しなければなりません。ExcelのSheetは便利なものでデータ型が何であろうと自動で認識してくれます。「文字型」と「数値型」は本来違う型なのですがSheet(セル)で勝手に判断して計算しれくれます。計算できない型は勝手に飛ばして計算しますね。ところが通常のプログラミングで使用されるデータを格納する「データベース」等はそうは行きません。混同しているとエラーになります。その辺の違いをしっかり理解しておくとより良い物が出来るのになあと思ってしまう時があります。プログラム言語によっては「自動」で認識して「データ型」を定義しなくてもよいものが多くなりましたが、この「自動」の裏側では依然として基本的な決まり事は変わっていないことを認識しておいた方がよいのではと思っています。例えば「数量」と「単位」を一つのセルに
0
カバー画像

【上級者向け】Excel VBA ちょっとしたテクニック

閲覧いただきありがとうございます!Excel VBA関連で出品しているさべろくと申します。今回は使えるシーンは限られているけど、知っておくと助かるそんなテクニックについて書いていこうと思います。一応上級者向けと銘打っておりますが、初心者の方も知っておくと後々使える機会もあるかと思いますので是非ご覧ください。唐突ですが、VBAは古い言語です。初出は1993年ですので、29年前からある言語となります。そのため、Python等と比べると色々用意されている関数が少ないです。例えば配列の中身をソートさせるにもPythonならsortと書けばできるのにVBAでは自分で実装してあげる必要があります。そのように既存に用意されている便利なものを使うのではなく、自作するというシーンがExcel VBAで物を作っていると度々あります。これがまたプログラミングの根本的な部分に触れる機会になってExcel VBAの楽しいところなのですが、難しいところでもあります。歴史の長い言語で元からある記事に加えて、昨今のプログラミングブームもあり、Excel VBAの記事も増えてきていることから、例えば先ほど挙げたソートの例なら「excel vba 配列 ソート」とかで検索すればヒットするのでそこまで苦労はないでしょう。ですが、経験上まだ完璧かというと少し足りないなと感じています。例えば、数学の組み合わせの問題というのがあります。10個の色付きボールから4個選んだときの組み合わせを列挙せよ、といった問題です。この場合「excel vba 組み合わせ 列挙」とかで調べるとしましょう。調べると組み合わせを算出する関数を
0
カバー画像

Excel VBA オーバーフローというエラーが出てくるとき

ココナラでExcel VBA関連のサービスをやっているさべろくと申します。閲覧いただきありがとうございます。いきなり本題ですが、Excel VBAで下記エラーが出るときがあります。これは指定したデータ型の範囲を超えた場合に出てくるエラーです。例えばInteger型で変数を宣言した場合は、-32,768~32,767の範囲に収まっていないと上記エラーが出ます。直す方法はもっと大きな範囲を扱える型にすることです。例えばLong型にすれば-2,147,483,648〜2,147,483,647の範囲の数値を扱えます。ここまではよく記事に書かれている内容です。ちょっとだけ変わった事例のお話をします。それはLong型を超えた場合にどうすればいいのか?という話です。仕事でLong型を超えるケースに遭遇しました。数学で扱われる組み合わせを列挙する問題です。例えば、10個のボールから4個選んだときの組み合わせのパターンを列挙しなさいといった問題です。実際には10個から4個選んだ組み合わせの場合は、セルに「1 2 3 4」「1 2 3 5」のように組み合わせを記載していくというものです。下記の通りExcelを用意しました。総数を指定して抜き取り数を指定すると、通り数が算出されます。通り数はExcelの関数であるCOMBINを使って算出しています。実行ボタンを押すと1シートに下記のように表示されます。※これは10通りから3つ選んだときの結果です。総数と抜き取り数を自由に設定できるようにしているため、ここで問題が起きました。通り数がエクセルの1シートのセルの数(約171億)を超えてしまい、書ききれず
0
カバー画像

Excel VBA(マクロ)の定期実行、それできますよ?

閲覧ありがとうございます<(_ _)>ココナラでExcel VBA関連で出品しているさべろくと申します。早速本題です。Pythonでスクレイピングツール(Web上のデータを取得するツール)を作るかExcel VBAで作るかの判断で、「Excel VBAで作ったものは定期実行ができないが、PythonはできるからPythonで作る」という意見を聞いたので、Excel VBAでもできますよという記事を書こうかなと思いました。やり方は大きく分けると2通りかなと思います。※Windows環境について書きます。[1]. Excel VBA + タスクスケジューラで実行するこれは、Excel VBAのプログラムで「エクセルファイルが開かれたときにマクロが実行されて、実行が終わったらファイルを閉じる」という記述を書く方法です。具体的には、「ThisWorkbook」モジュールに「Workbook_open」というサブプロシージャを記述すればできます。開かれたら実行されるExcelを用意して、タスクスケジューラでエクセルファイルを決まった時間に開くだけです。[2]. VBScript(もしくはバッチファイル) + タスクスケジューラで実行するこれは、VBScriptなど外部ファイルでエクセルを開いて、マクロを実行して、閉じるという方法です。タスクスケジューラには、上記のVBScriptなどの外部ファイルをセットして実行するだけです。このように2つのやり方があります。おススメは[2]です。[1]はエクセルファイルを開いたときに自動でマクロが実行されて閉じるという処理が実行されるため、
0
カバー画像

"S"tay "H"ome Support Brog

[2022.05.23] ブログを始めました! よろしくお願いいたしますm(_ _)mまずは自己紹介させていただきます。元々は公共事業向けシステムのSEをしておりましたが、紆余曲折あり、現在の本業は製造業です。ココナラでは、SE経験を活かしてサイドビジネスとして始めさせていただきました。現在のところ、販売実績は2件と少ないですが、おかげ様で高い評価をいただいております。(ご購入者様、ありがとうございました!感謝いたします!)今のところ、サービス内容も少ないですが(以下のサービスを提供中です)今後更にスキルアップして、多くのサービスを提供して行きたいと考えております。是非とも、よろしくお願いいたします。☆サービス内容 [2022.05.23現在]☆◇Comming Soon !◇<Excel:ペーパーレス化!汎用チェックリストシステム> ・設定用Excelシートで作業指示データを登録、同一ネット上の複数PCへ配信可能 ・設定用Excelシートに印刷様式シートをユーザーが作成可能 ・印刷様式シートの各行に、入力用Excelシートのチェック項目No.をユーザーが任意に紐づけ ・入力用Excelシートを立ち上げると、設定用Excelシートで登録した作業指示データ(例えば、注文番号、製品形式、シリアル番号)が表示される ・入力用Excelシートには、チェック項目行毎に「OK/NG/SKIP」入力フォーム表示、「文字列」入力フォーム表示、直接入力(数値上下限チェック機能付き)の何れかが任意に紐づけ可能 ・入力用Excelシートのチェックを総合判定して合否判定が可能 ・チェック結果をCSVフ
0
カバー画像

請求書作成アップデート

請求書作成のアップデートをしました。●修正機能をより充実させました。  請求書印刷手前ギリギリで、データを戻し修正を行えるようにしました。  「あ、しまった!」に対応しました。●再発行機能の追加  再発行機能はオプションでしたが、標準機能にしました。※ついでに紹介画像も新しく作ってみました。いまいちですか・・・センスないなあ。先日納品した商品は、帳票の下部に「合計」の記入がありまして、複数ページを印刷する場合。ある行数に詳細記入が来た時次のページの下部に「合計」の記入が移る。という事案がありました。皆さんがご使用になっている帳票は本当に様々だなあ、と思いました。今回一番悩んだのはFormのfocus機能がFormをモードレスにすると使えない? うまく機能してくれないというのがありました。気づくまでやや時間がかかってしまったのですが、どうもそういう設定のようです。ExcelVBAはまだまた深いなあ。と思いました。もうだいぶ古い言語なのですが可能性はありますね。これからもがんぱって創って行きます。
0
カバー画像

【Excel VBA】クラスモジュールを利用して、Excelでイベントを一括管理する

YouTubeでも紹介しています。是非、ご覧ください。ACCESSで、クラスモジュールを利用して、イベントの一括管理を紹介しました。 今回は、Excelで、クラスモジュールを利用して、イベントの一括管理を、行います。 クラスモジュールを利用して、Excelでイベントを一括管理するこんにちは。伊川です。 以前、コンボボックスを利用しないで、連動した値を取得する方法を紹介しました。 コンボボックスを作成したほうが楽だとは思います。 しかし、配列の勉強もかねて、ユーザーフォームで作成しました。 下記の記事を参照してください。 クラスモジュールは、VBAにおいては、本来のクラスモジュールとは、違うということを、 ACCESSのクラスモジュールで紹介しました。 下記の記事を参照してください。 VBAでの、クラスモジュールは、イベントの一括管理と覚えてください。 また、ACCESSとでは、微妙に書き方が違いますので、是非、ACCESSのクラスモジュールと見比べてください。 このブログはこんな人にお勧め クラスモジュールを勉強している人 クラスモジュールの適当なサンプルがない人 クラスモジュールが、全然、理解できない人 このブログを、読み終わるころには・・・・ 私も、クラスモジュールが、なにか全然理解できませんでした。 しかし、コードを眺めることで、少しだけ理解できるようになりました。 単純なサンプルですが、是非、コード眺めて、理解するように努めてください。 Excelで、イベントの一括管理 ACCESSも、Excelも、イベントの一括管理は、WithEventsを利用します。 クラス
0
カバー画像

【Excel VBA】コンボボックスの作成は今すぐ禁止

YoTubeでも解説しています。ぜひ、ご覧ください。Excelの初心者の頃は、何かとコンボボックスを作成したくなります。 次に、連動のコンボボックスですね。 しかし、凝りすぎると、コンボボックスは不便です。 【Excel VBA】コンボボックスの作成は今すぐ禁止こんにちは。伊川です。 Excelの初心者の頃は、何かとコンボボックスを作成したくなります。 次に、連動のコンボボックスですね。 しかし、凝りすぎると、コンボボックスは不便です。 今回は、コンボボックスに変わる方法を紹介します。 以前に、連動のコンボボックスの作成は、下記の記事で紹介しています。 参考にしてください。 連動コンボボックス作成には、様々な方法があります。 INDIRECT関数を利用する方法はやめた方がいいです。 これは、経験談です。 業者とかに、システムを発注しても、平気で、長いコンボボックスを作成してくるときがあります。 はっきり言いますが、こんなコンボボックスは、迷惑のなにものでもありません。 だから、社内システムは、処理を、知っている人が一番です。 このブログはこんな人にお勧めコンボボックスが、不便と思っている人 連動のコンボボックスを作成したいと思っている人 コンボボックスを最強と思っている人 このブログを、読み終わるころには・・・・コンボボックスのリストは、せいぜい、5行までです。 私は、競馬をしていますが、競馬場の選択は、10行あります。 10行の中から、選択するのは、本当に不便です。 発送の転換と、少しの配列の知識で、作成可能です。 連動のコンボボックスに変わる手段個人的な意見ですが、連動のコ
0
カバー画像

【Excel VBA】誰も教えてくれないプログラミングのやり方

記事の閲覧ありがとうございます。さべろくと申します。Excel VBAは10年前から触っていて、前職では社内講師を務めた経験があり、ココナラでは3か月で20件程度、作成や相談を請け負う仕事をやらせてもらっています。ココナラ上で初心者の方向けにExcel VBAを教えるお仕事もやっているのですが、皆様抱える問題が似ていまして、「本(ネット)で勉強したけど私が作りたいものの作り方が分からない」この悩みが多いなと感じました。この悩みはあることを知れば解決するのですが、知らない場合はこれから勉強するぞという方も上記悩みを持たれるかもしれません。この記事はその悩みを解決し、作りたいものが作れるようになるためのポイントを実際の例を通して解説していきたいと思います。よろしかったらご購読ください。
0 500円
カバー画像

【Excel VBA】色々なものをコレクションする

YoTubeでも解説しています。是非、ご覧ください。最近、クラスモジュールに、ハマっています。 クラスモジュールを利用する際に、collectionオブジェクトを利用することがあります。 そういえば、説明していなかったと思いました。 色々なものをコレクションするこんにちは。伊川です。 VBAを、勉強するにつれて、色々な技を身に着けてきます。 すると、だんだん、一括処理と、コードを短くするということが、楽しくなってきます。 行きつくのは、配列等になるのでしょう。 その中でも、Collecitonオブジェクトに、最近触れることが多いです。 ここを説明しないと、クラスモジュールの説明の際に、いきなり、Collecitonが登場しますので、今回、説明をしようと思います。 連想配列的な側面もありますが、連想配列ほど、難しくないです。 このブログはこんな人にお勧めVBAの勉強が好きな人 効率的をしたい人 コードを短くしたい人 このブログを、読み終わるころには・・・・Collecitonオブジェクトは、クラスモジュールに似ているとおもうはずです。 多分、クラスと、Collecitonオブジェクトを組合わせるともっと便利になると思います。 CollecitonCollectionオブジェクトとは項目(item)とキー(key)をセットで格納するオブジェクトのことです。 Collectionオブジェクトの要素には数値、文字列からオブジェクトまで格納することができます。 要素ごとに数値や文字列などデータ型が異なる場合でも1つのコレクションとしてまとめておくことができます。 ただし、キーを重複させる
0
カバー画像

【Excel VBA】クラスモジュールのプロパティの設定・呼出

YoTubeでも解説しています。是非ご覧ください。何かと仕切りの高いクラスモジュールですが、マスターしたい気持ちも駆られて頑張っています。 以前に紹介した、ExcelVBA 実践のための技術を熟読した結果です。 クラスモジュールのプロパティこんにちは。伊川です。 何かと仕切りの高いクラスモジュールですが、マスターしたい気持ちも駆られて頑張っています。 以前に紹介した、ExcelVBA 実践のための技術を熟読した結果です。 クラスモジュールを勉強していますが、なかなか難しいです。 派手なアクションを求めるより、基礎も勉強しようと思い、下記の書籍を熟読しました。 わずかな行数ですが、こんなにも奥が深いのかと思う内容でした。 少しだけまた、理解が深まり、うれしい気持ちになっています。 VBAを実行しても、本当にカンタンな内容です。 わざわざ、クラスモジュールを使う必要がない内容です。 はっきり言ってつまらないです。 しかし、このつまらない内容に、クラスモジュールで、プロパティの設定、呼出が詰まっています。 このブログはこんな人にお勧めExcelVBAを勉強している人 クラスモジュールが何か理解できていない人 クラスモジュールを利用して、かっこいいコードを書きたい人 このブログを、読み終わるころには・・・・ExcelVBA 実践のための技術の9章にクラスモジュールの記載があります。 いきなり、読んでも多分理解できません。 もし、ExcelVBA 実践のための技術を持っているなら、このブログを読んだ後に、 もう一度、ExcelVBA 実践のための技術9章を読み返していただくと、理解できる
0
カバー画像

[VBA実践]Excel関数を有効活用しよう![#4]

前回の記事はこちらさて、前回の記事で、CellsとRangeを組み合わせ、スマートなコードを書くことが出来ました。それが以下になります。Sub 担当者ごと抽出()     Dim targetName As String     Dim rowLong As Long     Dim exRowLong As Long     targetName = Cells(1, 9).Value     exRowLong = 2     For rowLong = 2 To 16         If Cells(rowLong, 6).Value = targetName Then             '一緒だった時の処理             Debug.Print "担当者名が" & targetName & "と同じです!"             Range(Cells(exRowLong, 11), Cells(exRowLong, 16)).Value = Range(Cells(rowLong, 1), Cells(rowLong, 6)).Value             exRowLong = exRowLong + 1         Else             'そうでない時の処理             Debug.Print "担当者名が" & targetName & "ではありません!"         End If     Next End Subこのコードの問題点は、For文の範囲が2~16となっており
0
カバー画像

[VBA実践]RangeとCellsを組み合わせよう![#3]

前回の記事はこちら前回の記事で、・抽出担当者のデータのみを抜き出して転記するという、マクロのメイン機能は作成完了しました。ただ、まだまだ改良の余地はあります。今回の記事を通して、RangeとCellsを組み合わせ、前回書いた記事をもう少しスマートにしてみましょう。前回書いた記事は以下の通りですね。Sub 担当者ごと抽出()     Dim targetName As String     Dim rowLong As Long     Dim exRowLong As Long     targetName = Cells(1, 9).Value     exRowLong = 2     For rowLong = 2 To 16         If Cells(rowLong, 6).Value = targetName Then             '一緒だった時の処理             Debug.Print "担当者名が" & targetName & "と同じです!"             Cells(exRowLong, 11).Value = Cells(rowLong, 1).Value             Cells(exRowLong, 12).Value = Cells(rowLong, 2).Value             Cells(exRowLong, 13).Value = Cells(rowLong, 3).Value             Cells(exRowLong, 14).Value = Cel
0
カバー画像

[VBA実践]とにかくマクロを完成させよう![#2]

前回の記事はこちらさて、前回までで、1行分のデータを抽出対象か、そうでないか判定するところまでは書きました。以下のようなコードになっているはずです。Sub 担当者ごと抽出()     Dim targetName As String     targetName = Cells(1, 9).Value     If Cells(2, 6).Value = targetName Then         '一緒だった時の処理         Debug.Print "担当者名が" & targetName & "と同じです!"     Else         'そうでない時の処理         Debug.Print "担当者名が" & targetName & "ではありません!"     End If End Subこの状態から、「まずは完成させること」を最優先して、実際にコードを書いてみましょう。1行分の処理を完成させるさて、前回まででは「抽出担当者名と等しいかを判定するところまで」で終わっていました。あと必要なのは、1.等しい場合、A列~F列の値をK列からP列にそれぞれ転記する2.1行に対して行った処理を、入力されているすべての行に対して繰り返すという処理ですね!さて、今Excelのシート上では、上の画像のような配置になっていると思います。担当者名が抽出対象と同じであれば、A列の値をK列の値に代入すれば良いことになりますね。A2セルの値をK2セルに代入するコードはすぐに思いつきますか?Cells(2,11).Value = Cell
0
カバー画像

[VBA実践]ゴールと道のりを明確にしよう![#1]

前回までの記事で、VBAの「これだけは理解しておいてほしい」という内容の解説は終了しました。今回から、[VBA実践]シリーズとして、実際にVBAを書き、マクロを作り上げていく流れを体験していただきます!手順1.ゴールを決めるマクロを作ることで、様々なことが自動化出来ます。とはいえ、「何をするのか」が明確でなければ、何も作ることが出来ません。というわけで、「何をするのか」というゴールをまず決めます。普段お仕事をされている方であれば、「どんな業務が面倒か」「どんな業務に手間がかかっているか」を考え、「それを自動化する」ことをゴールにすると良いです。今回の例として、「売上をまとめているExcelの一覧から、担当者ごとの一覧を作成する業務の自動化」を考えてみます。以下の画像を見て下さい。どの担当者がどの商品をどのくらい売り上げたのか、というものが一つにまとまっていますね。これを「売上一覧」というシート名で作っておきます。ちなみに、商品情報は別のシートに以下のように作っておき、金額を参照するようにすると、より実践的ですね。この商品情報が載っているシートを「商品情報」というシート名にしておきます。これらのようなシートをまず準備してみてください。もちろん、数式などは適宜活用しましょう。(Noの欄や、売上一覧の単価、売上なんかは数式が活用出来ますね)今回は「売上一覧から担当者ごとの情報を抽出する」のがゴールなので、売上一覧シートの右側に以下を以下のようにしましょう。I1セルに抽出担当者名を入力し、「抽出」ボタンを押すと、全員の売上一覧から担当者分のみ、K~P列に転記される、というイメージですね
0
カバー画像

[VBA解説]For文でループ処理を書こう![#6]

前回はこちら今回の記事で、プログラミングのメイン(と僕が思っている)内容の基礎は終了です。「ここまでの内容も少し怪しい…」という人も、一旦ここまで通して読みつつコードも書いてみて、何となくで良いのでイメージを掴んでいって下さい。For文の書き方早速ですが、For文を使ったマクロのサンプルが以下の通りです。Sub For文を試す()     Dim colLong As Long     For colLong = 1 To 10         Cells(10, colLong).Value = colLong     Next End SubcolLongは変数です。For colLong = 1 To 10Nextの部分が今回のメインですね。日本語で説明すると、For colLong = 1 To 10は「colLongは1から始まって、10まで以下の処理を行う」という意味です。そしてNextが「次へ」ですね。どういうことかと言うと、最初はcolLongが1の状態で、Cells(10, colLong).Value = colLong の処理が行われます。そしてNextに進むと、「colLongが2の状態で」Cells(10, colLong).Value = colLong の処理が行われます。それをcolLongが10になるまで繰り返し、11になるとNextより下の処理に進みます。(今回の場合、End Subで終了です)つまり、ForとNextの間の処理を何度も通るんですね。その繰り返す範囲を、For 変数=最初の値 To 最後の値という書き方で表現します
0
カバー画像

[VBA解説]IF文を理解しよう![#5]

前回の記事はこちらIF文の使い方さて、前回予告した通り、今回はIF文という少しこれまでと違う要素を解説します。具体的にどう違うかと言うと、これまでに解説した内容は、1行で完結していた内容ばかりでした。例えば、Range("A1").Value = 10であれば、A1セルに10という値を代入する、という意味でしたし、Dim cost As Longであれば、costというLong型の変数を使うよ、という意味でした。これから解説するIF文は、複数の行に影響があります。ちなみに、「IF」は「もし~なら」という英単語ですね。VBAでもその意味は変わりません。それを踏まえて、次のコードに一度目を通してみて下さい。Sub IF文を試す()     Dim targetValue As Long     targetValue = Cells(5, 1).Value     If targetValue > 60 Then         Cells(5, 2).Value = "合格"     Else         Cells(5, 2).Value = "不合格"     End If End SubtargetValueはLong型の変数ですね。今回大事なのは、「If」「Then」「Else」「End If」の4つです。今回「IF文」という説明をしましたが、実際にはこのように、If、Then、Else、End Ifの4つがセットで出てくることがほとんどです。ちなみに「>」は「右より左の方が大きい」という意味です。算数で習う通りですね。If targetValue &gt
0
カバー画像

[VBA解説]セルのもう一つの指定方法[#4]

前回の記事はこちら前回の問題の解説さて、前回の問題は解けましたでしょうか。ちなみに修正前は以下のようなコードでした。Sub あいさつを入力する謎マクロ()     Dim あいさつ As String     あいさつ = おはよう     Range("C1").Value = あいさつ End Subこれを修正すると、こうなります。 Sub あいさつを入力する謎マクロ()     Dim あいさつ As String     あいさつ = "おはよう"     Range("C1").Value = あいさつ End Sub「あいさつ」という変数に、「おはよう」という文字列を代入したいので、「おはよう」が文字であることを示すために、""で囲う必要がある、というものでした。最初は""で囲うのに慣れないかもしれませんが、忘れないようにしましょうね。というわけで、今回のメインの内容に移ります!Rangeは「セル」という意味ではないさて、皆さんに謝らなければいけないことがあります。「Rangeはセルという意味だよ」と言ってきましたが、嘘です。厳密には、「Rangeは範囲」です。(ただ日本語訳しただけですが)どういうことかと言うと、Rangeはセル一つを指定するために使われるのではなく、「複数のセルの集まり(つまり範囲)を指定出来るもの」なんです。例えば、A1セルからA3セルを指定したければ、Range("A1:A3")と書くことで、複数のセル範囲を指定出来ます。では、VBAで「セル」を意味する単語は何かと言えば、Cellsなんですね。そして、Cellsを使ってA2セ
0
カバー画像

[VBA解説]変数とデータ型を理解しよう![#3]

前回の記事はこちら変数・データ型とは前回の記事で、セルに入力されている値を計算式に組み込む方法を紹介しました。(例)Range("A3").Value = Range("A1").Value * Range("A2").Valueただ、こんな風に何度もRange("").Valueを書くのは大変ですよね。そんな時に使うのが、「変数」というものです。実際に書くと以下の通りです。Sub 合計金額計算()    Dim cost As Long    Dim quantity As Long    cost = Range("A1").Value    quantity = Range("A2").Value    Range("A3").Value = cost * quantityEnd Sub※実行する時は、A1セルとA2セルに数字を入力しておいて下さいね。数字ではなく文字を入力すると…?少し見た目が変わりましたね。この記事の最初に出した例とやっている事自体は同じなのですが、より分かりやすく書くとこんな形になります。一つひとつ説明していきますね。まず、Dim cost As Longの部分。「Dim」は「これは変数ですよ」という意味になります。変数を「定義する」もしくは「宣言する」という言い方をします。その後の「cost」が、「変数名」です。今回は金額を計算するマクロをイメージしたので、「cost」としました。もう一つの「quantity」は「個数」の意味です。変数名は自由に決められますが、数字から始めることは出来ないなどのいくつかの決まりはあります。そしてそのあとの「As L
0
カバー画像

[VBA解説]プログラムに計算させよう![#2]

前回の記事はこちらボタンからマクロを呼び出そう!さて、前回の記事では初めてのマクロを作成してみました。指定したセルに値を代入するマクロでしたね。セルの指定の仕方は思い出せますか?「=」は「右のものを左に代入する」という意味でしたよね?数字を使う場合と文字を使う場合で、ちょっと気を付けることもありましたよね?うろ覚えな方はぜひもう一度前回の内容もおさらいしつつ進めましょう!まず、前回作成したマクロは、VBE上からF5キーで実行していましたよね。ただ、実際に使うマクロは、Excelシート上からボタンを押して実行するイメージな方が多いのではないでしょうか。というわけで、まずはボタンを設置して、そのボタンからマクロを実行してみましょう!前回保存した、マクロ有効ブックを開き、リボンの「開発」をクリックして下さい。「開発」の中に、「挿入」という項目があり、それをクリックすると「フォームコントロール」というものが出てきます。その一番左上に四角のアイコンがあると思うので、それをクリックして下さい。それだけでは何も起こりませんが、その状態でExcelシートのセルを、どこでも良いのでクリックしてください。すると、こんな画面が出てきますね。ここで、作成した「セルに値を代入」を選択し、OKをクリックしてください。こうすることで、ボタンにマクロを登録できます。すると、クリックしたあたりにボタンが配置されます。このボタンを押すと、登録した「セルに値を代入」マクロが実行される、というわけです。ちなみにボタンにマクロを登録し、その後マクロの処理を書き換えてからボタンを押すと、「書き換えたあとの処理」が実行され
0
カバー画像

[VBA解説]VBAを書いてみよう![#1]

前回の記事はこちらVBEを起動するさて、VBAを書く前に。前回までの記事で、少しずつ「VBA」や「マクロ」、「VBE」などの言葉と解説が出てきましたね。それぞれどんなものか、今から30秒ほど頭の中で思い出してみてください。VBAとは?マクロとは?VBEとは?こんな感じで、新しいことを学ぶと必ず「モノの名前」を覚える必要が出てきます。必ず一度で覚える必要は無いですが、「これってどういうものだっけ?」と、「思い出す努力」はこまめにしていくことをオススメします。何度も思い出すうちに、スムーズに名前とその意味が一致してきます。そうなるとさらに新しく覚えることもどんどん吸収していけますので、意識的に思い出す時間は作りましょう。話が逸れましたが、いよいよVBAを書いてみましょう!まず、Excelファイルを開いて、VBEを開いてください。この画面がVBEでしたね。(Excelファイルの開発タブからVisual Basicをクリックすると開けますよ)ちなみにVBEとは、Visual Basic Editorの略です。プログラミング言語を書いてプログラムを作成するのに使うソフトのことを「エディタ」と呼びます。つまりVBEはVBA専用のエディタです。VBEを開いたら、上画像の赤枠部分をクリックしてください。すると上図のように、フォルダのようなアイコンのものが出てくるので、さらに赤枠部分をクリックしてください。今度はSheet1や、ThisWorkbookというものが出てきましたね。これから書くものは、基本的に「ThisWorkbook」の方に書いていきますので、ThisWorkbookの方をクリッ
0
カバー画像

[VBA解説]VBAを書く準備をしよう![#0.5]

※今回からVBAを実際に書いていくつもりでしたが、思っていたよりも事前準備のボリュームが大きくなってしまったので、次回からVBAの解説に入ります。前回の記事はこちらそもそもVBAとは?簡単に言うと、「Microsoft Officeアプリの自動化機能である『マクロ』を作成するために使用するプログラミング言語」が、VBA(Visual Basic for Applications)です。マクロを作成することで、そのマクロを使用すると、同じ処理をいつでもボタンひとつで実行出来るようになります。Microsoft Officeアプリとは、ExcelやWord、PowerPoint、Outlookなどがありますが、それぞれVBAを使用してマクロを作成し、実行することが出来ます。ただ、WordやPowerPointのマクロはあまり使用されていないため、「VBAはExcelマクロを作るためのもの」みたいな印象が付いている人が多いかもしれません。ちなみにExcelファイルからマクロを実行してWordファイルやPowerPointを作成したり、Outlookのメールを送信したりも出来たりします。そのあたりになるとやや応用で複雑な部分もありますが、今は「そんなことも出来るようになるのか!面白い!」程度に考えてください。一旦使用頻度が高く、メジャーな「Excelマクロを作る」ことを題材として、この記事の解説を進めます。VBAを書くための準備さて、まずはVBAを書くための準備です。やるべきことは以下の通りです。既にやっている方は飛ばしてください。※ここの設定をやっておくと後々楽になりますので、少し面
0
カバー画像

[VBA解説]今後掲載する記事の概要[#0]

はじめにこの記事では「『VBA』や『マクロ』の存在は知っているが、イマイチどんなものなのか分からない」という人向けに、最低限理解しておくべき基礎内容を解説した上で、「どのようにVBAを書き、マクロを作っていくか」という、「マクロを作り上げる際の思考の流れ」に重きを置いて解説していきます。そのため、「模範解答の羅列」ではありません。「Aを実現するにはBを使えば良い」ということをいくらインプットしても、「オリジナルのマクロを自分で考えて作れる」ようにはならないと考えています。なれるとしても、かなり時間がかかります。プログラミングは「暗記ではない」とよく言われます。VBAもプログラミング言語の一つである以上、暗記で対応しようとするとすぐに限界が来ます。では暗記していないのにどうしてVBAを書くことが出来るのかといえば、「基礎知識以外で必要になる細かい内容は、その都度調べて対応しているから」です。その基礎知識についても、一度ある程度理解すれば、後で調べ直して再度理解出来るようになります。というわけで、まずはVBAの基礎知識を理解し、ある程度自力でVBAを書けるようにしていきましょう。今後の流れこのココナラのブログにて、無料で解説記事を投稿していきます。更新頻度は不定期になりますが、出来る限り定期的に更新できるよう努めます。また、解説した内容について「この部分がよく分からない」「このような理解で良いか」という質疑応答をご要望の方向けに、別途個別対応サービスを致します。VBAに興味を持ち、「難しそうだけど扱えるようになってみたい」という人の手助けが出来ればと思いますので、ぜひご一読いただけ
0
カバー画像

マクロのメリット3選!(エクセル/VBA/プログラミング)

【まずは結論】マクロのメリット4つ ① 時短になる! ② ミスが減る! ③ プログラミングが学べる! それぞれ簡単にご紹介します。 ①時短になる! マクロを使えば、手作業でのエクセル編集をボタン一つで終わらせることができます。 1時間かかっていた作業が数秒で完了できることもザラです(体験談)。 皆さん普段エクセル編集にどのくらい時間を割いていますか?それを一瞬で終わらせることができれば・・いつもより早く帰れるようになったり、別の仕事に力を注げるようになったり、プライベートをより充実できたり! 時間の余裕は心の余裕です。もし毎日に余裕がないと感じている方がいたら、一度マクロに頼ってみてはいかがでしょうか。 ② ミスが減る! マクロは、プログラミングで指示された通りのエクセル編集を一切の狂いなく行うことができます。そのため基本的にミスが生じることはありません。 人間の手作業だと必ずミスが生じるものです。特にエクセル編集は緻密な作業、ミスが起きやすいです。 私は以前、上司や先輩に提示する資料にミスが多く、指摘されたり怒られたりした経験が数えきれないほどあります。そのたびにメンタルdownでモチベ底辺になりました笑。 資料作成にマクロを導入してから、ミスがほぼゼロになりました。私のようにメンタルが弱く怒られたら尋常じゃなく凹んでしまう方は、マクロでミス減がおススメです! ③ ハードル低くプログラミングが学べる! そもそもマクロとは、VBAというプログラミング言語を用いたコードで指示を出し、エクセルを意のままに動かし業務改善することの総称です。 つまり「マクロを学ぶ=VBAプログラミング
0
カバー画像

まずは自己紹介します!【マクロ/エクセル/VBA】

はじめまして、マクロウと申します。 私は某製薬会社で働いており、営業活動の傍ら、エクセルを使用しデータ分析・集計・整理、業務管理等を行っております。 実は入社当初、エクセルが苦手でした。 エクセル編集は時間がかかり、作業が終わらず本分の営業にも支障が出る・・ちょっと手順を間違えたら作業のやり直し、ストレスもかかる・・正直苦痛で仕方なかったです笑。 なので「エクセルが大っ嫌い!」という人の気持ちがとても良くわかります。 そんな中マクロに出会い私の人生は一変しました。いつも1時間かかっていた作業が一瞬で終わる!!魔法のようでした。この感動を皆さんにも感じて頂きたい! 現在はマクロで様々な作業を自動化し、年間数百時間という単位で効率化に繋げています。  また、マクロ技能を測る資格である“Excel VBA エキスパート スタンダード”を取得しました。 ありがたいことに社内でも「マクロが組める奴」「エクセルが得意な奴」という位置づけとなりました。同僚からマクロ作成依頼を受け、その延長でエクセルの社内レクチャーを行った経験もございます。 これまでこれといった得意なことのない凡庸な人間だったので、「マクロが組める奴」というポジションで他者に頼られるようになったことが非常にうれしかったです笑 ココナラでも「マクロが組める奴」として皆様に頼られる存在になれるよう日々精進します。
0
カバー画像

【Excel VBA】シートの存在チェック③

前回に続き、シートの存在を確認する関数の話です。これまで、関数を2回修正してきて、機能としては向上しているものの、引数が増えたことで利便性が低下した話をしました。今回は、その問題を解消していきます。以下にコードを示します。【コード】 -------------------------------------------------------------------------------Function GetShtIndex(ByVal key As String, Optional ByRef wb As Variant, Optional ByVal match As String = "完全") As Long     Dim i As Long     '====参照判定===='     If IsMissing(wb) Then         Set wb = ThisWorkbook     End If     '====エラー判定===='     'キーワードが空白     If key = "" Then         GetShtIndex = -1         Exit Function     End If     '引数がWorkbook型でない     If TypeName(wb) <> "Workbook" Then         GetShtIndex = -1         Exit Function     End If     '====シート番号取得===='     For
0
カバー画像

【Excel VBA】シートの存在チェック②

前回、シートの存在チェックを実装する2つの方法を取り上げました。シートの存在を確認するだけならば、これら2つの方法で十分ですが、実務をこなしていくと、以下のような機能が欲しいと感じることがあります。① 別ブックにおいて、シートが存在するか調べたい。② シートが存在する場合は、戻り値でシート番号を返してほしい。③ シート名を完全一致、部分一致で調べたい。これらを実現するためには、前回の関数を修正する必要があります。以下に修正したコードを載せます。【コード】-------------------------------------------------------------------------------Function ExistSheet(ByVal key As String, ByRef wb As Workbook, ByVal match As String) As Long     Dim i As Long     For i = 1 To wb.Sheets.Count Step 1         Select Case match             Case "完全"                 If wb.Sheets(i).Name = key Then                     ExistSheet = i                     Exit Function                 End If             Case "部分"                 If InStr(
0
カバー画像

【Excel VBA】シートの存在チェック①

Excel VBAにおいて、ブックの中に処理したいシートが存在するか否か、事前に確認することは非常に重要になります。シートの存在チェックには、for文を使用することが多いですが、ここでは代表的な2つの記述方法を紹介します。① For Eachを使用する方法Function ExistSheet(ByVal key As String) As Boolean     Dim ws As Worksheet     For Each ws In ThisWorkbook.Sheets         If ws.Name = key Then             ExistSheet = True             Exit Function         End If     Next ws     ExistSheet = False End Function② Sheets.Countを使用する方法Function ExistSheet(ByVal key As String) As Boolean     Dim i As Long     For i = 1 To ThisWorkbook.Sheets.Count Step 1         If ThisWorkbook.Sheets(i).Name = key Then             ExistSheet = True             Exit Function         End If     Next i     ExistSheet =
0
カバー画像

せどり・転売でこんな管理表の作成依頼を受けています。

わたしは、ebay輸出をメインに、せどり・転売の経験を6年ほど積み上げてきました。その経験を活かし、ユーザーに役立つ、Excelマクロを用いた、さまざまな管理表を作成しています。せどりと言えば、■売上管理表■仕入管理表■在庫管理表などなどを活用するのが、一般的ですよね?なので、お客さんからは、こういうものの作成依頼を受け、作成し、納品させていただきました。たとえば、例として、やはり、こういうものを作成する価値として、「セルをひとつづつ入力する手間が省くことができる」ではないでしょうか。仮に、一行ごとで見ても、短縮時間はそこまで変わらないかもしれませんが、それが毎日何行も入力する羽目になれば、セルひとつづつ入力するのは、正直、時間の無駄だとおもいませんか?やはり、ebay輸出、国内転売などは、「リサーチと出品」に時間を割くべきなので、売上などを管理する表は、「なるべく簡単にかつ早く入力」できたほうがよいと思うのです。「だけど、そんな表、自分では作れない」「もっと事務作業を減らしたいんだ」こう考えられている方に、わたしのサービスを提供できればというのが、本意です。自分で悩まずに、一度、出品サービスをご覧ください。相談だけでも良いので、ぜひ、なにかお助けできればと願う次第です。
0
カバー画像

Excelなのに・・・

仕事でExcelを使うことがありますが、すごく無駄なことが多いんです。Excelなのに、手入力・手作業でのコピー・・・手作業って・・・パソコンだろ!!!自動でやれ!!!最近ツイッターでも流れてきてすごく驚いたのですが、Excelで資料作成・・・方眼紙じゃない!Excelって、表計算ソフトって名前なんですよね。そこで、最近Excel作業の効率化を目指すべくVBAを使った自動処理を開発したりしています。しかし、ここで作ってエラーが出たらだれも修正できないとの声が・・・まあ、確かに一理ある。でも、エラーが出ないシステムなんて誰も作れない。それを極限までなくすためにデバックを行う。試作品を試してもらう。そして、エラーが出たら修正する。Try & Err開発にはこれがすごく大事なんですよね。まあ、エラーが出ないことに越したことはないんですが。じゃあ、だれでも修正できるようにしようと考え始めた最近であります。簡単な基本知識から教育を行い、いずれは簡単な処理・解析から修正までできるようになれば御の字ですね。出来ないからやらないんじゃなくて、出来ないをなくして覚えてもらう。覚えてなくても、資料を見れば修正とか解析ができる。正直ここまでできれば、自分でくみ上げるのも出来てきてるレベルだと思うんですよね・・・確かに、出来る人にお願いするのも大事ですが、自分はわかんないから全然やらない!というのは、おかしな話ですよね。システム開発として委託するならまだしも。社内的に得意な人にお願いするのはわかります。でも、その人がいなくなったらどうするんでしょうか・・・ある程度、作る人もわかりやすく・見やす
0
カバー画像

With…End With についての説明

 Withステートメントはコードをよりシンプルで読みやすくします。特定のオブジェクトに対して複数のプロパティやメソッドを繰り返し適用する時に便利です。これにより、同じオブジェクト名を何度も書く必要がなくなります。With ステートメントの基本的な使い方 基本的な構文は以下の通りです:With オブジェクト     .プロパティ1 = 値1    .プロパティ2 = 値2    .メソッド1()    ' その他のプロパティやメソッドEnd With例  特定のシート上のセル範囲のフォントや色を設定したい場合、以下のようにWithを使うことができます:With Worksheets("Sheet1").Range("A1:B2")    .Font.Bold = True    .Font.Color = RGB(255, 0, 0)    .Interior.Color = RGB(0, 255, 0)End With この例では、"Sheet1" の A1 から B2 までのセル範囲に対して、フォントを太字にし、文字色を赤、背景色を緑に設定しています。With ステートメントを使うことで、Worksheets("Sheet1").Range("A1:B2") を何度も繰り返し書く必要がなく、コードがすっきりとします。注意点1)With ブロックの中では、プロパティやメソッドの前にピリオド(.)を付けることを忘れないでください。(.)が、With に指定されたオブジェクトに対して適用されていることを示します。2)With ブロックを使用するとコードの読みやすさが向上しますが、過
0
カバー画像

プログラミングを学ぶ姿勢について

先日、Excel処理の自動化に興味を持たれた職場の方がVBAマクロを勉強してみようと思い、書店で関連図書を見て回ったそうです。その際、たくさんの参考書を見ている中でとても分厚いものがあり、威圧感のようなものを感じて勉強するのをためらってしまいそうになったそうです。プログラミングそのものを学ぶことと言語を学ぶことを別に考えるVBAマクロを組むとして、参考文献を見ると英文混じりの数式みたいなものがごっそり書いてあり、聞き慣れない言葉で解説文が載っているというだけで初心者としてはストレスがたまると思います。実際は使用されている構文というのは数えるほどのパターンしかなく、そのパターンを目的に合わせて組み合わせており、構文の文法は各プログラミング言語で定められた型に準じて表記されています。ここでいう構文とは目的を達成するための論理的な処理の構造のようなものです。プログラミング言語がどのようなものであれ、構文構造はあまり違いがないので、ある言語で処理を書けるようになれば、他の言語の処理も書けるようになるのは簡単だと思います。プログラミングとは処理の順序や手立てを組み立てること「運動会のプログラム」のようなものを見たことがあるでしょうか?選手入場、開会式、個別競技、と、さまざまな催しが書いてあり、それらは一般的に時系列で書かれていると思います。実際には、各催しと催しの間に準備や片付けがあったり、催しの中で手順が決まっていて、それらは「運動会のプログラム」には記載してありません。そのへんの細かいことは予行演習で打ち合わせてしまうことでしょう。プログラミングの場合も、まず処理の目的と手順をざっく
0
カバー画像

Excelのマクロについて一般的な認識は

「こういうのってマクロで処理するんですか?」と自分の職場ではよく相談を受けます。普段Excelはよく使っているものの、シートに「仕組み」を組み込みたい時に「何か便利でスマートなものにできないかな」と言う漠然とした気持ちから出てくるようです。非常によく例として出るのが「if文とか使って〜」などですが、関数の組み合わせとマクロの違いについてイマイチご存知ないようです。使う機会がなかったのですからそんな感じになるのが普通ですよね。ざっくり述べると、マクロと言うのは表(シート)とは別にプログラミング言語を使って処理の手順を記述したもの(プログラム)を作成し、必要な時に実行させて利用するものです。あくまで「マクロ実行」を指示しない限りマクロは動きません。(と、ここでは思っていただきます)一方、Excel関数を組み合わせて条件によってセルの内容を変化させるだけであれば、それはマクロではありません。セルの中に記述してある式を見ると論理式(if文とか)が入っていたりするので、プログラミングの姿にも見えてしまうかもしれません。これらは式が参照しているセルに何か入力すると即座にそのセルの内容によって式の値が変化します。マクロはExcelだけに限ったものではなく、さまざまなアプリで用意されています。一連の作業をユーザーの代わりに一括して処理してくれるので定期的に行う機械的な作業があればマクロ化しておくのも便利です。便利とは言え、マクロを組むにはプログラミングの知識や運用方法(実務にどう組み込むか)を勉強する必要があり、ある程度の経験者にアドバイスをしてもらう方が良いでしょう。
0
カバー画像

eBay輸出、3週間コンサルティングを開始いたしました!

ebay輸出をサポート致します。3週間のコンサルティングです。 当サービスでは、画面共有を利用してわかりやすく出品作業をサポート致します。商品の輸出に関してのお悩みを解決するため、私が提供するサービスをご利用ください。 <サービスの特徴> ・画面共有による出品作業サポート実際に出品作業を行いながら、ご自身でも操作ができるようにご指導いたします。疑問や不安な点があれば、いつでも質問いただけます。 ・最大10回までのビデオチャットによる画面共有サポート(60分) ・回数無制限のテキストチャットによるサポート (24時間以内にご返信いたします)。 お気軽にお問い合わせください。
0
カバー画像

パソコンを使った仕事、何でもやります

ITシステムエンジニアとしてWindowsが登場する前からパソコンを使ったシステム開発をしています。当時はマイコン(マイコンピューター)なんて呼んでいたこともあります。ご存じでしたか?SNS運用代行の他、パソコン業務の自動化が得意です。ExcelマクロやRPAの作成承ります。是非お声がけください。
0
カバー画像

Excel よくある質問

よくある質問なのですが、VBA で 以下のようなエラーがでるのですが、どうしたら良いですか と聞かれます。セルE5にコピーした別のセル内容を貼り付ける命令文を作るのに、誤 : workbook("1つめ").worksheets("まとめ").Range("E5").Pasteとやると少し足りません。正 : workbook("C:1つめ.xlsx").worksheets("まとめ").Range("E5").Pasteブックを指定する際は、しっかりとフルパスを指定しましょう!
0
カバー画像

シート違いの同じマクロ名を見分ける方法

マクロ付きのシートをコピーして使用するときに、うまくボタンにマクロが登録されていない時の設定方法です。開発タブ>Visual Basic赤枠内を確認していただくと、シート名が記載されていることがわかります。登録したいマクロボタンを右クリック>マクロの登録をクリック対象のシートのマクロを選択し、「OK」をクリック以上になります。どなたかの助けになれば嬉しいです。
0
カバー画像

Excel VBAに関するメモ

【目的】普段、Excel VBAを作成していくなかで、記述の方法や使いまわしたい関数を記事として残していくことがブログの目的になります。
0
カバー画像

はじめてみます

今日からブログを始めます。仕事は車の整備士ですが、仕事の効率を上げようと思いマクロに取り組んでいます。私の作ったものが売れればと考えてます。よろしくお願いします。
0
52 件中 1 - 52
有料ブログの投稿方法はこちら