VBA

VBAメモ002 〜セルをいじる〜

とりあえず、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セルへの処理であることも連続しているので、ここもくくれます。

セル範囲を指定して処理する

※編集中

ABOUT ME
naochi
画像処理エンジンの開発が本職の脳筋エンジニア。 趣味でWEB系エンジニアの世界にもこんにちは。 人生目標:死ぬまで無事