広告

【プログラミング入門】【VBA】3日目 実行ボタンとプログラムの書き方

2022.10.10更新

ExcelVBAでプログラミング入門のタイトル画像になります

お仕事などでお馴染みの表計算ソフト、エクセルに付属しているExcelVBA(エクセルブイビーエー)というプログラミング言語を使って初心者・入門者向けにプログラミングのキホンを解説していきます!

ExcelVBAができるようになれば業務内容によってはボタン一つで大幅な業務効率化ができる他に、普段のエクセルの使い方も段違いにレベルアップする事ができます!

ベテランの方も新人さんも興味のある方はぜひ挑戦してみてください!

プログラムの基本

プログラムの基本は

(1)上から順番に
(2)条件で分かれ道
(3)繰り返し

この3つでできております。

まずは「(1)上から順番」に実行されるプログラムを書いてみましょう!

ExcelVBAプログラミングのルール

サンプルプログラムのマネをしながら

半角で大文字・小文字を間違えないように

書いていきましょう!

もう少し細かく説明すると

■こんなのが大丈夫です■

〇半角、英数、大文字、小文字・・・ABCDE~VWXYZ abcde~vwxyz 0123456789

■こんなのがダメです■

全角大文字・小文字・・・ABCDE~VWXYZ abcde~vwxyz 0123456789

正しい空白・正しい改行

小さな空白はスペースキー

大きな空白はTABキー

新しい行への改行(次の行へいくこと)はEnterキー

全角スペースはダメ!エラーになります!

実行ボタンを作ろう!

前はプログラム編集画面から直接「f5」キーで実行しましたがせっかくなのでエクセル画面から実行できるように実行ボタンを設置してみたいと思います。

「2日目 最初の設定と実行、エラーの消し方」で作ったファイルを開いて「開発」タブから上部メニューの「挿入」というトコロを選択してください。

VBA実行ボタンの作り方の説明画像1

下に展開されたメニューの一番左上がボタンになるので選択します。

VBA実行ボタンの作り方の説明画像2

カーソルが細い十字へと変わりボタン作成待ちになるのでボタンを設置したい場所でクリックします。

VBA実行ボタンの作り方の説明画像3

「マクロの登録」画面が表示されますので、一番上の「test」というのを選択してOKしてください。(この「test」が前回作ったプログラムになります。プログラム上で「test」の部分を他の名前に変更すればそのプログラム名が表示されます!)

VBA実行ボタンの作り方の説明画像4

ボタンができました!

VBA実行ボタンの作り方の説明画像5

作った瞬間はボタンの大きさなどを変更できる編集状態になるので、どこか他の場所の適当なセルを選択して編集状態を解除してください。(後からでもボタン上で右クリックでボタンのサイズ、設置場所など変更できます!)

それではボタンを押してみましょう!

VBA実行ボタンの作り方の説明画像6

前回と同じく「hello world!!!」と表示されれば成功です!

※次回からプログラムの編集をしたい時はボタン上を右クリック→マクロの登録→プログラムを選択→右側の編集をクリック、という手順からもプログラムを編集できるようになります!

では準備できましたでしょうか?いよいよプログラミングしましょう!

初プログラミング!

■3日目 プログラム1■


'3日目 プログラム1

Sub test()
	MsgBox "hello world!!!"
End Sub

■実行結果■

VBA,MsgBoxでhello worldを表示した結果画像1

hello world!!!

とでれば成功です!

カタチ

作文の題名を書くときに頭に3マス空けて書くようにExcelVBAにも決まったカタチがあります!


Sub test()

	'ここにプログラムを書いていきます。

End Sub

これが決まったカタチになります。今からコメントのトコロにプログラムを書いていきます。難しく考えずにそのまま覚えちゃいましょう!

「test」の部分がプログラム名になりますのでここは自分の好きな名前をつけて大丈夫です。

プログラムは見やすく!

次の画像のような空白部分をインデント(字下げ)と言います。

