とりあえず、VBAを試せる状況にVBAメモ001でしたわけですね。
ということでちょこちょこやっていこうかと。
用語について
VBAにおいては、オブジェクト、プロパティ、メソッドの基本概念です。
- ・オブジェクト:何らかの「対象(もの)」
- 例)Workbook(ブック), Worksheets(シート),Range(セルやセル範囲),Chart(グラフ)
- ・プロパティ:オブジェクトの「状態」や「属性」
- 例).Value, .Font, .Name, .FullName
- ・メソッド:オブジェクトに対する「操作」を行う命令
- 例).Clear, .Save, .Activate, .Select
使い方は、以下のようになります。
オブジェクト.プロパティ.メソッド
セルになにか値を入れてみる
A). Range("セル").Value = "値"
B). Cells(行,列).Value = "値"
セルへの値のセットの仕方は、上記の2通りがあります。
A) Rangeオブジェクトを使用。
引数として、値を与えたいセルを指定します(“A1″とか)
B) Cellsオブジェクトを使用。
引数として、値を与えたいセルの行、列を指定します(2,1 = “B1”)
こんな感じですね↓

アクティブシートを指定する
ひとつのExcelファイル内に複数のシートがある場合、操作対象のシートを明確にしないとですね。
上記例では、いずれもアクティブシートに対して処理が実行されます。

こんな感じで、”Sheet1″がアクティブになっているので、”Sheet1″のセルに値がセットされました。
“Sheet2″をアクティブシートとして選択する場合、以下でできます。
Worksheets("シート").Active
あるいは、値をセットするときにシートを指定してしまってもいいですね。
Worksheets("シート").Value = "値"
同じオブジェクト/プロパティへの連続処理を簡略化する
同じオブジェクト/プロパティへ連続して処理実行するとき、毎回アクティブ対象を指定するのも面倒。。
例えば、”Sheet2″のA1セルに値を入れて、行の高さ、列の幅を設定するとき
Worksheets("Sheet2").Cells(1,1).Value = "Cells property value set"
Worksheets("Sheet2").Cells(1,1).RowHeight = 30
Worksheets("Sheet2").Cells(1,1).ColumnWidth = 40
と書いてももちろん動きますが、記述が長い。。
そんなときはWith ~ End Withでくくれば記述を省略できます。
With "対象"
~
End With
こんな感じですね。

よく見るとA1セルへの処理であることも連続しているので、ここもくくれます。

セル範囲を指定して処理する
※編集中