Excel VBA セルの値や数式を取得、セルに値や数式を設定する方法

スポンサーリンク

セルの値や数式を取得、セルに値や数式を設定する方法

VBAでセルにを設定や取得する場合と、セルに数式を設定や取得する場合とでは使用するプロパティが異なります。

セルの値を取得、セルに値を設定するプロパティ一覧

プロパティ内容
Value
【バリュー】
セルに入力されている値を取得
またはセルに値を設定すます。
Text
【テキスト】
セルの値を文字列として取得します。
値の設定はできません。

セルの数式を取得、セルに数式を設定するプロパティ一覧

プロパティ内容
Formula
【フォーミュラ】
セルの数式をA1表記形式で取得
セルに数式をA1表記形式で設定します。
FormulaR1C1
【フォーミュラアールワンシーワン】
セルの数式をR1C1表記形式で取得
セルに数式をR1C1表記形式で設定します。

Value【バリュー】プロパティ

セルに入力されている値を取得または、セルに値を設定するにはRange【レンジ】オブジェクトのValue【バリュー】プロパティを使用します。

Value【バリュー】プロパティの書式と設定値(引数)の説明

[]内は省略可能です。
【値の取得】
オブジェクト[.Value]([データタイプ])
【値の設定】
オブジェクト[.Value]([データタイプ]) = 設定値

  • オブジェクト(必須)
    値を取得または、設定するセルをRange【レンジ】オブジェクトを指定します。
  • データタイプ
    取得するデータタイプをxlRangeValueDataType列挙型の定数で指定します。
xlRangeValueDataType列挙型の定数
定数内容
xlRangeValueDefault
(既定値)
10Range オブジェクトが空の場合は
Empty 値が返されます。
これを調べるにはをIsEmpty 関数 使用します。
Range オブジェクトに複数のセルが
含まれているときは値の配列が返されます。
これを調べるには IsArray 関数 を使用します
xlRangeValueMSPersistXML12指定した XML 形式のRange オブジェクトの
レコードセットの表示を返します。
xlRangeValueXMLSpreadsheet11指定したXMLスプレッドシート形式の
Rangeオブジェクトの値
書式設定、数式、名前を返します。
  • 設定値
    セルに入力したい値を設定します。

※ValueプロパティはRange【レンジ】オブジェクトの既定のプロパティなので、省略することができます。
※セルに数式が入力されている場合は、数式ではなく表示されている数式の結果を値として取得します。

セルに値を設定するコード例

Sub バリュープロパティ()
Range("A1").Value = 2
Range("B1").Value = "002"
Range("C1").Value = "'002"
Range("D1").Value = "VBA"
Range("E1").Value = "=2+2"
Range("A2").Value = "5月1日"
Range("B2").Value = "2017/5/1"
Range("C2").Value = "12:00"
Range("D2").Value = "1000円"
Range("E2").Value = "¥1000"
End Sub

実行結果

※数値以外は文字列の前後をダブルクォテーションで囲まないとエラーになります。
※数値はダブルクォテーションで囲んでも数値に変換されます。
※数値を文字列として表示するには先頭にアポロトロフィ(’)を付けます。
※数式は計算結果が表示されます。
※日付や時間は自動的に日付や時刻型に変換されます。

値の取得のコード例

Sub バリュープロパティ2()
If IsEmpty(Range("A1").Value) Then
MsgBox "値が入力されていません。"
Else
MsgBox Range("A1").Value
End If
End Sub

IsEmpty【イズエンプティ】関数を使用して
A1セルの値がEnpty(空)であるかを条件分岐しています。


Text【テキスト】プロパティ

セルの値を文字列として取得するには、Range【レンジ】オブジェクトのText【テキスト】プロパティを使用します。値の設定はできません。

Text【テキスト】プロパティの書式と設定値

オブジェクト.Text

  • オブジェクト(必須)
    文字列として取得する値が入力されているセルをRange【レンジ】オブジェクトで指定します。

テキストプロパティのコード例

Sub テキストプロパティ()
MsgBox "Valueプロパティ:" & Range("A1").Value & vbCrLf & _
       "Textプロパティ:" & Range("A1").Text
End Sub

実行結果


Formula【フォーミュラ】プロパティ
FormulaR1C1【フォーミュラアールワンシーワン】プロパティ

セルの数式をA1表記形式で取得、セルに数式をA1表記形式で設定するにはFormula【フォーミュラ】プロパティを使用します。

セルの数式をR1C1表記形式で取得、セルに数式をR1C1表記形式で設定するにはFormulaR1C1【フォーミュラアールワンシーワン】プロパティを使用します。

Formula【フォーミュラ】・FormulaR1C1【フォーミュラアールワンシーワン】の書式と設定値の説明

【取得】
オブジェクト.Formula
オブジェクト.FormulaR1C1
【設定】
オブジェクト.Formula = 設定値1
オブジェクト.FormulaR1C1 = 設定値2

  • オブジェクト
    数式を取得や設定するセルをRangeオブジェクトを指定します。
  • 設定値1
    数式をA1表記形式で指定します。A1表記形式は「”=A1+B1″」の形式で設定する方法です。
  • 設定値2
    数式をR1C1表記形式で指定します。R1C1表記形式は基準となるセルから相対的な位置でセルを参照します。Rは行の移動数、Cは列の移動数で
    Rの場合 「下方向の移動数は正の値」「上方向の移動数は負の値」
    Cの場合 「右方向の移動数は正の値」「左方向の移動数は負の値」
    で指定します。
    たとえば
    基準セルから、1行上のセルを参照する場合はR[-1]C
    基準セルから、1行下のセルを参照する場合はR[1]C
    基準セルから、1列右のセルを参照する場合はRC[1]
    基準セルから、1列左のセルを参照する場合はRC[-1]
    基準セルから、1行上、1列右のセルを参照する場合はR[-1]C[1]
    基準セルから、1列下、1列左のセルを参照する場合はR[1]C[-1]
    移動しない方向の[]は省略します。
    相対的な位置でセルを指定するため、複数のセルにまとめて、同じ数式を入力してもそれぞれのセルに対応した数式が入力できます。


Formula【フォーミュラ】プロパティとFormulaR1C1【フォーミュラアールワンシーワン】プロパティでE列にSUM関数で点数の合計の数式を設定し、F列にIF関数で条件分岐式を設定するコードを作成します。

Formula【フォーミュラ】プロパティ使用のコード例

Sub 数式()
Range("E2").Formula = "=SUM(B2:D2)"
Range("E3").Formula = "=SUM(B3:D3)"
Range("E4").Formula = "=SUM(B4:D4)"
Range("F2").Formula = "=IF(E2>=240,""合格"",""不合格"")"
Range("F3").Formula = "=IF(E3>=240,""合格"",""不合格"")"
Range("F4").Formula = "=IF(E4>=240,""合格"",""不合格"")"
End Sub

FormulaR1C1【フォーミュラアールワンシーワン】プロパティ使用のコード例

Sub 数式2()
Range("E2").FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"
Range("E3:E4").FormulaR1C1 = Range("E2").FormulaR1C1
Range("F2:F4").FormulaR1C1 = "=IF(RC[-1]>=240,""合格"",""不合格"")"
End Sub

実行結果


※コード例のIF関数のように数式の中で文字列を使用する場合、「”=IF(RC[-1]>=240,””合格””,””不合格””)”」
数式の中の文字列は前後を2つのダブルクォテーションで囲みます


以上で、セルの値を取得セルに値を設定する方法についての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告