ExcelVBAでよく使われる操作の1つが、「代入した値をセルに書き込む(出力する)」という処理です。ユーザーから入力を受け取ったデータや、計算結果、ループ処理の途中値など、さまざまな情報をセルに代入して表示することで、視覚的なフィードバックや帳票出力が可能になります。
この記事では、「vba 代入 セルの値」という検索キーワードで情報を探している方向けに、以下のポイントをわかりやすく解説していきます。
✅ セルに値を代入する基本構文
✅ 文字列・数値・日付などの型別代入方法
✅ 変数の値をセルに出力する実例
✅ 複数セルに代入するループ処理の活用法
✅ よくあるエラーと対策
目次
- ✅ セルに値を代入する基本構文
- ✅ 文字列・数値・日付などの型別の代入例
- ・ 文字列を代入する
- ・ 数値を代入する
- ・ 日付を代入する
- ・ 数式を代入する
- ✅ 変数の値をセルに代入する方法
- ・ 例1:文字列変数の値をセルに出力
- ・ 例2:計算結果をセルに代入
- ・ 例3:日付型の変数をセルに出力
- ✅ 複数セルに代入する処理(ループの活用)
- ・ 例1:1~10までの数値をA列に順番に代入
- ・ 例2:2次元配列の値を複数セルに一括代入
- ■ 値の代入先に数式や書式がある場合の注意点
- ・ 対策1:元の数式を保持したい場合
- ・ 対策2:事前に中身をクリア
- ■ よくあるエラーと対処法
- ❌ セル指定のミス
- ❌ 型のミスマッチによる代入失敗
- ❌ オブジェクトの指定ミス
- ■ まとめ|VBAでのセル代入は基本であり最重要スキル
- ・ 本記事のポイントをおさらい
✅ セルに値を代入する基本構文
VBAでセルに値を代入するには、以下のような構文を使います。
Range("A1").Value = 100
または、行と列を数値で指定する方法もあります。
Cells(1, 1).Value = 100 ' A1セルに代入
どちらも結果は同じですが、動的な行列の操作にはCellsが便利です。固定のセルならRangeが読みやすくなります。
【VBA】変数宣言とは?基本構文・データ型・スコープの考え方まで徹底解説!
✅ 文字列・数値・日付などの型別の代入例
・ 文字列を代入する
Range("A1").Value = "こんにちは"
※ 文字列は必ず "(ダブルクォーテーション)"
で囲んで記述します。
・ 数値を代入する
Range("B1").Value = 12345
整数や小数でも .Value
プロパティで代入可能です。
・ 日付を代入する
Range("C1").Value = #2025/07/27#
日付は #
で囲んで書くことで、正しく日付型として処理されます。
・ 数式を代入する
Range("D1").Formula = "=SUM(A1:B1)"
.Formula
を使えば、Excelの数式そのものをセルに入力することができます。
※ .Value
では計算された値が入力されます。
✅ 変数の値をセルに代入する方法
事前に取得・演算・入力されたデータを変数に格納し、それをセルへ代入することができます。
・ 例1:文字列変数の値をセルに出力
Dim userName As String
userName = "田中太郎"
Range("A2").Value = userName
・ 例2:計算結果をセルに代入
Dim price As Long
Dim quantity As Long
Dim total As Long
price = 500
quantity = 3
total = price * quantity
Range("B2").Value = total
・ 例3:日付型の変数をセルに出力
Dim today As Date
today = Date
Range("C2").Value = today
このように、変数に格納した値をそのままセルに渡すことで、代入処理が簡単になります。
✅ 複数セルに代入する処理(ループの活用)
ループ処理を使えば、複数のセルに対して値を一括で代入することが可能です。
・ 例1:1~10までの数値をA列に順番に代入
Dim i As Integer
For i = 1 To 10
Cells(i, 1).Value = i ' A列に出力
Next i
・ 例2:2次元配列の値を複数セルに一括代入
Dim data As Variant
data = Array(Array("田中", 90), Array("鈴木", 85), Array("佐藤", 88))
Dim i As Integer
For i = 0 To 2
Cells(i + 2, 1).Value = data(i)(0) ' 名前
Cells(i + 2, 2).Value = data(i)(1) ' 点数
Next i
このように、ループと配列を組み合わせることで、実務での表形式データ作成が効率化されます。
■ 値の代入先に数式や書式がある場合の注意点
セルに代入する前に、既に数式や書式が設定されていると、上書きされてしまう点に注意が必要です。
・ 対策1:元の数式を保持したい場合
代入先を .Value
ではなく .Offset()
でずらすなどして、結果のみを出力するセルを分けて管理すると安全です。
・ 対策2:事前に中身をクリア
Range("A1").ClearContents
Range("A1").Value = "新しい値"
これにより、書式を残したまま中身だけクリアしてから値を代入できます。
■ よくあるエラーと対処法
❌ セル指定のミス
Range(A1).Value = "NG" ' A1が文字列でない → エラー
🔍 対策: セルのアドレスは必ず文字列で記述します。
Range("A1").Value = "OK"
❌ 型のミスマッチによる代入失敗
Dim total As Integer
total = "合計" ' ← 型不一致
🔍 対策: 値に合わせて適切なデータ型で変数を宣言しましょう。
❌ オブジェクトの指定ミス
Worksheets("Sheet1").Cells(0, 0).Value = "NG" ' 行列番号は1から
🔍 対策: Cells
の行・列は1から始まります(0は無効)。
■ まとめ|VBAでのセル代入は基本であり最重要スキル
VBAでの「セルに代入する」操作は、画面上での結果出力・帳票作成・確認用データの表示など、あらゆる処理において使われる非常に重要な基本操作です。
・ 本記事のポイントをおさらい
"セル = 値"
の形式で簡単に代入できるRange
とCells
は状況によって使い分け- 文字列・数値・日付など、データ型に応じて代入処理を設計
- 変数を介した代入で柔軟な出力が可能に
- ループや配列との組み合わせで表形式出力もラクに
- エラーの原因は、型・セル参照・範囲指定などに注意
「セルに値を代入する」というシンプルな操作を正確にマスターすることで、VBAを使った自動化の土台が大きく強化されます。