マクロとVBA。VBAを読み解くためのヒント

  • URLをコピーしました!

Excelマクロを使うためにはVBAという言語を学ばなければいけません。
読み書きができなければいけないのです。
Macro

VBAは英語

マクロ(Excelに限らずWord、PowerPointにもあります)を使うには、VBA(Visual Basic Application)という言語を知っていなければいけません。
言葉の定義を整理すると、
・マクロ
プログラムを書いて、Excelに特定の操作をしてもらう機能。

・VBA
マクロという機能を使うための言語

となります。

日本人に仕事を依頼するとき、日本語を使う、アメリカ人に仕事を依頼するときに英語を使う

Excelに仕事を依頼するとき、VBAを使う
という感じです。

アメリカ人に仕事を依頼するときに、日本語しか使えなければ依頼できません。
Excelに特定の操作を依頼するときには、VBAの知識が必要なのです。

マクロとVBAは、それほど明確に使い分けられているわけではありません。
セミナーでも、「マクロセミナー」、「VBAセミナー」、ときにはマクロVBAセミナーという使い方もされます。
(私は、「マクロセミナー」にしています)

VBAを使った場合、たとえば、次のようなプログラムを書きます。

**********************
Sub sheetmerge()

Dim w As Worksheet
For Each w In Worksheets

If w.Name < > “merge” Then
Dim Cmax As Long
Cmax = w.Range(“a” & Rows.count).End(xlUp).Row

Dim Cmax2 As Long
Cmax2 = Worksheets(“merge”).Range(“a” & Rows.count).End(xlUp).Row

w.Rows(“1:” & Cmax).Copy Worksheets(“merge”).Range(“a” & Cmax2 + 1)

End If
Next

End Sub
*********************

日本で開発されたものではないので当然英語です。
英語ができれば、VBAが読めるわけでもなく、英語ができなくてもVBAは読めます。

 

 

読み解くためのヒント

VBAを読み解くために、次のようなことを覚えておくと便利です。

 

1 SubとEnd Sub

多くのVBAは、SubとEnd Subではさまれています。
指示がSubで始まり、End Subで終わるのです。

 

2 マクロ(プログラム)名は自由に決められる

Subの後にマクロ(プログラム)名を書きます。
これは自由に決められます。
日本語でも、英語でも、ローマ字でも大丈夫です。

事例では、Sheetmergeとつけました。
シートを結合するという意味です。
これを
シート集計

シート結合
とつけてもかまいません。

私はアルファベットかローマ字表示でつけるようにしています。

 

3 変数を使う

プログラムでは変数というものを使います。
たとえば、1月から12月の処理をするときに、

1月分を○○して
2月分を○○して



12月分を○○して

というように12回プログラムを書くのはめんどくさいです。

そこで、
△月分を○○して
というプログラムだけ書き、△に1から12を入れるようにします。
こうすれば、プログラムを書く手間が減り、改善もしやすくなります。

この△が変数です。
実際には、アルファベット、ローマ字、日本語で書きます。
月だったら、
「m」、「month」、「月」などの変数を使うことが多いでしょう。

事例では、「w」という変数を使っています。
これは、ワークシートを表すものです。
私は、アルファベットで「w」という変数を使いますが、人によっては、「Ws」、「ワークシート」「hennsuu」などとつけることもあるでしょう。

この変数の使い方は、人によってかなりの差があります。
他人が書いたプログラムが読みにくいのは、この変数の違和感も原因の1つです。

 

4 文法がある

英語で、「これはペンです」というときには、「This is a pen」と書きます。
この書き方を守らないといけません。「pen」と書いて通じるときもあるでしょう。

VBAでは決められた文法(ルール)を絶対に守らなければいけません。
この文法を知っていないと、VBAを読めないですし、書けません。
1つずつ覚えるか、ネットで検索していくしかないのです。

 

5 サンドイッチして処理する

VBAでは、SubとEnd Subのように、特定の部分をサンドイッチ(はさみこむ)して、処理をすることも多いです。
事例では、次のようなものがあります。

・For EachとNext

For Each w In Worksheets

○○○

Next

すべてのワークシートに対して、○○○の処理を行います。

・IfとEnd If

If

○○○
End If

もし〜だったら、○○○の処理を行います。

以上のようなしくみをしっておけば、VBAを読みやすくなります。

 

 

「読む」と「書く」

文章でも、本でも、言語でも、「読む」と「書く」は相乗効果があります。
特に自分で「書く」というのは書かせません。
私もブログや本を書くようになってから、多くのことを学びました。

VBAもやはり自分で書いてこそ身に付くものです。
他人の書いたVBAや本をいくら読んでもなかなか身に付かないでしょう。

もし、「マクロを使ってみたい」という方は、今週土曜日のセミナーもご利用ください。
「ちょっと難しいかも・・・」と不安な方は、入門セミナーだけの受講もできます。

7/20(土)Excelマクロ入門セミナー

7/20(土)Excelマクロ初級セミナー

 

 





【編集後記】
昨日は、熱海トライアスロン合宿3日目。
朝、熱海の宿を出て、バイク(自転車)で105km。
品川付近まで戻ってきました。
私は自宅が遠いので、そこから輪行(自転車をバッグに入れて電車)。
充実した3日間でした。
企画してくれた仲間、暑い中一緒にトレーニングできた仲間に感謝です(^。^)

  • URLをコピーしました!