VBAプログラムを書く時のインデントの説明画像

これはプログラムを読みやすくする為のもので一般的にタブキーを使ってインデントを行います。

ぶっちゃけ別にいれなくても良いのですが、読みにくいプログラムはエラーを引き起こす原因になったりもするのでスナオに書いてある通りにプログラミングしましょう!

MsgBox(メッセージボックス)命令

■プログラム1の説明に戻ります!■


MsgBox "hello world!!!"

この命令を「MsgBox」命令っていいます!文字や数字をウィンドウのカタチで画面に出す命令です。「"」チョンチョンの中に画面に出したい文字や数字を入れます!

命令の事を正しくは関数(かんすう)って言ったりします!

「関数」という言葉だと関数をまだ習っていない方はわかりづらいと思いますので自作関数を作るまではしばらく「命令」という言葉を使って説明したいと思います。

※通常のエクセル関数とは別のものになります!


MsgBox "こんにちは!"

表示するメッセージの部分はひらがなでも大丈夫です。

■一行コメント「'」■

プログラムの途中でコメントなどを入れたい時は「'」この点の後に入れます!改行はできないので一行で入れます!メモ書きみたいな部分ですね。

■お名前■

プログラムでよく使う記号などの名前です。

「"」・・・ダブルクウォーテーション

「'」・・・シングルクウォーテーション

「:」・・・コロン

「;」・・・セミコロン

「*」・・・アスタリスク

「/」・・・スラッシュ

「>」・・・大なり

「<」・・・小なり

「&」・・・アンパサンド

なんとなーく覚えてれば大丈夫です!

なれないウチは大変ですが「"」チョンチョンなどの細かな記号を書き忘れただけでエラーになるので、ゆっくり落ち着いてプログラミングしてください!

広告

エクセル画面に結果を表示する

最初はエクセル画面に結果を表示する命令をいくつか学びましょう。

Range(レンジ)命令

■3日目 プログラム2■


'3日目 プログラム2

Sub test()
	Worksheets("Sheet1").Range("B2").Value = "おはよう!"
End Sub

■実行結果■

VBA,Range命令を使った基本のプログラムの説明画像

■説明■

エクセル画面に直接結果を表示する「Range」命令です。


Worksheets("シートの名前").Range("セルの位置").Value = "メッセージ"

みたいに使います。

セルの位置を直接的に指定できるのでわかりやすいと思います。

続けてもう一つ紹介します。

Cells(セルズ)命令

■3日目 プログラム3■


'3日目 プログラム3

Sub test()
	Worksheets("Sheet1").Cells(5,1).Value = "こんばんは!"
End Sub

■実行結果■

VBA,Cells命令を使った基本のプログラムの説明画像

■説明■

同じくエクセル画面に直接結果を表示する「Cells」命令です。


Worksheets("シートの名前").Cells(行の位置,列の位置).Value = "メッセージ"

のように使います。

セル(A1)→Cells(1,1)

セル(B1)→Cells(1,2)

みたいになります。

「Cells」命令の場合はセルの場所を数値で指定するので最初はわかりづらいかもしれません。

今後はこれらの命令を必要に応じて使い分けて結果を表示していきたいと思います。

注意

「ExcelVBA」を使ってセルの内容を変更した時は「一つ戻る」の操作はできないのでご注意ください!

プログラムを折り返す

「_」アンダーバーを使ってプログラムを折り返す事ができます。

■3日目 プログラム4■


'3日目 プログラム4

Sub test()
	Worksheets("Sheet1").Range("C2") _ 
		.Value = "グッドモーニング!"
End Sub

■実行結果■

VBA,アンダーバーを使ってプログラムをつなげる方法の説明画像

■説明■

「_」アンダーバーを使えばプログラムを途中で折り返す事ができます。

プログラムが横に伸びてしまって見づらい時など必要に応じて使ってください。

キリのいいトコロでしか折り返せないので注意です。

プログラムの省略

