Excel VBA | 超初心者(Excel操作+マクロ体験):Excelオブジェクト基礎 - Value

Excel VBA VBA
スポンサーリンク

Value は「セルや範囲の“中身そのもの”を表すプロパティ」

まず一番大事なイメージから。
Value は「セル(Range)の中身そのもの」 を表すプロパティです。

Range は「場所」
Value は「その場所に入っている中身」

という関係です。

だから、
「セルに書き込む」= .Value に代入する
「セルから読み取る」= .Value を変数に入れる
という形になります。


一番基本:セルに書く・セルから読む

A1 に文字を書き込む

Sub SampleValueWrite()

    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets("入力")

    ws.Range("A1").Value = "こんにちは"
    ws.Cells(2, 1).Value = 123

End Sub
VB

ws.Range("A1")ws.Cells(2, 1) は「場所(Range)」
.Value に代入している “こんにちは” や 123 が「中身」です。

ここでのポイントは、
「セルに値を入れるときは、ほぼ必ず .Value = 何か という形になる」
ということです。

A1 の値を読み取ってメッセージ表示

Sub SampleValueRead()

    Dim ws As Worksheet
    Dim msg As String

    Set ws = ThisWorkbook.Worksheets("入力")

    msg = ws.Range("A1").Value

    MsgBox "A1 の中身は「" & msg & "」です。"

End Sub
VB

msg = ws.Range("A1").Value の部分で、
「A1 の中身」を変数 msg にコピーしています。

ここで重要なのは、
「Value は“セルの中身そのもの”なので、代入も読み取りも同じ .Value で行う」
というシンプルさです。


Value は「単一セル」でも「複数セル」でも使える

複数セルに同じ値を一気に書き込む

Sub SampleValueMultiWrite()

    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets("入力")

    ws.Range("A1:C3").Value = "★"

End Sub
VB

このコードは、「A1 から C3 までの 9 セル全部に “★” を入れる」処理です。

Range(“A1:C3”) は「複数セルの範囲」ですが、
.Value = "★" と書くと、その範囲のすべてのセルに同じ値が入ります。

「同じ値をまとめて入れたい」場面では、ループを回さずに一発で書けるので、とても便利です。

複数セルの Value を配列として受け取る(少し先の話)

超初心者の段階では「ふーん」くらいで大丈夫ですが、
複数セルの .Value を変数に入れると、「2次元配列」として受け取ることもできます。

Dim v
v = ws.Range("A1:C3").Value
VB

これは「A1:C3 の中身を、v(行, 列) でアクセスできる配列として持つ」という意味です。
配列に慣れてきたら、ここに戻ってくると一気に世界が広がります。


Value と Text の違いをざっくり知っておく

Value は「中身」、Text は「表示されている見た目」

よく出てくる疑問がこれです。

Range("A1").Value
Range("A1").Text
VB

何が違うのか。

ざっくり言うと、

Value:セルの“本当の中身”
Text:セルに“表示されている文字列(書式適用後)”

です。

例えば、A1 に「日付」が入っていて、表示形式が「yyyy/mm/dd」になっているとします。

Dim v, t

v = Range("A1").Value   ' 中身は日付型(シリアル値)
t = Range("A1").Text    ' 画面に見えている「2026/03/23」などの文字列
VB

超初心者のうちは、
「基本は Value を使う。見た目の文字列がどうしても欲しいときだけ Text」
くらいの理解で十分です。


Value を使うときに一番大事なこと:「必ず Range とセットで考える」

Value だけでは存在できない

ここが超重要ポイントです。

Value は単体では存在できません。
必ず「どのセル(Range)の Value か」とセットです。

Range("A1").Value
Cells(2, 3).Value
ws.Range("B5").Value
rng.Value
VB

全部、「何かの Range の Value」です。

つまり、

Range → 場所
Value → その場所の中身

というセットを、常に頭の中に置いておくことが大事です。

「どのブック・どのシート・どのセルの Value か」を明確に書く

いきなり

Range("A1").Value = 1
VB

と書くと、
「アクティブなブックの、アクティブなシートの A1」に書き込まれます。

超初心者のうちから、あえてこう書く癖をつけてください。

ThisWorkbook.Worksheets("入力").Range("A1").Value = 1
VB

あるいは、変数を使って:

Dim wb As Workbook
Dim ws As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Worksheets("入力")

ws.Range("A1").Value = 1
VB

「どのブック → どのシート → どのセル → その Value」
という順番を崩さない書き方を身につけると、
“意図しない場所を書き換える事故”が一気に減ります。


Value を使うときに意識してほしい重要ポイント

「代入」と「読み取り」が同じ書き方であることを味方にする

セルに書くときも、セルから読むときも、どちらも .Value です。

書くとき:

ws.Range("A1").Value = "OK"
VB

読むとき:

msg = ws.Range("A1").Value
VB

この「同じ書き方で、“方向”だけが違う」というシンプルさは、
慣れてくるととても心強いです。

「セルの中身をどうしたいのか?」
→ それは全部 .Value を通る、と覚えておいてください。

型(文字列・数値・日付)は「入れたもの次第」

Value は「中身そのもの」なので、
文字列を入れれば文字列、数値を入れれば数値、日付を入れれば日付として扱われます。

ws.Range("A1").Value = "123"   ' 文字列
ws.Range("A2").Value = 123     ' 数値
ws.Range("A3").Value = Date    ' 日付
VB

読み取る側の変数の型(String, Long, Date など)をどうするかは、
「そのセルに何を入れるつもりか」で決めていきます。


まとめ:Value は「セルの中身を出し入れするための“唯一の正面玄関”」

Value の本質は、

「Range(セル・範囲)の中身そのものを表し、それを読み書きするためのプロパティ」

です。

押さえておきたいポイントをコンパクトにまとめると、

Range は「場所」、Value は「その場所の中身」
単一セルでも複数セルでも .Value で書き込み・読み取りができる
基本は Value、見た目の文字列が欲しいときだけ Text
「どのブック → どのシート → どのセル → その Value」という順番を崩さない

タイトルとURLをコピーしました