VBA入門編 No.2

VBA入門編

セルの参照

では、次はセルの参照をしましょう
セルの参照には、 Rangeを使う方法 とCellsを使う方法 があります

B4セルを、参照する場合、Rangeを使って参照するには、Range(”B4”)と書きます
セルの番地はダブルクォーテーションでくくってください B4でもb4でもOKです

Cellsを使って、B6セルを参照するには、Cells(6,2)です
Cells、行、列の順番で書いてください

どちらを使ってもいいのですが、プログラムによって使い分けたり、
こちらでないと表せないという場合もあります

今は表し方が2つあるのだなと思ってください!

セルは色々な情報を持っています
表示する値、文字の色、背景色、罫線などなど

セルのなにを、どのようにしたいのかをかかなければいけません・・・

文字色:Range(“セル番地”).Font.Color = vbBlack 
文字サイズ:Range(“セル番地”).Font.Size = 20
背景色:Range(“セル番地”).Interior.Color = RGB(255, 0, 0)
罫線:Range(“セル番地”).Borders.LineStyle = xlContinuous のように書きます

今回はセルの値を参照したいです
値は、Valueであり、本来は、

Range(“セル番地”).Value あるいはCells(行,列).Value のように書きます

ただし値は、一番よく使うので、.Valueは省略が可能です。

Range(“セル番地”) あるいは、Cells(行、列)でセルの値を表すことができます

省略して使う場合、.Valueが省略されていることを覚えておいてくださいね。

セルの値 取り出し&書き出し

このようにセルに値が入力されている場合、
次のプロシージャで各セルの値を取り出し、メッセージボックスに表示します
.Valueを省略しています

Sub test()
MsgBox Range("a1")
MsgBox Range("b2")
MsgBox Range("c3")

End Sub

セルの値を取り出すことができました

次はセルに値を書き出してみましょう
こちらも.Valueを省略しています

Sub test()
Range("a1") = "VBAのテキスト代"
Range("b2") = 1000
Range("c3") = "円"
End Sub

このイコール=は代入演算子といいます。
普通の数学で使うイコール=とは違うことに注意してください。

右辺の内容を左辺に代入します。
イコールより左向き矢印のイメージです

連結表示してみましょう
MsgBox Range(“a1”) & Range(“b2”) & Range(“c3”)

で文字列やセルの値、 数値などを連結できます

変数

次に、変数というものを使ってみましょう
変数は、よくにたとえられます

数値や文字列をこのに入れて、使うことができます

また、変数は名前を付けて使います。この名前を変数名と言います
まだよくわからないと思いますが、変数を使った方が飛躍的にプログラム効率があがります

例えば i という変数を使い、セルの値をこの変数に代入します
変数は i でなくても、なんでも自分で決めていいのですが、プログラムでは、よく i が使われます

Sub test()
i = Range("a1")
Range("a3") = i + Range("a2")
End Sub

Range(“a1”)の値を i に代入し、
その i にRange(“a2”)を加えた値を
Range(“a3”)とします

Sub test()
Range("a3") = 100 + 200
i = 100
j = 200
Range("a3") = i + j
End Sub

Range(“a3”)は、100+200を計算した値が入ります
i = 100, j = 200とすれば、変数を使って、
Range(“a3”) = i + j でも同じ結果になります

簡単計算機を作りましょう
B5セルの値を変数A C5セルの値を変数Bとして、四則演算した結果をF列に書き出しましょう
×は *を 、 ÷は /を使います

Sub test()
A = Range("b5")
B = Range("C5")

Range("f5") = A + B
Range("f6") = A - B
Range("f7") = A * B
Range("f8") = A / B

End Sub

A,Bの値を変えれば、色々な計算ができますよ

RangeをCellsに書き換えましょう

Sub test()
A = Cells(5, 2)
B = Cells(5, 3)

Cells(5, 6) = A + B
Cells(6, 6) = A - B
Cells(7, 6) = A * B
Cells(8, 6) = A / B

End Sub

列番号を変数にしてみましょう 変数Cです

Sub test()
A = Cells(5, 2)
B = Cells(5, 3)
C = 6
Cells(5, C) = A + B
Cells(6, C) = A - B
Cells(7, C) = A * B
Cells(8, C) = A / B

End Sub

行番号も変数にしてみましょう 変数Dです

Sub test()
A = Cells(5, 2)
B = Cells(5, 3)
C = 6
D = 5
Cells(D, C) = A + B
Cells(D + 1, C) = A - B
Cells(D + 2, C) = A * B
Cells(D + 3, C) = A / B

End Sub

セルの引数(かっこの中)を計算式にしてもいいのです

ExcelとVBEを行き来するのも大変ですし、ユーザーに使ってもらうときは、Excelから操作します
Excel側で実行できるようにしましょう

実行ボタン作成

このプロシージャを実行するためのボタンを作成しましょう

開発挿入から 
フォームコントロール 左上のボタン(フォームコントロール)を選びます

ドラッグして、ボタンを作ります
ボタンと紐づけるプロシージャを選んで、OK

右クリック テキストの編集でボタンにボタン名を付けます(計算という名前にしました)

ボタンtestが紐づいています

*ボタンを削除したいときは、右クリック切り取りを選びます

ボタンにカーソルを合わせると、ポインターが変わっていればマクロの登録ができています
A B に値を入力して、計算ボタンをクリックすれば、マクロを実行できます