みなさん、こんにちはケンケンです。
業務改善の基本とは何だと思いますか?
いろいろ答えはあるでしょうが、僕がこの問いに答えるとしたら
考えること!
だと思います。
どんなスキルを持っていても、頭の回転が速くても、結局考えなければ意味がないと考えます。
エクセルで言えば、関数を知っていても、VBAでコードが書けても、結局このスキルを使って何ができるのだろうか?
と日々考えていなければ宝の持ち腐れです。
個人的には、せっかく高いスキルを持っているのにそれをいかせない人が多い気がします。せっかく、できることがあるならどんどん考えて、アウトプットしていきましょう。
そして、足りない知識があるならインプットすれば良いのです。
覚えたことが何に使えるか常に考えて業務改善につなげていきましょう。
そして、今シリーズでは請求書作成を自動化することを目標としています。
今回もこの目標を突破するための基礎知識をどんどんご紹介していきますよ。
さて今回は、前回書いたコードの解説からしていきます。
具体的には、
- コードはどういう構造になっているのか
- 繰り返し処理
上記を見ていきます。
コードの読み方

1 2 3 |
Sub aaa() Range("A1").Value = "Hello World" End Sub |
前回上記のようなコードを書きましたね。
実行した結果、A1セルに「Hello World」と言う文字列が表示されました。
では、このコードを読み込んでいきましょう。
復習をかねて最初から進めていきます。
- まずVBEを起動させて
- 標準モジュールを作成
-
sub aaaと入力してEnter
上記のように入力すると、SubからEnd Subまで自動生成されます。
ちなみに、SubからEnd Subまでをプロシージャと呼びます。
続いてプロシージャ内のコードを読んでみましょう。
コツとしては、日本語に変換してみることです。
以下のコードを細かく見ていきましょう。
Range(“A1”).Value = “Hello World”
■セル範囲を指定するrangeオブジェクト
Range(“A1”).value
上記をみていきます。
rangeは、セルの範囲を指定するオブジェクトです。
オブジェクトという新しい言葉が出てきましたが、
これは「セルとかシートとか操作しようとするものの対象」くらいに覚えておけば十分です。
そしてrangeオブジェクトはセルの範囲を指定します。range(“A1”)はA1セルを指定していることになりますね。
ちなみに、セルを指定する際は、ダブルクォーテーションマークで囲います。
■オブジェクトの状態を表すプロパティ
次に、valueです。valueはプロパティと呼ばれるものです。
プロパティは、オブジェクトの状態を表すものだと解釈しておけば問題ないでしょう。
valueは直訳すれば「値」ですね。
ちなみにRange(“A1”)とvalueの間にある「.」は日本語に変換する際に「の」と訳すと読みやすくなります。
では、Range(“A1”).valueを日本語に変換してみましょう。
- Range(“A1”). →A1セルの
- value → 値
「A1セルの値」ですね。
驚くほど簡単な日本語に変換できました。
この調子でいきましょう。
■文字列はダブルクォーテーションで囲む
“Hello World”の部分は特に解説は必要ないと思いますが、ひとつだけ解説すると
文字列を表現する場合はダブルクォーテーションで囲ってください。
ダブルクォーテーションで囲わないと構文エラーになってしまいます。
初歩的なことですが、コードが多くなってくるとこのような初歩的な部分を失念して、1時間全く進まず、なんてこともよくあります。
僕は、1文字のミスを見つけるのに最高5時間を要したことがあります。
■「=」は数学のそれとは違う
Range(“A1”).Value = “Hello World”
「=」とありますが、これは数学のイコールとは意味合いが違います。
プログラミング用語で「代入演算子」と呼ばれるものです。
例えば
X = YであればYをXに代入するという意味です。
では、以下の場合は、どうなるでしょう。
前提条件としてYは1という数字を持っています。そこで以下を読み解いてください。
Y = Y + 1
いかがですか?
数学の世界だと、左辺が1で右辺が2となり「=」が成り立ちません。
しかし、プログラミングの世界だとまず右辺(Y+1)を計算して「2」という答えを用意します。
そして、その答えを左辺に代入します。
つまり、Yの値が前提条件の「1」から「2」に変わります。
わかりましたか?最初は混乱するかもしれませんが、上記のようなコードはこれからよく書いていくことになりますので、理解しておいてください。
上記を前提として今回のコード
Range(“A1”).Value = “Hello World”
をもう一度読んでみましょう。
- A1セルの値をHello Worldにする
ですね。いたってシンプルです。
ちょっとシンプルすぎるのでもう一段階、上記の解説を踏まえて変換してみます。
- Rangeオブジェクトを使ってA1セルを指定し、A1セルの状態(値)を代入演算子を使って「Hello World」に書き換える
こんな感じでしょうか。
どうでしょう。短いコードですが、たくさんの要素が盛り込まれていましたね。
でも、恐れる必要はありません。ひとつひとつ攻略していけば、VBAは必ずできるようになります。
今回のコードを色々変えて練習してみてください。
例えば、
A1セルのみではなくA1からA3を指定する場合はどうすれば良いか?
文字列ではなく数字を代入するにはどうするか?
など、試行錯誤しつつどんどん失敗してください。
とにかく手を動かさないと覚えられませんので。
For Nextで自動化してみよう
ここまで、コードの読み方を勉強してきました。
おそらくVBAを挫折する大きな原因のひとつとして、勉強を始めたばかりでは、あまり効果を感じられないことが上げれらるかと思います。
コードの読み方の勉強はおそらく退屈だったと思います。※重要なので先に紹介しました。
そこで、ここからはForNext構文を使って自動化の基本をお見せします。
まず、イメージを掴んでいきましょう。
イメージが掴めれば方向性が分かるので、これからの勉強の指標にはると思いますよ。
■For Nextは繰り返しに使う大事な構文
エクセルVBAを使うにあたって一番威力を発揮するのは何でしょうか。
僕は、繰り返し作業の効率化だと思います。
繰り返し作業が自在にできるようになると、実務が非常に楽になります。
それを、可能にするのがFor Next構文です。
これからForNextの威力をご紹介します。
まず、準備としてエクセルシート「Sheet1」のA列に以下のように国名を入力しておきます。
これからやることは、
- 日本からナイジェリア分のシートを追加して
- シートの名前をそれぞれの国名にし
- A1セルに国名を表示する
これを自動化してみます。
以下のコードをVBEに貼り付けてみてください。
1 2 3 4 5 6 7 8 |
Sub kunimei() Dim kuni For kuni = 2 To 7 Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = Worksheets("Sheet1").Range("A" & kuni) ActiveSheet.Range("A1").Value = Worksheets("Sheet1").Range("A" & kuni) Next End Sub |
貼り付けられましたか?
貼り付けられたら、「F5」で実行してみましょう。
できましたか?
上記のように、日本からナイジェリアのシートが作成され、A1セルにそれぞれの国名が入っていれば成功です。
お分かりかと思いますが、繰り返す対象の数は増やせます。
今回の例では、10国でも100国でも問題なくできますので、試してください。
なお、その時の注意点としては、
- 国名を増やしたら、その分コード3行目の「For kuni = 2 To 7」の「7」を「Sheet1」のA列の行数に合わせて変更してください。
- 追加されたシートは一度消してください。
以上がForNext構文による自動化の基本です。
どうですか?わくわくしませんか?
繰り返しが自在にできるようになると仕事が格段に楽になります。
そして、何よりできることの選択肢が増えます。
選択肢が増えると、どうすれば効率化できるか考え実行することができます。
このフローに入れれば、仕事で圧倒的な結果を出すこともできます。
みなさんもVBAをマスターして仕事で圧倒的な結果を出して下さい。
まとめ
今回は、
- コードの読み方
- ForNext構文の威力
をご紹介しました。
次回はForNext構文のコード内容を解説していきますのでお楽しみに。
請求書作成を自動化するための階段を一歩一歩上って行きましょう。
それでは、また次回お会いしましょう。
みなさん、こんにちはケンケンです。 エクセルVBA入門編も3回目になりました。 前回までの復習はできていますか。 [sitecard subtitle=関連記事 url=https://expenblog.com/43[…]
エクセルVBA入門編~請求書作成自動化への道~記事一覧
【エクセルVBA入門編①】VBAで何ができるのだろうか?【請求書自動作成の第一歩】
【エクセルVBA入門編②】めんどうな仕事はForNext構文で解決【請求書自動化の最重要構文】
【エクセルVBA入門編③】繰り返し作業はFor Next構文で完全自動化!【請求書作成自動化は目前!】
【エクセルVBA入門編④】自動記録を使い方とコード編集法を解説【請求書作成自動化への道】
【エクセルVBA入門編⑤】If Then構文で条件分岐をマスター【請求書自動化の最終ステップ】
【エクセルVBA入門編⑥】手順に沿って請求書を作成してみよう【請求書作成自動化最終章】
VBA以前の基本事項を復習したい方は以下を参考にしてください。
[請求書作成初級編②]エクセルを使いこなすための第一歩[入力規則・フィルター]
[請求書作成初級編③]エクセルを使いこなすための第一歩[完成&PDF化と整理の仕方]
[請求書作成中級編①]重要関数VLOOKUPの使い方を攻略しよう[関数の基礎]