Excelマクロを使用すると、時間を大幅に節約できます。 頻繁に使用するExcelプロセスの自動化 。しかし、マクロは実際にはかなり制限されています。録音ツールを間違えるのは簡単で、録音プロセスは厄介です。
VBAを使用してマクロを作成すると、さらに強力になります。何をすべきか、そしてそれをどのように行うかをExcelに正確に伝えることができます。また、より多くの機能にアクセスできます。 Excelを定期的に使用する場合は、VBAマクロの作成方法を学ぶ価値があります。
基本から始めましょう。
VBAとは何ですか?
VBAはVisualBasic for Applications 、多くのMicrosoftアプリで使用できるプログラミング言語。 Visual Basicはプログラミング言語であり、VBAはそのアプリケーション固有のバージョンです。 (Microsoftは2008年にVisual Basicを廃止しましたが、VBAは引き続き強力です)。
プログラマー以外の人にとって幸いなことに、VBAは非常にシンプルであり、編集に使用するインターフェイスは多くの支援を提供します。使用するコマンドの多くは、ポップアップの提案と自動補完により、スクリプトをすばやく機能させるのに役立ちます。
それでも、VBAに慣れるまでにはしばらく時間がかかります。
ExcelでのVBAマクロの利点
VBAがマクロの記録よりも難しい場合、なぜそれを使用するのでしょうか。簡単に言うと、VBAマクロからより多くのパワーを得ることができます。
スプレッドシートをクリックしてそれらのクリックを記録する代わりに、Excelのすべての機能にアクセスできます。あなたはそれらの使い方を知る必要があるだけです。
iPhoneのウイルスをチェックする方法
そして、VBAに慣れれば、通常のマクロで実行できるすべてのことをはるかに短い時間で実行できます。 Excelに伝えているように、結果もより予測可能になります まさに 何をすべきか。あいまいさはまったくありません。
VBAマクロを作成したら、それを簡単に保存して共有できるため、他の誰もがそれを利用できます。これは、Excelで同じことを行う必要のある多くの人と作業している場合に特に便利です。
簡単なVBAマクロを見て、どのように機能するかを見てみましょう。
ExcelでのVBAマクロの例
簡単なマクロを見てみましょう。スプレッドシートには、従業員の名前、従業員が勤務する店舗番号、および四半期売上高が含まれています。
このマクロは、各ストアからの四半期売上高を追加し、それらの合計をスプレッドシートのセルに書き込みます(VBAダイアログにアクセスする方法がわからない場合は、チェックアウトしてください)。 ここでのVBAウォークスルー ):
Sub StoreSales()
Dim Sum1 As Currency
Dim Sum2 As Currency
Dim Sum3 As Currency
Dim Sum4 As Currency
For Each Cell In Range('C2:C51')
Cell.Activate
If IsEmpty(Cell) Then Exit For
If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If
Next Cell
Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4
End Sub
これは長くて複雑に見えるかもしれませんが、個々の要素を確認し、VBAの基本について少し学ぶことができるように分解します。
サブの宣言
モジュールの最初に、「Sub StoreSales()」があります。これは、StoreSalesと呼ばれる新しいサブを定義します。
関数を定義することもできます---違いは、関数は値を返すことができ、サブルーチンはできないことです(他のプログラミング言語に精通している場合、サブルーチンはメソッドと同等です)。この場合、値を返す必要がないため、subを使用しています。
モジュールの最後に「EndSub」があります。これは、このVBAマクロが終了したことをExcelに通知します。
変数の宣言
スクリプトの最初のコード行はすべて「Dim」で始まります。 Dimは、変数を宣言するためのVBAのコマンドです。
したがって、「Dim Sum1」は、「Sum1」という新しい変数を作成します。ただし、これがどのような変数であるかをExcelに通知する必要があります。データ型を選択する必要があります。 VBAにはさまざまなデータ型があります--- Microsoftのヘルプドキュメントの完全なリスト 。
VBAマクロは通貨を処理するため、Currencyデータ型を使用しています。
ステートメント「DimSum1As Currency」は、Sum1と呼ばれる新しいCurrency変数を作成するようにExcelに指示します。宣言するすべての変数には、Excelにその型を伝えるための「As」ステートメントが必要です。
Forループの開始
ループは、あらゆるプログラミング言語で作成できる最も強力なものの一部です。ループに慣れていない場合は、Do-Whileループの説明を確認してください。この例では、この記事でも取り上げられているForループを使用しています。
ループは次のようになります。
For Each Cell in Range('C2:C51')
[a bunch of stuff]
Next Cell
これにより、指定した範囲のセルを反復処理するようにExcelに指示されます。私たちは使用しました 範囲オブジェクト 、これはVBAの特定のタイプのオブジェクトです。このように使用すると--- Range( 'C2:C51')---これらの50個のセルに関心があることをExcelに通知します。
「ForEach」は、範囲内の各セルで何かを実行することをExcelに通知します。 「次のセル」は、実行したいすべての後に表示され、Excelにループを最初から開始するように指示します(次のセルから開始)。
また、次のステートメントもあります。'IfIsEmpty(Cell)Then ExitFor。 '
あなたはそれが何をするのか推測できますか?
ノート: 厳密に言えば、 Whileループを使用する方が良い選択だったかもしれません 。ただし、教えるために、Exit付きのForループを使用することにしました。
PCでhdrを有効にする方法
If-Then-Elseステートメント
この特定のマクロの中核は、If-Then-Elseステートメントにあります。条件文のシーケンスは次のとおりです。
If ActiveCell.Offset(0, -1) = 1 Then
Sum1 = Sum1 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 2 Then
Sum2 = Sum2 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 3 Then
Sum3 = Sum3 + Cell.Value
ElseIf ActiveCell.Offset(0, -1) = 4 Then
Sum4 = Sum4 + Cell.Value
End If
ほとんどの場合、これらのステートメントが何をするかを推測できます。ただし、ActiveCell.Offsetに精通していない可能性があります。 'ActiveCell.Offset(0、-1)'は、アクティブセルの左側の1列にあるセルを調べるようにExcelに指示します。
私たちの場合、それはExcelに店舗番号の列を調べるように指示しています。 Excelがこの列で1を見つけると、アクティブセルの内容を取得してSum1に追加します。 2が見つかると、アクティブセルの内容がSum2に追加されます。等々。
Excelは、これらすべてのステートメントを順番に実行します。の場合 条件文 が満たされると、Thenステートメントが完了します。そうでない場合は、次のElseIfに移動します。それが最後まで到達し、どの条件も満たされていない場合、それは何のアクションも実行しません。
ループと条件の組み合わせが、このマクロを駆動するものです。ループはExcelに選択範囲の各セルを通過するように指示し、条件はそのセルをどう処理するかを指示します。
セル値の書き込み
最後に、計算結果をセルに書き込みます。これを行うために使用する行は次のとおりです。
Range('F2').Value = Sum1
Range('F3').Value = Sum2
Range('F4').Value = Sum3
Range('F5').Value = Sum4
'.Value'と等号を使用して、これらの各セルを変数の1つの値に設定します。
以上です! 「EndSub」を使用してこのSubの記述が完了し、VBAマクロが完了したことをExcelに通知します。
でマクロを実行すると マクロ のボタン デベロッパー タブ、私たちは私たちの合計を取得します:
ExcelでVBAの構成要素をまとめる
上記のVBAマクロを最初に見ると、非常に複雑に見えます。しかし、それを構成要素に分解した後、論理が明らかになります。他のスクリプト言語と同様に、VBAの構文に慣れるには時間がかかります。
しかし、練習すれば、VBAの語彙を増やし、マクロを記録するよりも速く、正確に、そしてはるかに強力に書くことができるようになります。
行き詰まったときは、Google検索を実行すると、VBAの質問にすばやく回答できます。と MicrosoftのExcelVBAリファレンス 技術的な答えを得るためにそれを掘り下げても構わないと思っているなら、役に立つかもしれません。
基本に慣れたら、次のような目的でVBAの使用を開始できます。 Excelからメールを送信する 、Outlookタスクのエクスポート、およびPC情報の表示。
Photoshopのテキストにアウトラインを追加する方法共有 共有 つぶやき Eメール FBIがHiveランサムウェアに対して警告を発した理由は次のとおりです
FBIは、特に厄介なランサムウェアについて警告を発しました。これが、Hiveランサムウェアに特に注意する必要がある理由です。
次を読む 関連トピック- 生産性
- スプレッドシート
- マイクロソフトエクセル
- Microsoft Office 2016
- マクロ
- コーディングチュートリアル
ダンは、企業が需要とリードを生み出すのを支援するコンテンツ戦略およびマーケティングコンサルタントです。彼はまた、dannalbright.comで戦略とコンテンツマーケティングについてブログを書いています。
ダン・オルブライトのその他の作品ニュースレターを購読する
ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。
購読するにはここをクリックしてください