ちなみにワークシート「sheet1」しか使ってません!という前提なら最初の長ったらしい「Worksheets("Sheet1")」を省略して

Sub test()
	Range("B2").Value = "おはよう!"
End Sub

だけでも問題なく実行されます。

ただ複数のシートを使っている状態で「Worksheets("Sheet1")」の部分を省略してしまうとエクセルの側ではどのシートに対してプログラムを実行すれば良いか判断できないのでエラーを引き起こす原因になったりします。

そうならないように複数のシートを使う場合は省略しないで書くか


Worksheets("Sheet2").Activate

「今からこのシートを使うぜっ!」みたいな意味になるこちらの「Activate(アクティベート)」命令を先に書いてから省略してください。

個人的には慣れるまではムダなエラーを避ける為、省略せずにすべて打ち込むのをオススメします。

アイデアプログラミング!

注意書きを作る

■3日目 プログラム5■


'3日目 プログラム5

Sub test()
	MsgBox "入力時の注意"
	MsgBox "①名前・生年月日・性別の順に入力してください"
	MsgBox "②苗字と名前の間に全角スペースを入れてください"
	MsgBox "③生年月日は「s50/03/26」のように入れてください"
	MsgBox "以上です"
End Sub

■実行結果■

VBA,MsgBoxを使ったプログラム

■説明■

「MsgBox」命令を組み合わせれば注意書きのようなものが設置できます!

ボタンの大きさ、ボタンの題名などはボタン上で右クリックで変更できるのでいろいろ試してみてください。

クリアボタンを作る

例えばこんな表があったとして、

VBA,Range命令を使ってセルのクリアボタンを作る説明画像1

必要な項目を一気に消せるクリアボタンを作ります。

■3日目 プログラム6■


'3日目 プログラム6

Sub test()
	Worksheets("Sheet1").Range("B3").Value = ""
	Worksheets("Sheet1").Range("B4").Value = ""
	Worksheets("Sheet1").Range("B5").Value = ""
	Worksheets("Sheet1").Range("B6").Value = ""
End Sub

■実行結果■

VBA,Range命令を使ってセルのクリアボタンを作る説明画像2

ボタンを押すと・・・、

VBA,Range命令を使ってセルのクリアボタンを作る説明画像3

数量欄がクリアされました!!!

■説明■

メッセージの部分を「""」のように空にする事でそこのセルの値を消去できます。

これを使えば表を再利用する時にいちいちドラッグして消す事もなくなりますね。

今の時点では長ったらしいムダの多いプログラムになりますが、この後学ぶプログラミング技術によってとても簡単に書けるようになるのでご安心ください。

プログラムごとにボタンを登録

それでは今まで学んだプログラムを別々のボタンに登録してボタンも2つ設置してみます。

■3日目 プログラム7■


'3日目 プログラム7

Sub tukaikata()
	MsgBox "入力時の注意"
	MsgBox "①クリアボタンで前の内容を消去"
	MsgBox "②報告書の数量を打ち込んでください"
	MsgBox "以上です"
End Sub

Sub clear_button()
	Worksheets("Sheet1").Range("B3").Value = ""
	Worksheets("Sheet1").Range("B4").Value = ""
	Worksheets("Sheet1").Range("B5").Value = ""
	Worksheets("Sheet1").Range("B6").Value = ""
End Sub

■実行結果■

Sub~End Subでプログラムを区切る方法の説明画像

■説明■

「Sub 名前 ~ End Sub」のカタマリで区切って別々のプログラムを登録する事ができます。

ボタンにプログラムを登録する時に

VBA,ボタンに別々のプログラムを登録するやり方の説明画像

マクロの登録画面でプログラムの名前がそれぞれ表示されるのでボタンに合わせて登録すればボタンごとに実行されるプログラムを分ける事ができます。

まだまだできる事は少ないですが常にアイデアを膨らませてプログラミングを楽しんでしまいましょう!

次回

4日目 変数とは?

広告

Copyright 2016 K.N/petitetech.com