みなさん、こんにちはケンケンです。
みなさんの中にはこういった方いませんか?
VBAで繰り返し構文をうまく使いたいんだけど、
コツが分からなくて結局手作業を選んでいる。
思い当たる節がありませんか。
分かります。
結局、自動化したい作業でも繰り返し構文がうまくプログラム上で表現できなければ、
手作業しているのと変わりありませんね。
そこで、今回はそんなみなさんのために、僕がForNext構文を使う時の手順を紹介したいと思います。
っとその前にForNext構文の書き方を簡単に動画にまとめている記事もありますので、
興味がある方はそちらもご覧ください。
みなさん、こんにちはケンケンです。 今回はExcelVBAのコードの書き方について解説します。 今までも書き方のコツを紹介してきましたが、いまいちピンとこないというお声をいただきました。 [siteca[…]
VBEを起動してコードを書く方法
まず、VBEを起動してコードを書く準備をしましょう。
分からない方は、以下の記事を参考にしてください。
こんにちはケンケンです。 みなさん、エクセルVBAを使ったことがありますか? 存在は知っている方が多いかと思いますが、実際に使ったことがあり実務で行かせている方はなかなかいないのではないでしょうか。 V[…]
ForNext構文の書き方
ForNext構文の書き方は、以下の記事で紹介していますので、そちらを参考にしてください。
書き方自体は問題ないという方は読み飛ばしてしまいましょう。
みなさん、こんにちはケンケンです。 業務改善の基本とは何だと思いますか? いろいろ答えはあるでしょうが、僕がこの問いに答えるとしたら 考えること! だと思います。 ど[…]
ForNext構文を書くときの手順
ここからは、僕が普段ForNext構文を書くときに実際行っている手順をお伝えします。
▶ForNext構文の手順
- なんでもいいから動くコードを書く
- ひとつ目の処理を書く
- カウント変数を設ける
- For~Nextの骨格を書く
- ②の処理をForとNextの間にコピペする
- ②の処理の内、変数に変更する部分を抜出し変更する
- 最終行を取得する(必要があれば)
上記のような手順で処理しています。
以下のような参考例をあげて説明していきます。
具体的にはA列に記載されているデータの文字数をB列に書き出すコードを書いていきます。
なんでもいいから動くコードを書く
まず、コードが書けずに行き詰っている人の原因NO1は「何も書かない」ことだと思います。
PCの前でフリーズしてしまい、結果何も思い浮かばずあきらめてしまうのです。
コードは書かなければ何も始まらないので、なんでもいいから動くコードを書きましょう。
すべてはここからです。
▶てきとーなコード
Sub nantoka() Range("B2").Value = 100 End Sub
B2セルに数字の100が記入されるコードを書いてみました。
特に意味はありません。
今日初めて書くコードなので動いてくれればめっけもんです。
それでは、実行してみましょう。
B2セルに値が入りましたね。
こんなの簡単すぎると思ったかもしれませんが、これは重要なステップです。
先ほども言いましたが、発生した課題に対して1行でもコードが書ける人はなかなかいません。
最初の1行が肝心です。たとえ直接これからやろうとすることと関係なくてもとにかく書きましょう。
ひとつ目の処理を書く
晴れててきとーなコードが書けたので、次に行きましょう。
ひとつ目の処理を書いていきます。
行う処理は、B列にA列の文字列の文字数を書き出すことでした。
それをB2セルだけで実現させます。
▶ひとつ目の処理①
Sub nantoka() Range("B2").Value = Range("A2").Value End Sub
ここでも、いきなり完成させようと焦ってはいけません。
まず、B2にA2の値を代入します。
できたら次のステップに行きます。
▶ひとつ目の処理②
Sub nantoka() Range("B2").Value = Len(Range("A2").Value) End Sub
文字数を数える関数であるLen関数を使います。
分ける作業は地味ですが処理を分けることによってエラーが起こったときに、
どこで起こったか分かり易くすることができます。
Len関数の使い方は以下の記事で確認できます。
みなさん、こんにちはケンケンです。 今回は、RANDBETWEEN関数を使ってパスワードを作ってみます。 セキュリティ上の安全性を高めるために、数字とアルファベットを含めた文字から選択できるようにし、さらに8[…]
実行結果は以下の通りです。
カウント変数を設ける
繰り返し処理をする際に必ず必要なのはカウント型の変数です。
このタイミングで変数の宣言をしておきましょう。
▶カウント変数を用意する
Sub nantoka() Dim cnt Range("B2").Value = Len(Range("A2").Value) End Sub
For~Nextの骨格を書く
変数の宣言ができたらForNext構文の骨格を書きます。
▶ForNext構文の骨格を書く
Sub nantoka() Dim cnt For cnt = 2 To 8 Next Range("B2").Value = Len(Range("A2").Value) End Sub
繰り返し構文が書けない人の特徴は、いっきにコードを書き切ろうとしてしまうところです。
まず、For~Nextまで骨格を書きます。ちなみに範囲は2行目から8行目としています。
ひとつ目の処理をForとNextの間にコピペする
骨格が書けたらひとつ目の処理をForとNextの間にコピペします。
コピペの仕方も手順を追ってお伝えします。
▶コピペの手順
- コピペしたい処理(ひとつ目の処理)を範囲選択する
- 選択した状態で「Tab」でインデントをつける
- Ctrl+Xで切り取る
- ForとNextの間に貼り付ける
それでは、ひとつずつ解説します。
コピペしたい処理(ひとつ目の処理)を範囲選択する
選択した状態で「Tab」でインデントをつける
この時点でインデントをつけておきましょう。
Ctrl+Xで切り取る
ForとNextの間に貼り付ける
コピペした処理の内、変数に変更する部分を抜出し変更する
ここまででForとNextの間にコードを貼り付けることができました。
次は、貼り付けたコードの内、変数に変更する部分を見つける作業が必要です。
変数に変更する部分は、行数に該当する部分ですね。
▶変数に変更する
Sub nantoka() Dim cnt For cnt = 2 To 8 Range("B" & cnt).Value = Len(Range("A" & cnt).Value) Next End Sub
行数を示す「2」が「 & cnt」に変更されていることに注目してください。
さあ、この状態まで来たら完成です。
コードを実行して繰り返し処理ができていることを確認しましょう。
最終行を取得する(必要があれば)
最後にデータ量が動く場合は、最終行を取得します。
最終行の取得方法は以下の記事で詳しく紹介していますのでご確認ください。
みなさん、こんにちはケンケンです。 エクセルVBA入門編では、請求書作成を自動化してみました。 今回は、入門編でご紹介しきれなかったテクニックについて解説していきます。 入門編で作ったツールをカスタマイ[…]
まとめ
いかがでしたか。
プログラミングを学ぶ意欲はあるけどなかなか形にならない人は、
コードを書く量が少ない傾向にあります。
今回ご紹介した内容で一番重要なのは、「なんでもいいから動くコードを書く」の箇所です。
とにかくコードを書いていればいずれ出来るようになります。
出来ない人は書いてない人です。
書いて書いて書きまくると光が見えてきます。
最後に請求書作成自動化を解説した記事をご紹介しますので良かったらご覧ください。
それでは、また次回お会いしましょう。
みなさん、こんにちはケンケンです。 今回はVBA入門編の6回目となります。突然ですが、本編を進める前にこの記事にたどり着いてくれた方へプレゼントです。以下でForNext構文の書き方を動画(音声なし)でご紹介しているので[…]
おすすめ記事
【Python基礎編】プログラミング初心者がPythonを学んだ方が良い理由【インストールから簡単なプログラムまで】
[エクセルVBA]PDF管理で資料管理を効率化![フォルダに自動で格納する方法]
【業務改善】伝わるマニュアルの作り方【生産性がアップします】