変数9(ブック、シートの操作:同一ブック内 シート間 値変更処理)

サンプルファイルはこちら

変数2(宣言,型)で触れたように オブジェクト型 というものがあります。

例えば、

Dim wb as Workbook

Dim ws as WorkSheet

といった Workbook 型 と Worksheet 型を使いこなすことで、

Book1 の A シートのC2セルの値を
Book1 の C シートのA5セルに 5倍して表示させる

といったことができるようになります。 以下実例。

サンプルファイルでは最初に
wb , ws_a , ws_c (という名前)を利用することを宣言しています。

Workbook型 や Worksheet型を利用するときは

Set  を使います。

例: Set wb = Workbooks(“20230127.xlsm”)
 今開いているエクセルマクロブックと同じ場所にある
 エクセルブック 20230127.xlsm を wb という名前で以下では利用する
 という意味。

 こう宣言することで、セット後は wb だけで
20230127.xlsm を編集対象とすることができるようになりました。

ブックを操作するためには、
必ず Workbook型オブジェクトをSet して利用しなければならない
という決まりはありません。


Workbook型オブジェクトをSetしたくなければ、
毎回ブックを選択するために
Workbooks(“○○〇.xlsx”).
等と書けばいいだけです。

なぜVBAプログラマーが Setして利用しているかというと
楽だからです。

AシートとCシートがあります。
そのため ただ c2 = Range(“c2”) と命令すると

c2はAシートの値なのか
c2はCシートの値なのか
一意に決まらないことになります。

そこで、
Set ws_a = wb.Worksheets(“A”)
とすることで
wbブック内の
シートA を ws_a という名前で以下では利用する
という意味を与えました。

同様に
Set ws_c = wb.Worksheets(“C”)
とすることで
wbブック内の
シートC を ws_c という名前で以下では利用する
という意味を与えました。



そうすると
c2 = ws_a.Range(“c2”) が
c2 という変数に ワークシートAのC2セルの値を代入する
という意味であることが分かったと思います。


そしてまた
ws_c.Range(“a5”) = c2 * 5 が
ワークシートCのA5セルに 変数 c2 を5倍した値を代入する
という意味であることが分かったと思います。