VBA再入門
セルに数字や文字を入れる(RangeとCells)

マクロが覚えられないという初心者向けに理屈抜きのやさしい解説
最終更新日:2021-03-14

第3回.セルに数字や文字を入れる(RangeとCells)


エクセルは、セルが基本単位です。
セルが縦横に集まってシートが出来ていて、シートが集まってブックが出来ています。


今回からは、マクロVBAで、この基本単位のセルの扱い方をやっていきます。
以下で、Enterと書いているのは、Enterキーを押すという意味です。

セルに文字を入れる

さっそく書いてみましょう。

sub 練習3
Enter
TAB
range("A1")="おはよう"
Ente
r

Excel マクロVBA サンプルコード

このようになっていますね、
では入力カーソルが、
Sub 練習3 ~ End Sub の間にある状態で実行F5

A1セルに、
おはよう
と表示されました。

Excel マクロVBA 実行結果

このように、セルに文字を入れる場合は、

Range("ここにセルの番地を書く") = "文字"

これで、指定のセルに文字が入ります。
この時、セルの番地である、
A1
これは大文字で書くようにして下さい。
大文字で書くのは、
シートに数式を入れたときA1は大文字になりますよね、これと同じようにしたいからで見易さの為です。

セルに数字を入れる

続けて書いていきます。
こんどは、
練習3の中に追加する形で書きます。

Range("A1") = "おはよう"
の下の行に、
range("A2")=12345
Enter


Excel マクロVBA サンプルコード

こうなりましたね。
=の前後は、半角の空白を入力しなくても、勝手に前後に半角の空白が入って見やすくなります。
また、
何も書かれていない行が出来ますが気にしなくて大丈夫です。
何も書かれていない空白行は、VBAでは何の影響もなく、空白行があっても無くても動作に違いはありません。

マクロVBAを実行

それでは、実行F5

Excel マクロVBA 実行結果

A2セルに12345と表示されます。
以上のように、セルに数字を入れるには、

Range("ここにセルの番地を書く") = 数字

これで、指定のセルに数字が入ります。
シートの数式と同じように、
文字を書くときは、"ダブルクオーテーションで囲む規則があります。
それ以外は、数字も文字も同じように扱えます。

ここまでは簡単だったかと思います。
本題はこれからです。
VBAでは、セルの書き方が多数あります。
エクセルの基本の単位ですから、いろいろな書き方が用意されています。

RangeとCells

では、プロシージャーを追加して書き進めます。

sub 練習4
Enter
TAB
cells(3, 1)="こんばんは"
Enter
cells(4, 1)=54321
Enter


Excel マクロVBA サンプルコード

これを実行F5すると、

Excel マクロVBA 実行結果

このように表示されます。

Cells(行数, 列数) = "文字"
Cells(行数, 列数) = 数字

先のRangeとちょっと違いますね。

Rangeでは、シートでのセル指定と同じように、
列記号,行数
Cellsでは、
行数, 列数
このように指定します。
とても間違えやすいのですが、慣れてください、慣れるしかありません。

ただ、少しだけエクセルでは親切なところがあって、
Cells(行数, 列記号)
このような書き方が出来ます。

Excel マクロVBA サンプルコード

これを実行すれば、

Excel マクロVBA 実行結果

このような結果になります。
ただし、Cellsにおいて列記号での指定は補助的なものです。
これから他の人の書いたマクロを目にすることも多くなると思いますが、列記号での指定は限定的にしか使われていません。

セル範囲(複数セル)に一括入力

さて、
RangeもCellsも説明しました、これでセルの指定が終わりかというと・・・
もう少しだけあります、そして、ちょっと難しくなります。

ここまでは、1つのセルだけに値を入れました。
複数のセルに値を入れたい時は・・・
さらに追加して書いていきます。

range("A6:C6")="一括入力"
Enter


Excel マクロVBA サンプルコード

実行結果は、

Excel マクロVBA 実行結果

Rangeの中に指定するセル範囲は、シートでの計算式と同様に、
開始セル:終了セル
これでセル範囲を指定できます。
これは、シートの計算式でセル範囲を指定するときの書き方と同じ書き方になりますので理解しやすいはずです。

さらに、このような書き方もします。
range(cells(7,1),cells(7,3))="一括入力2"
Ente
r

Excel マクロVBA サンプルコード

実行結果は、

Excel マクロVBA 実行結果

Range(開始セル, 終了セル) = "文字"
Range(開始セル, 終了セル) = 数字

これで、開始セルから終了セルの矩形(四角)の範囲に値が一括入力できます。

開始セル、終了セルの指定は、
Rangeの中に書くセル指定は、RangeでもCellsでも、どちらでも問題ありません。

