VBA再入門
第3回.セルに数字や文字を入れる(RnageとCells)

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

第3回.セルに数字や文字を入れる(Rnageと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でも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を読んだらよいのか、少しだけ詳しく解説します。とにかくこれで、A1セルに、「おはよう!」と入る事がわかりました。

第9回.Rangeでのセルの指定方法
前回までに出てきたRangeの使い方は、Range("A1") このように書きくことで1つのセルを指定する場合でした。複数のセル範囲を指定する場合、矩形のセル範囲、行全体、列全体、特殊なセル範囲 これらの指定方法を見ていきましょう。複数のセル(矩形のセル範囲) 複数のセル(矩形のセル範囲、)を指定する場合のVBAの書き方です。

第10回.Range以外の指定方法(Cells,Rows,Columns)
Rangeの指定で、あらゆるセルおよびセル範囲は指定できるのですが、マクロで使う場合は、ちょっと使いづらい場合があります。"A1"や"B5"と言うような文字で指定するのでは何かと不便です、もっと、プログラムっぽい(笑)指定方法があります。

第11回.RangeとCellsの使い方
VBAではセルを指定する方法としてRangeとCellsがあります、RangeもCellsも、どちらもRangeオブジェクトでセルを指定するものです。どちらを使ったらよいのでしょうか、どう使い分けたらよいのでしょうか、実際のVBA記述では、RangeとCellsを使い分ける必要があります、RangeとCellsの使い方について解説をします。



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

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


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

ツイッターで出されたVBAのお題をやってみた|エクセル雑感(1月13日)
イベントプロシージャーの共通化(Enter,Exit)|ユーザーフォーム入門(1月13日)
Rangeオブジェクトの論理演算(差集合と排他的論理和)|VBA技術解説(1月10日)
イベントプロシージャーの共通化|ユーザーフォーム入門(1月7日)
コントロールの動的作成|ユーザーフォーム入門(1月6日)
Evaluateメソッド(文字列の数式を実行します)|VBA技術解説(1月5日)
エクスポート(PDF/XPS)|VBA入門(1月2日)
分析関数(OVER句,WINDOW句)|SQL入門(12月25日)
取得行数を限定するLIMIT句|SQL入門(12月21日)
外部ライブラリ(ActiveXオブジェクト)|VBA入門(12月21日)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.マクロって何?VBAって何?|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ひらがな⇔カタカナの変換|エクセル基本操作




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


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



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