対象のセル範囲に値を入力したり、取得するプロパティです。対象がセル範囲
の時には取得される結果は2次元の配列になります。
構文 Object.Value 設定/取得
設定項目 内容
Object Rangeオブジェクト
次のコードは、セルにいろいろな値を入力するサンプルです。
●サンプル1●
Sub ValueSamp1()
'----(1)文字列
Range("A1").Value = "あいうえお"
'----(2)数値
Range("A2").Value = 1234.56
'----(3)数値
Range("A3").Value = "01234.56"
'----(4)数値を文字列
Range("A4").Value = "'01234.56"
'----(5)数値(桁区切り)
Range("A5") = "1,234.56"
'----(6)日付
Range("A6") = "1999/9/15"
'----(7)時刻
Range("A7") = "10:10:45"
End Sub
文字列を入力する際には、(1)のように文字列をダブルクォーテーションで囲みます。
数値の場合には(2)か(3)のように記述します。結果はどちらも同じです。文字列として
入力したい場合には、(4)のように値の先頭にアポストロフィを付けてください。また、
(5)〜(7)のように、桁区切り、日付、時刻など、様々な形式の数値を入力することがで
きます。なお、Rangeプロパティの既定のプロパティですので、(5)〜(7)のように記述を
省略することができます。ただし、省略した場合は若干処理速度が遅くなります。
先のサンプルで入力したデータを利用して、Valueプロパティでセルの値を参照する際
に注意すべきことを把握してください。
●サンプル2●
Sub ValueSamp2()
Dim c As Range
For Each c In Range("B1:B7")
'----1列左のセルの値を所得
c.Value = c.Offset(, -1).Value
Next c
End Sub
A列には、さきほど入力した値が横に示した形式で入力されています。その値を取得
し、隣のB列に入力しています。文字列、標準の数値で入力されている(1)〜(4)に関し
てはA列と同じようにB列に記述されていますが、(5)〜(7)に関しては書式が失われ、
標準の数値形式での値になってしまっています。セルに表示された通りのイメージで
データを取得したい場合には、Textプロパティを使用するか、書式設定も一緒に取得
してください。
なお、ここまで紹介したのは単体セルを対象にした場合のみですが、セル範囲に対し
ても使用可能です。複数のセルに対して、一度に値の入力及び取得を行います。ただし、
値を取得する場合には若干注意が必要です。例えば次のサンプル3はエラーとなります。
●サンプル3●
Sub ValueSamp3()
'----倍精度小数点型で宣言
Dim myValue As Double
'----型の不一致でエラーが発生
myValue = Range("A1:B10").Value
End Sub
最初に書いたように、セル範囲の値が2次元の配列として返されるのが原因です。
セル範囲の値を格納する変数をVariant型で宣言すると、自動的に配列変数として
解釈される特徴を利用して、次のサンプル4のように記述すると良いでしょう。
●サンプル4●
Sub ValueSamp4()
'----バリアント型で宣言
Dim myValue As Variant
'----自動的に配列変数と解釈
myValue = Range("A1:B10").Value
'----配列ですのでTRUEを返します
MsgBox IsArray(myValue)
End Sub
●注意●
セルに数式が入力されている場合、Valueプロパティは計算結果の値を返します。
数式を取得したい場合には、Formulaプロパティ、FormulaR1C1プロパティを使って
ください
|