Range(Cells(7, 1), Cells(7, 3)) = "一括入力"
Range(Range("A7"), Range("C7")) = "一括入力"
Range(Cells(7, 1), Range("C7")) = "一括入力"
Range(Range("A7"), Cells(7, 3)) = "一括入力"


上記のどれでも、同じ意味で同じ動作となります。
セルの指定方法は、数限りなくあります。
本当にたくさんあるのです。
ですが、ここで取り上げた書き方だけ覚えれば十分です。
これ以上の、複雑な指定方法を覚える必要はありません。

それでは、そもそも、
RangeとCellsのどちらを使えば良いのか・・・

Range("A6:C6") = "一括入力"
Range(Cells(7, 1), Cells(7, 3)) = "一括入力2"

「これなら、上の指定の方が簡単だよね!」
その通りなのですが、マクロをいろいろ書いていくと、上のRangeだけの指定では都合が悪い場合が出てきます。
その為にも、今のうちに基本中の基本である、セルの指定については、しっかりと覚えてください。

Rangeは、範囲の意味の英単語です。
従って、範囲を指定する最後の一括入力のようなセル範囲を指定する場合は、Rangeでしか書くとが出来ませんので、当然Rangeを使います。
それ以外で、単一のセルを指定する場合ですが、
基本はCellsです。
ただし、シート上で今後移動する可能性の少ない固定位置のセルを指定する時は、Rangeも使います。
つまり、このセルに決まっている、セル位置を明確にしたい場合です。
そのような場合は、セル番地を文字で指定できるRangeの方が、後々見やすいだろうという事です。

「セルに数字や文字を入れる」のまとめ

基本は、Cells
複数セル範囲を指定する時は、Range
移動しない固定セルを指定する時は、どちらでも良いがRangeの方が見やすい

今は、これで覚えてください。
今後も、セル指定はずーと出てきます、色々とでてきますので、都度解説します。

ExcelマクロVBA入門の対応ページ

第8回.セルに文字を入れるとは(Range,Value)
・前回書いたVBAコード ・セル番地ついて ・= 記号について ・値はValue ・オブジェクトとは、プロパティとは ・セルに文字を入れるとは

第9回.Rangeでのセルの指定方法
・複数のセル(矩形のセル範囲) ・列全体 ・行全体 ・名前定義のセル範囲 ・特殊な指定方法 ・マクロVBAで良く使う書き方

第10回.Range以外の指定方法(Cells,Rows,Columns)
・Cells(行番号, 列番号) ・Rows(行番号) ・Columns(列番号) ・RangeとCellsの関連記事

第11回.RangeとCellsの使い方
・RangeとCellsの基本的な使い分け方 ・固定セル(固定位置)の指定 ・Rangeに変数は使わないようにします ・1つの(VBAで位置を変化させる)セルを指定する場合 ・セル範囲(複数セル)を指定する場合 ・複数行全体、複数列全体の指定 ・RangeとCellsの使い分け方のまとめ ・RangeとCellsの基本の関連記事 ・RangeとCellsの応用の関連記事



同じテーマ「マクロVBA再入門」の記事

第1回.マクロを書く準備をする(VBAとVBE)
第2回.マクロを書いて動かす(SubとF5)
第3回.セルに数字や文字を入れる(RangeとCells)
第4回.セルの値を使って計算する(四則演算)
第5回.同じ計算を行数分繰り返す(For~Next)
第6回.表の先頭から最終行まで繰り返す(ForとEnd(xlUp).Row)
第7回.セルの値によって計算を変える(Ifステートメント)
第8回.表範囲をまとめて消去する(OffsetとClearContents)
第9回.関数という便利な道具(VBA関数)
第10回.ワークシートの関数を使う(WorksheetFunction)
第11回.分からない事はエクセルに聞く(マクロの記録)


新着記事NEW ・・・新着記事一覧を見る

抜けている数値を探せ|エクセル雑感(2022-07-01)
.Net FrameworkのSystem.Collectionsを利用|VBA技術解説(2022-06-29)
迷路ネコが影分身の術を体得したら…|エクセル雑感(2022-06-27)
迷路にネコが挑戦したら、どうなるかな…|エクセル雑感(2022-06-26)
サロゲートペアに対応した自作関数(Len,Left,Mid,Right)|エクセル雑感(2022-06-24)
「マクロの登録」で登録できないプロシージャーは?|エクセル雑感(2022-06-23)
オブジェクトのByRef、ByVal、Variant|エクセル雑感(2022-06-22)
コメントから特定形式の年月を取り出す|エクセル雑感(2022-06-19)
4,9を使わない連番作成|エクセル雑感(2022-06-17)
連番を折り返して出力|エクセル雑感(2022-06-16)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.Excelショートカットキー一覧|Excelリファレンス
7.マクロって何?VBAって何?|VBA入門
8.並べ替え(Sort)|VBA入門
9.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