エクセルマクロ・VBA入門 第3回: セルに値を入れる・消す

こんにちは、エクセル使いこなし隊 隊長の吉井良平です。

「ノンプログラマーのためのエクセルマクロ・VBA講座」も第3回目となりました。

*初回からやる方はこちら⇒「ノンプログラマーのためのエクセルマクロ・VBA講座:準備編

 

第3回目は、セルに値を入れたり、消したりする方法をマスターしましょう。

まだ基本的なところなので、あまり面白いプログラムはできませんが、今回も無理やり面白要素を足しています^^

セルに値を入れる

 

まずは、前回のようにビジュアルベーシックエディターを立ち上げて、適当な大きさで表示させてください。(下の図参照)

VBE大きさ調整

大体。このぐらいの大きさで

では、さっそく始めていきますね。

 

Rangeを使ってセルに値を入れる

セルに値を入れるやり方には2種類あって、まずは Range オブジェクトというのを使って値を入れてみましょう。

オブジェクトというと難しいので、ただ Range と覚えておいても大丈夫です。

Rangeは、レンジと読んで、範囲という意味です。

 

ビジュアルベーシックエディターに、次のように入力してから実行ボタンを押してください。

Rangeを使った入力1

文字は自分の好きな文字を入れてくださいね。

そうすると、エクセルのシートのB2のセルに、「この文字がB2のセルに入るぜ!」と出てきましたよね。

Range入力例2

B2のセルに値が出てきた

こんな感じで、セルに値を入れるためには、

Range(”セル番号”)= そのセルに入れたい値

というように、エクセルに命令します。

 

ここでのポイント

Rangeを使う場合には、セル番号をダブルコーテーションで囲みます。

で、=(イコール)より右側の値を、そのRangeに入れるということですね。

 

Range(“B3”) = “こんにちは”

というVBA(プログラム)を日本語に訳すと、「セルB3は、”こんにちは”です」ということになります。

日本語に訳すと、余計分かりにくいかもしれません(?)が、値を入れたいセルを左側に書いて、入れる値を右側に書いて、その間を=でつないでいます。

基本的に、VBAは日本語の順番と同じなので、日本語のイメージで英単語を並べていけば大丈夫です。

(あとは、=でつなぐ場合と、.(ピリオド)で続ける場合、,(カンマ)で並列にする場合と、3種類の書き方があるので、場合ごとに使い分けすることができたら完璧です。)

 

前回やったメッセージボックスと同じように、右側に入れる値は、文字列の場合はダブルコーテーションで囲んで、数字の場合はそのままの数字になります。

 

練習しましょう

英語でもそうですが、プログラミング言語でも使ってるうちに、なんとなく分かってきます。

入れる値は何でも良いので、とりあえず10件ぐらい、Rangeを使って値を入れてみましょう。

 

(入力例)

Range(“B3”) = “タラちゃんです~”

Range(“B4”) = “バ~ブ~”

Range(“B5”) = “それはイクラちゃんでしょ!”

Range(“B6”) = “ハーイー”

Range(“B7”) = 1

Range(“B8”) = 1 + 1

Range(“B9”) = 3 – 1

Range(“B10”) = 3 * 2

Range(“B11”) = 6 / 2

まぁこんな感じで、適当に値を入れてみてください^^

 

Cellsを使って値を入れる

セルに値を入れる方法にはもう1つあって、Cellsプロパティを使う方法があります。

これもプロパティというと分かりにくいので、Cellsとだけ覚えておけば大丈夫です。

Cells というのはそのままで、セルという意味ですね。

 

こんどは、次のように入力して実行ボタンを押してみてください。

(Sub セルズ の部分です)

Cells入力例1

Cellsを使った入力

そうすると、F2のセルに「2行目の6列目だぜ!」と出てきましたよね。

Cells入力例2

2行目の6列目に値が出てきた

こんな感じで、Cellsを使ってセルに値を入れるためには、

Cells(行番号,列番号)= そのセルに入れたい値

というように、エクセルに命令します。

 

ここでのポイント

Cellsを使う場合には、セルの位置を、行番号と列番号とで指定します。行番号と列番号の間は、,(カンマ)で区切ります。

行と列のどっちが先だったかな・・・と思い出す場合には、「行列」という言葉を思い出せば大丈夫です。行が先です。

