3-3.セルの値

Valueプロパティ

セルの値を取得・設定する場合は、Valueプロパティを使用します。

1.セルの値を取得
○構文:Range.Value

○処理:Rangeの値を取得
ここで、”取得”というのは、”戻り値”として返すことを言い、取得した後の処理で値を使用したりすることができます。

2.セルに値を設定
○構文:Range.Value = “値”

○処理:Rangeの値を設定
VBAでは、文字列を使用する場合は “(ダブルクォーテーション)で囲みます。
数値の場合は、”は不要で、そのまま数値を記述します。

なお、Valueプロパティは省略可能なプロパティで、省略した場合でも値の取得や設定が可能ですが、省略できない場合もあるので、できるだけ記述するようにしましょう。

Sub セルの値()
    
    'セルの値をメッセージボックスで表示
    MsgBox Range("A1").Value
    
    'A1セルに値を設定
    Range("A1").Value = "A1"
    Range("A1").Value = 123
    
    '複数セルに同じ値を設定
    Range("A1:C5").Value = "あいうえお"
    
    'A1セルにB2セルの値を設定
    Range("A1").Value = Range("B2").Value
    
End Sub

Textプロパティ

Valueプロパティと同様、セルの値を取得できるプロパティですが、Textプロパティは、セルに設定されている表示形式の状態で値を取得できます。

例)セルの値が1000、表示形式が1,000の場合、Valueプロパティは1000、Textプロパティは1,000を返す

なお、Textプロパティは取得のみ可能で、セルの値を設定することはできません。

○構文:Range.Text

○処理:Rangeの値を取得

Formulaプロパティ / FormulaR1C1プロパティ

セルの数式を設定・取得する場合は、FormulaプロパティまたはFormulaR1C1プロパティを使用します。

1.セルの数式を取得
○構文:Range.Formula/Range.FormulaR1C1

○処理:Rangeの数式を取得

2.セルに数式を設定
○構文:Range.Formula/Range.FormulaR1C1 = “数式”

○処理:Rangeに数式を設定
数式は文字列なので、””で囲む必要があります。

FormulaとFormulaR1C1の使い分けですが、
数式を「A1」形式で扱う場合はFormula、「R1C1」形式で扱う場合はFormulaR1C1を使用します。
R1C1形式とは、行をR数値、列をC数値で表す形式です。

A1形式R1形式
A1R1C1
A1:C5R1C1:R5C3

また、R1C1形式の場合、行列の位置を相対的に指定することができます。
この相対位置というのは、数式を設定するRangeオブジェクトから見た相対位置を指します。

相対位置R1C1形式
同じ行同じ列RC
同じ行で1列右RC[1]
同じ行で1列左RC[-1]
1行下で同じ列R[1]C
1行上で同じ列R[-1]C
1行下で1列右~3行下で3列右R[1]C[1]:R[3]C[3]

以下の例では、いずれもC1~C5セルに、同じ行のA列とB列を合計する数式を入力しています。

Sub セルの数式()
    
    '単純な足し算式
    Range("C1:C5").Formula = "=A1+B1"
    'Sum関数 A1形式
    Range("C1:C5").Formula = "=Sum(A1:B1)"
    'Sum関数 R1C1形式
    Range("C1:C5").FormulaR1C1 = "=Sum(RC[-2]:RC[-1])"
    
End Sub

なお、上記の例では、数式を相対参照の形で指定していますが、絶対参照の形($固定)で指定した場合は、C1~C5の数式はすべて同じになります。

Valueプロパティ、Textプロパティ、Formulaプロパティは、すべてセルの値を取得することができますが、セルの内容によって、取得される値が異なります。
以下はセルに数式が入力されている場合の例です。

コメント