機械系エンジニアの備忘録

20代独身社会人。仕事では機械・機構の研究開発を行っているエンジニアが、自分の専門分野ではないpythonを扱って楽しむブログです。

MENU

【Excel+VBA#4】VBAでの基本的なコードの書き方Part2

VBAでの基本的なコードの書き方Part2

 

1. はじめに

前回はVBAの基本的なコードの書き方として、for文、if文、Do while文、Do until文などを紹介しました。

 

www.stjun.com

今回はその続きになります。知ってると少し便利なコードの書き方を紹介します。

 

2. コードの書き方

まずその前にVBAのエディタを表示します。

「開発」タブの「Visual Basic」をクリックします。

f:id:stjun:20201019003130p:plain

そして「挿入」から「標準モジュール」をクリックすると「Module1」が現れます。今回はここにコードを記載します。

またコードを実行する際は、緑色の右向き矢印をクリックしてください。

f:id:stjun:20201019003428p:plain

 

2.1 with

例えば、B列2行目に10を代入し、フォント、文字の大きさ、文字の色を変えたい時は以下のコードになります。

Public Sub first()
    Cells(2.2).Value = 10
    Cells(2.2).Font.ColorIndex = 5
    Cells(2.2).Font.Size = 10
    Cells(2.2).Font.Name = "MS ゴシック"
End Sub

ただ毎回Cells(2.2)と書くのはめんどくさいですよね。そんな時にwithが使えます。

上のコードをwithで書き直すと以下になります。

Public Sub first()
    With Cells(2.2)
        .Value = 10
        .Font.ColorIndex = 5
        .Font.Size = 10
        .Font.Name = "MS ゴシック"
    End With
End Sub

このように対象のオブジェクトをwithを使って指定すれば、それ以降はオブジェクトのプロパティのみ記載すればOKになるので、コードが見やすく簡略化されます。注意する点としては、withの中は必ず文頭に「.」(ドット)を付けること、また終わりにEnd Withを書くのを忘れないでください。

 

2.2 On error goto

コードを実行中にエラーが生じたら(またはユーザーの設定に問題があってコードが上手く動かなかった場合に)特別な処理を行いたい場合があると思います。そんな時にOn error gotoが使えます。書き方は以下になります。なおGoToの後ろのAは私が勝手に決めた文字で、AじゃなくてもBでもxyzでも任意の英数字が使用できます。

On Error GoTo A 
~処理の内容、エラーが起きたらA以降の処理に飛ぶ~

On Error GoTo 0
~処理の内容、エラーが起きてもAには飛ばない~

A:
~エラーが起きた時の処理内容~

 

On Error Goto (任意の英字)からOn Error Goto 0の間に書かれた処理でエラーが起きた場合、下部の任意の英数字の行まで処理が飛びます。例えば上のコードでは下部のA欄の「~エラーが起きた時の処理内容~」に「エラーが起きました。プログラムを終了します」という文字を表示するようなプログラムを書いておくといった使い方があります。

On Error GoTOは数値計算などではあまり使われませんが、ユーザーフォームなどUIを使う場合には使える技なので紹介しました。

 

2.3 Msgboxとif文を組み合わせてユーザーの同意を得る

何か処理を行う際に、ユーザーの同意を得たい場合があります。

そんな時、Msgboxとif文を組み合わせると、ユーザーが「はい」ボタンを押した時のみプログラムを実行させることができます。

具体例として2.1のコードと組み合わせてみます。確認のメッセージを表示し、ユーザーが「はい」を押した場合のみ2.1のB列2行目に10を代入し、色・フォント・サイズを変えるコードは以下になります。

Public Sub first()
 Dim msg As String
Dim title As String Dim ans As Integer msg = "プログラムを実行します. よろしいですか?" title = "確認" ans = MsgBox(msg, vbYesNo + vbInformation, title) If ans = vbNo Then Exit Sub With Cells(2.2) .Value = 10 .Font.ColorIndex = 5 .Font.Size = 10 .Font.Name = "MS ゴシック" End With End Sub

実行すると以下のように確認画面が現れます。

f:id:stjun:20201025003905p:plain

ここで「いいえ」を選択すると何も起きません。 これはif文を使って「If ans = vbNo Then Exit Sub」としてるからです。もしユーザーがいいえ(=vbNo)を選択したらプログラムを終了する(=Exit sub)という意味です。

また、MsgBox(msg, vbYesNo + vbInformation, title)ですが、MsgBoxは上記の確認画面を出す機能で、引数は左から、

中身の文章:ここでは「プログラムを実行します。よろしいですか?」

確認画面の種類:ここではYes/Noの選択しと、ビックリマーク

タイトル:ここでは「確認」

になります。

このMsgBoxとif文の組み合わせは非常に使えるのでお勧めです。

 

3. おすすめ書籍

このシリーズはプログラミング初心者にも非常に分かりやすくてお勧めです。

私はプログラミングを初めて勉強する際、3番目の本を大学時代に買ってすごく助かりました。今でも手元に置いてるくらいです。 

 

4. 最後に

次回はユーザーフォームの使い方を紹介します。

 次の記事はこちらです。

www.stjun.com