あとで紹介しますが、R1C1という言葉もあるので、Row(行)が先でColumn(列)が後、と覚えても大丈夫です。

 

何で Cells プロパティを使うのか?

Rangeの方では、普段エクセルで見慣れた A1、B2・・・といったセル番地を使うので、分かりやすいですよね。

Rangeだけ覚えておけば良いじゃん、と思うかもしれませんが、実際には Cells の方が使い勝手が良いのです。

 

後々、プログラムを作っていくと、「すべての行に対して、この処理をする」ということをよくやるようになります。

Cellsでセルを指定すると、Cells(1,1) などと、数字で指定してあるので、カッコの中の数字を変更したり、足し算したりしていくだけで、次のセルの処理ができます。

Rangeで指定していると、A1 という文字に対しては、足し算・引き算ができませんよね。

なので、後々のために、Cellsを使ったセルの指定方法にも慣れておきましょう。

 

R1C1形式での表示

Cellsでセル番地を指定する際に、列を数えるのって面倒・・・なのです。

大きな表になって、列番号が目で見て数えられない場合は、エクセルの表示形式をR1C1形式にしてしまうと数えなくて良いので、楽ちんです。

R1C1形式というのは、列の番号をA~のアルファベットではなく、1~の数字で表す表示方法のことです。Row(行)とColumn(列)を数字で表すということですね。

 

メニューのファイル⇒オプションを選択して、数式のところで「R1C1参照形式を使用する」にチェックを入れると、列の表示が1~の数字に変わります。

セル参照形式の変更

R1C1にチェック

R1C1形式での表示

列番号が数字で表示された

また列番号をABCDEのアルファベットに戻したい場合は、先ほどのR1C1形式のところのチェックを外せば元に戻ります。

 

練習しましょう

またまた、入れる値は何でも良いので、とりあえず10件ぐらい、Cellsを使って値を入れてみましょう。

(入力例)

Cells(3,6) = “イヤ~ン”

Cells(4,6) = “バカ~ン”

Cells(5,6) = “じぇじぇじぇ!”

Cells(6,6) = “ギョギョギョ!”

Cells(7,6) = 100

Cells(8,6) = 100 + 123

Cells(9,6) = 300 – 1

Cells(10,6) = 313 * 21

Cells(11,6) = 999 / 333

まぁこんな感じで、適当に値を入れてみてください^^

 

セルの値を消す

 

セルの値を消すには、Clearという命令を使います。

Clearを使うと、書式(フォント、罫線など)も全部消えてしまうので、元々の書式を残したい場合は ClearContents という命令を使います。

RangeでもCellsでもどちらでも良いので、セルを指定しておいて、ピリオドの次に Clear と書きます。

セルを指定してピリオドを入力したら、いくつか入力候補が出てくるので、スペル(綴り)は適当に覚えておいても大丈夫です。

試しに、セルに適当な書式を設定しておいて、ClearとClearContentsを実行してみます。

Clearの命令

書式を設定して、2種類のクリアをする

クリアの方は背景色が無くなっていますが、クリアコンテンツの方は背景色が残ったまんまですよね。

1909

請求書など、元々書式設定をしてあるフォーマットに値を入れたり消したりすることが多いので、どちらかというと ClearContentsの方で覚えておいてください

 

値を消すのに、一つ一つのセルを指定して・・・というのは面倒ですよね。

次回は、範囲を指定する方法についての講習です!

 

まとめ

  • セルに値を入れるには、Rangeオブジェクトか、Cellsプロパティを使います。
  • Rangeの場合は、(“A1”)のように、セル番地をダブルコーテーションで囲んだ形で、セルを指定します。
  • Cellsの場合は、(1,1)のように、行番号と列番号でセルの位置を指定します。
  • Cellsの列番号が分かりにくい場合は、R1C1形式で表示すると分かりやすくなります。
  • セルの値をクリアするには、セルを指定して、.Clear もしくは .ClearContents と命令します。

 

次回から、少し実用的なプログラムが書けるようになります。このまま続けていきましょう!

次は、⇒ エクセルマクロ・VBA入門 第4回 範囲を指定する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

昭和48年広島県生まれ。現在も広島に住んでいます。 趣味は音楽鑑賞(邦楽、洋楽問わず、クラシック、童謡も)、マンガです。エクセルを効率的に使う方法を紹介して、あなたのお役に立ちたいと思っています。