さあVBA書くぞ~ってなって
まず初めに変数を書いていきます
ってよくあるけど何!?なんで!?
とよく思ってました。
同じ事思ってる人は
この記事を参考にしてみてください!
専門的な説明というより
ざっくりとした意味やポイントを説明します!
記事で説明しきれなかった情報もあります!
目次
変数とはどんなものか?
変数は「箱」のイメージ
変数はデータを入れる為の箱というイメージです!
1,2,3 の様な数字のデータだったり
昨日、今日、明日の様な文字のデータだったり
Excelシートについてのデータだったり。
変数の書き方
好きな箱の名前を付けて
その箱の種類を決める感じですね!
例えば
「カボチャ」という文字列データを
「name」という箱に入れる場合
1 2 3 4 5 |
'「name」って箱に文字列データ入ります Dim name As String '「name」の箱に「カボチャ」って文字列データ入れました name = "カボチャ" |
箱の種類はたくさんあるので
ネットで「データ型 vba」とかで検索して
調べて見て下さい!
箱の種類というか
データの種類って言った方が良かったか…!
なんで変数を書くの?
変数を書くメリット
いや、どゆこと‥?
と思うでしょう!
例えば「カボチャ」というデータを
プログラム内で5か所使っていたとしましょう!
1 2 3 4 5 6 7 |
Sub main() Range("A1").Value = "カボチャ" Range("A2").Value = "カボチャ" Range("A3").Value = "カボチャ" Range("A4").Value = "カボチャ" Range("A5").Value = "カボチャ" Sub End |
一応↑は
A1~A5セルに「カボチャ」と入力させるVBAです!
ここで
やっぱり「リンゴ」に修正して~!
って言われたらどうする!?
1つ1つ書き換えるしかないですよね。。
でも!もし「カボチャ」を箱に入れて使うと…
1 2 3 4 5 6 7 8 9 10 |
Sub main() Dim name As String name = "カボチャ" '←ここをリンゴに変えるだけ Range("A1").Value = name Range("A2").Value = name Range("A3").Value = name Range("A4").Value = name Range("A5").Value = name Sub End |
たった1か所の書き換えだけで済む!
「name」という箱を活用する事で
データの管理がしやすくなるのです!
変数の書き間違えを知らせる1文
この1文は
「その箱あなた作ってませんよ~!」
と教えてくれる文です!
例えばさっきの「name」という箱を
「ame」って書き間違えたら!?
1 2 3 4 5 6 7 8 9 10 |
Sub main() Dim name As String name = "カボチャ" Range("A1").Value = name Range("A2").Value = name Range("A3").Value = ame '←書き間違えに気づかず Range("A4").Value = name Range("A5").Value = name Sub End |
これをそのまま実行すると
「ame」という箱を作ってないにも関わらず
エラーは起こらず、A3セルだけ何も入力されずに
処理が完了します!
こうなった場合
意図してない結果を見て初めて気づく事になります!
「あれ?何でA3セルにカボチャって出てないんだ?」
これを防ぐために1行目に
「Option Explicit」と書いておくと
実行する前に「ame」って箱作ってないよ!
って教えてくれて気づく事が出来ます!
1 2 3 4 5 6 7 8 9 10 11 |
Option Explicit '←1行目に書いておく Sub main() Dim name As String name = "カボチャ" Range("A1").Value = name Range("A2").Value = name Range("A3").Value = name Range("A4").Value = name Range("A5").Value = name Sub End |
VbaForYoutube
YouTube動画で
最後書き終わったVBAになります!
気になる方は動画をご覧下さい♪
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Option Explicit Sub main() Dim wsList As Worksheet '①「リスト」シートってどれ? Dim intListCount As Integer '②シート名の「数」は? Dim intLastSheet As Integer '③シートの一番後ろって何番目? Dim wsTemplate As Worksheet '④「テンプレート」シートってどれ? Dim strSheetName As String '⑤「シート名」ってどれ? '1.「テンプレート」シートを複製する '1-1.「リスト」シート内の「シート名」の数を数える '①「リスト」シートってどれ? '②シート名の「数」は? '1-2.シート1番後ろを指定する '③シートの一番後ろって何番目? '1-3.「テンプレート」シートを複製する '④「テンプレート」シートってどれ? '2.複製したシート名を変更する '2-1.「リスト」シート内の「シート名」の値を取ってくる '⑤「シート名」ってどれ? '2-2.1-3で複製したシート名を2-1に書き変える '3.「リスト」シートのA1セルにカーソルを置く End Sub |