値の設定と取得

広告

セルに値を設定する場合、Rangeオブジェクトを取得した後で「Value」プロパティを使ってセルに値を設定したり取得したりすることが出来ます。(今まで見てきた通りです)。

Dim range1 As Range

Set range1 = Range("A1")
range1.Value = 10

またRangeオブジェクトを取り出す部分を省略して次のようにも記述可能です。

Range("A1").Value = 10
Cells(2, 2).Value = "月曜日"

注意すべき点としては「Value」プロパティを使う場合には、セルに数式などが設定されていた場合でも、数式ではなく値が取得されます。

例えば下記のようなExcelファイルを用意します。

計算式と値

セル("A4")には計算式である「=A2+A3」が含まれており、その結果として「8」という値が表示されています。ではセル("A4")のRangeオブジェクトを取得し、Valueプロパティで取得できる値を確認してみます。

Sub テスト()
    MsgBox Range("A4").Value
End Sub

実行してみると次のようになります。

計算式と値

このように「Value」プロパティを使った場合には「式」ではなく「値」が取得されます。

では逆に「Value」プロパティを使って「式」を設定してみます。

Sub テスト()
    Range("A4").Value = "=A2+A3+2"
End Sub

実行してみると次のようになります。

計算式と値

このように「Value」プロパティにセットする場合は、「式」でもセットできるようです。

読むときは「値」になり、設定する時は「値」でも「式」でも可能なのですが、セルに設定されている「式」を読み取ったり「式」を設定するために「Formula」プロパティが別途用意されていますので、「Value」プロパティを使う時は読み込みも設定も「値」に統一しておいたほうがいいかもしれません。

Excel VBA入門の他の記事を見てみる

( Written by Tatsuo Ikura )