Excel VBA セルの値を取得 セルに値を設定する

スポンサーリンク
スポンサーリンク

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

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

値の設定や取得には
Value【バリュー】プロパティやText【テキスト】プロパティを使用します。

数式の設定や取得には
Formula【フォーミュラ】プロパティやFormulaR1C1【フォーミュラアールワンシーワン】
プロパティを使用します。

セルに値を効率的に入力するオートフィル機能をVBAで使用するには
AutoFill【オートフィル】メソッドを使用します。

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

セルに入力されている値を取得または
セルに値を設定するには
Value【バリュー】プロパティを使用します。

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

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


設定値の説明

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

※Valueプロパティは省略することができます。
※セルに数式が入力されている場合は、数式ではなく
表示されている数式の結果を値として取得します。

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

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【テキスト】プロパティ

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

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

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つのダブルクォテーションで囲みます

AutoFill【オートフィル】メソッド

セルに連続データを設定するには
AutoFill【オートフィル】メソッドを使用します。

AutoFill【オートフィル】メソッドの書式

[]内は省略可能です。
オブジェクト.AutoFill(Destination[,Type])


設定値(引数)の説明

  • オブジェクト
    Rangeオブジェクトを指定します。
    オートフィルの基準となるセルを設定します。
  • Destination【デステネーション】
    オートフィルターでのデータの書き込み先となるRangeオブジェクトを指定します。
    ※必ず、オブジェクトで指定した基準となるセルやセル範囲を含めて指定します。
    Destination【デステネーション】は目的地や行先という意味があります。
  • Type【タイプ】
    セルに連続して入力するデータをxlAutoFillType列挙型の定数で指定します。
    省略した場合は、基準となるセル範囲のデータに合わせて
    適切な種類のデータが入力されます。
xlAutoFillType列挙型の定数
定数内容
xlFillDefault
【エックスエルフィルデフォルト】
標準のオートフィル(既定値)
xlFillSeries
【エックスエルフィルシリーズ】
連続データ
xlFillCopy
【エックスエルフィルコピー】
コピー
xlFillFormats
【エックスルフィルフォーマッツ】
書式のコピー
xlFillValues
【エックスエルフィルバリューズ】
書式なしコピー
xlFillYears
【エックスエルフィルイヤーズ】
年単位
xlFillMonths
【エックスエルフィルマンス】
月単位
xlFillDays
【エックスエルフィルデイズ】
日単位
xlFillWeekdays
【エックスルフィルウィークデイズ】
曜日単位
xlLinearTrend
【エックスエルライナートレンド】
加算
xlGrowthTrend
【エックスエルグローストレンド】
乗算

AutoFillメソッドで日付の連続データをセルの設定するコード例

Sub オートフィル()
Range("A1").NumberFormatLocal = "mm/dd(aaa)"
Range("A1").Value = "1/1"
Range("A1").AutoFill Range("A1:L1"), xlFillMonths
Range("A1:L1").AutoFill Range("A1:L31"), xlFillDays
End Sub

実行結果


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

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク