2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VBAを簡単に読み解けるようになる基本

Posted at

VBAがわかる人は、どう処理を読み解いているか

例えば、下記のVBAを読み解く場合、全く知識が無い状態では解読が難しいと思います。
しかし、わかる人がこれを解読する際に、どんな風に読んでいくのかが分かれば、すぐにでも読めるようになるのです!

B742C767-A56D-40EB-AD30-49EBE931E764.jpeg

↓わかる人の頭の中....↓

「Withがあるから、、、End Withまでの間に書かれているピリオド(.)が先頭についたCellsはシートが"データ追加"のセルで、、、」

「Forがあるから、Nextまでの間の処理を反復する。その反復する処理ってのが、、、」

「まず、6列目だからF列のセルに、、、Left関数で、A列のセルの左から4文字を取って入力、、、」(括弧の左側が6だから6列目、右側のiが2と定義されているから、セルは「F2」指定だということ。)

「次に、7列めだからG列のセルに、、、Vlookup関数でなんか入れてる。B列のセルを検索値にして、"マスタ"シートのA:Bの2列目を参照しているのか、、、」

「で、If Then構文だから条件分岐、、、5列目ってことは、E列の値が50万以上だったら8列目、、、つまりH列へのデータ入力を2行目から、A列のデータ最終行まで繰り返せというわけか、、、」

というように、わかる人の頭の中ではこのように読み解かれていきます。

この読み解き方を基に、読み解く上での必須知識を下記に記します。

必須知識

  • セルの指定方法

    • Range...変数を使わない場合に使用。
      括弧の中をダブルクォー
      テーションで囲む。
      例> Range("A5")

    • Cells...変数を使う場合に使用。
      括弧の左側に変数を入れ、
      カンマ(,)で区切り、右側に列
      番号を入れる。
      例> Cells(i,5)

  • 関数を使う際の注意点

    プロシージャ内で使う関数は大きく分けて関数名の前に「WorksheetFunction.」と入力する必要があるもの、ないものの2種類があります。

    • 必要ある関数の代表例
      Sum,Counta,Sumif,Countif,Vlookup
      Muchなどの文字列操作関数や日付関数

    • 必要ない関数の代表例
      Year,Month,Day,Left,Mid,Rightなど
      の数値集計の関数

上記のように分けられますが、明確な基準はありません。手っ取り早い確認方法としては、WorksheetFunctionと入力後にピリオドを押すと、WorksheetFunctionをつけなければいけない関数候補リストが出てきます。ここに出てくるものはWorksheetFunctionが必要だし、ここに出てこないLeft関数などはつけなくてもよい、ということになります。

  • 「Cells(Rows.Count,1).End(xlUp).Row」

↑この文の意味とは

そもそも手作業で、表データの一番下に移動する時はどのような操作をしていますか?
手操作で、A列の最終行に移動する場合は、
A1セルが選択されている状態で、

  • Ctrl + ↓

これで、最終行に移動できます。

これをマクロVBAでは、

  • Cells(1, 1).End(xlDown)

このように書きます。

しかし、途中に空欄のセルがある場合、表の途中に空欄が不特定に入っている場合は、いったんシートの最終行である、「A1048576」セルに移動してから、Ctrl + ↑とすれば、表の最終行に移動できます。

これをマクロVBAでは、

  • Cells(Rows.Count, 1).End(xlUp)

このように書きます。
つまり、シートのA列の最終行から、上に向かって、Ctrl+↑で移動しているという訳です。
最後に.Rowsをくっつけることで、セルの値ではなく、セルの行数を表せることになります。これは定型文として丸暗記しましょう。

  • 予備知識

.End(xlUp) : Ctrl+↑上へ移動
.End(xlDown) : Ctrl+↓下へ移動
.End(xlToLeft) : Ctrl+←左へ移動
.End(xlToRight) : Ctrl+→右へ移動

これらの知識を持って、もう一度上記のVBAを眺めてみると、自然と流れが読めてしまいませんか???

まだ疑問が残るという方は、

  • For Next構文
  • With構文
  • If Then構文
  • Dimという単語の意味

について独自で調べてみると良いかもしれません。以下の参考文献で、直ぐにでもVBAの基本が分かってしまうと思います!

参考文献

-たった1秒で仕事が片付くExcel自動化の教科書
https://sugoikaizen.com/excelvba/

-エクセルの神髄
https://excel-ubara.com/excelvba1/EXCELVBA318.html

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?