第3回.セルに数字や文字を入れる(RnageとCells)
エクセルは、セルが基本単位です、
セルが縦横に集まってシートが出来て、
シートが集まってブックが出来ます、
今回より、その基本単位のセルの扱い方に進みます。
さっそく書いてみましょう。
sub 練習3
Enter
TAB
range("A1")="おはよう"
Enter

このようになっていますね、
では入力カーソルが、
Sub 練習3 〜 End Sub の間にある状態で実行F5
A1セルに、
おはよう
と表示されました。

このように、セルに文字を入れる場合は、
Range("ここにセルの番地を書く") = "文字"
これで、指定のセルに文字が入ります。
この時、セルの番地である、
A1
これは大文字で書くようにして下さい。
大文字で書くのは、
シートに数式を入れたとき、A1は大文字になりますよね、これと同じようにしたいからで、見易さの為です。
続けて書いていきます。
こんどは、
練習3の中に追加する形で書きます。
Range("A1") = "おはよう"
の下の行に、
range("A2")=12345
Enter

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

A2セルに12345と表示されます。
以上のように、セルに数字を入れるには、
Range("ここにセルの番地を書く") = 数字
これで、指定のセルに数字が入ります。
シートの数式と同じように、
文字を書くときは、"ダブルクオーテーションで囲む規則があります。
それ以外は、数字も文字も同じように扱えます。
ここまでは簡単だったかと思います。
本題はこれからです。
VBAでは、セルの書き方が多数あります。
エクセルの基本中単位ですから、いろんな書き方が用意されています。
では、プロシージャーを追加して、書き進めます。
sub 練習4
Enter
TAB
cells(3, 1)="こんばんは"
Enter
cells(4, 1)=54321
Enter

これを実行F5すると、

このように表示されます。
Cells(行数, 列数) = "文字"
Cells(行数, 列数) = 数字
先のRangeとちょっと違いますね。
Rangeでは、シートでのセル指定と同じように、
列記号行数
Cellsでは、
行数, 列数
このように指定します。
とても間違えやすいのですが、慣れてください、慣れるしかありません。
ただ、少しだけエクセルでは親切なところがあって、
Cells(行数, 列記号)
次のような書き方が出来ます。

これを実行すれば、

このような結果になります。
ただし、Cellsにおいて列記号での指定は補足的なものです。
これから他の人の書いたマクロを目にすることも多くなると思いますが、列記号での指定は限定的にしか使われません。
さて、
RangeもCellsも説明しました、これでセルの指定が終わりかというと・・・
もう少しだけあります、そして、ちょっと難しくなります。
ここまでは、1つのセルだけに値を入れました。
複数ノセルに値を入れたい時は・・・
さらに追加して書いていきます。
range("A6:C6")="一括入力"
Enter

実行結果は、

Rangeの中に指定するセル範囲は、シートでの計算式と同様に、
開始セル:終了セル
これでセル範囲を指定できます。
これは、シートの計算式でセル範囲を指定するときの書き方と同じ書き方になりますので理解しやすいはずです。
さらに、このような書き方もします。
range(cells(7,1),cells(7,3))="一括入力2"
Enter

実行結果は、

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の方が、後々見やすいだろうという事です。
※※※ まとめ ※※※
複数セル範囲を指定する時は、Range
移動しない固定セルを指定する時は、どちらでも良いがRangeの方が見やすい
今は、これで覚えてください。
今後も、セル指定はずーと出てきます、色々とでてきますので、都度解説します。
同じテーマ「マクロVBA再入門」の記事
第1回.マクロを書く準備をする(VBAとVBE)
第2回.マクロを書いて動かす(SubとF5)
第4回.セルの値を使って計算する(四則演算)
第5回.同じ計算を行数分繰り返す(For〜Next)
第6回.表の先頭から最終行まで繰り返す(ForとEnd(xup).Row)
第7回.セルの値によって計算を変える(Ifステートメント)
第8回.表範囲をまとめて消去する(OffsetとClearContents)
第9回.関数という便利な道具(VBA関数)
第10回.ワークシートの関数を使う(WorksheetFunction)
第11回.分からない事はエクセルに聞く(マクロの記録)
新着記事 ・・・新着記事一覧を見る
VBAを定型文で覚えよう|ExcelマクロVBA技術解説(3月26日)
VBAスタンダード試験対策まとめ|MOS VBAエキスパート対策(3月16日)
ユーザーフォームとメニューの操作|MOS VBAエキスパート対策(3月14日)
ファイルの操作|MOS VBAエキスパート対策(3月14日)
ユーザーフォームの各種イベント|Excelユーザーフォーム(3月13日)
レジストリの操作|MOS VBAエキスパート対策(3月12日)
変数と配列|MOS VBAエキスパート対策(3月12日)
Colorプロパティの設定値一覧|VBA技術解説(3月12日)
APIとOLEオートメーション|MOS VBAエキスパート対策(3月11日)
エラーへの対処|MOS VBAエキスパート対策(3月10日)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.ひらがな⇔カタカナの変換|エクセル基本操作
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.定数と型宣言文字(Const)|ExcelマクロVBA入門
9.とにかく書いて見よう(Sub,End Sub)|VBA入門
10.繰り返し処理(For Next)|ExcelマクロVBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。