★悩み★
・プログラミング(VBA)で「マクロ」を作成する方法を知りたい。
・「VBA」の書き方を知りたい。
・「VBA」のデバッグ方法を知りたい。
・「VBA」で図形の書き方を知りたい。
こういった「悩み」に答えます。
★本記事の内容★
① VBAで作成するExcelマクロをご紹介
② VBAで図形を作成するExcelマクロの作成方法をご紹介
これからご紹介する「VBAでExcelマクロを作成する方法」を実践したことで、筆者は30分以内でVBAでExcelマクロを作成できました。
記事の前半では「VBAで作成するExcelマクロ」をご紹介しつつ、記事の後半では「VBAで図形を作成するExcelマクロの作成方法」を図を交えながらご紹介します。
この記事を読み終えることで、「VBAでExcelマクロを作成する方法」を把握した状態になります。
ちなみに、「Excelマクロとはどういったものか?」や「Excelマクロを簡単に作成する方法は?」を知りたい方は、以下をご覧ください。
VBAで作成するExcelマクロをご紹介
VBAを使って作成するExcelマクロに関してご紹介します。
★VBAで作成するExcelマクロについて★
表に書かれた情報を元に図形を綺麗に描画するExcelマクロを作る。
本記事では、上記のExcelマクロをVBAで作成します。
筆者は、プログラムやシステムの流れを把握するために、Excelに「フロー」を書き起こします。
フロー作成の際に、「図形が少しでもずれていたら、そのずれを直したい」と思い、ずれを修正するのに時間を浪費します。
上記理由より、「図形を自動で綺麗に描画するExcelマクロ」を作成します。
「図形を自動で綺麗に描画するExcelマクロ」のイメージとしては、下図になります。
Excelに上記の表を作るだけで、フロー図が自動で生成されるExcelマクロを作成します。
以上が、「VBAで作成するExcelマクロ」に関してでした。
VBAで図形を作成するExcelマクロの作成方法
VBAで図形を作成するExcelマクロの作成方法に関してご紹介します。
★VBAでExcelマクロを作成する流れ★
ステップ1:VBAでExcelマクロを作成するための準備
ステップ2:VBAで図形を作成する方法
ステップ3:VBAでExcelの列に記載された情報を取得する方法
ステップ4:VBAで図形を作成する関数を呼び出す方法
ステップ5:VBAで図形を作成するExcelマクロのプログラム
ステップ6:動作確認(VBAで図形を作成するExcelマクロのプログラム)
上記の流れで、「VBAで図形を作成するExcelマクロ」の作成方法をご紹介します。
以降で、各ステップに関してご紹介します。
ステップ1:VBAでExcelマクロを作成するための準備
「VBAでExcelマクロを作成するための準備」に関してご紹介します。
Excelを起動し、マクロを作成できるウィンドウを開きます。
下図の「Visual Basic Editor」をクリックします。
次に「変数にどのような値が格納されたかを確認できるウィンドウ」を開くために、「Locals Window」をクリックします。
そうすることで、以下のような「VBAでExcelマクロを便利に作成するための画面」が整います。
上図の左画面を確認することで、VBAの実行結果をすぐに把握できます。
上図の右画面の上部分を確認することで、「ある変数に適切な値が格納されているか?」を把握できます。
上図の右画面の下部分にVBAのプログラムを書いていきます。
上図の左画面の上部分にある「▶︎」を押すことで、作成したVBAのプログラムを実行できます。
以上で、「ステップ1:VBAでExcelマクロを作成するための準備」は完了です。
ステップ2:VBAで図形を作成する方法
VBAで図形を作成する方法に関してご紹介します。
「VBA 図作成」とGoogle検索すると、参考になりそうなサイトが表示されます。
その中で一番参考になったサイトは以下になります。
VBAで図を作成するために利用する関数
VBAでは、「AddShape」関数を利用することで、任意の図を作成できます。
AddShape関数のリファレンスは、以下のサイトとなります。
AddShape関数のリファレンス
また、AddShape関数で作成できる図は、以下サイトに詳しく記載されています。
AddShape関数で作成できる図について
今回は、「四角形」と「矢印」をVBAで作成したいので、「msoShapeRectangle」と「msoShapeRightArrow」を利用します。
VBAで「任意のテキストが書かれた四角形を任意の場所に作成する」関数は、以下のようになります。
' 現在表示しているシートの指定した部分に四角形を描画する関数
' name: 四角形の中に入力したいテキスト
' startRow: 四角形を描画する行(始点)
' startCol: 四角形を描画する列(始点)
' endRow: 四角形を描画する行(終点)
' endRow: 四角形を描画する列(終点)
Sub AddSquare(name As String, startRow As Integer, startCol As Integer, endRow As Integer, endCol As Integer)
With ActiveSheet.Range(Cells(startRow, startCol), Cells(endRow, endCol))
ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangle, _
Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select
End With
Selection.Text = name
End Sub
VBAで「任意のテキストが書かれた右矢印を任意の場所に作成する」関数は、以下のようになります。
' 現在表示しているシートの指定した部分に右矢印を描画する関数
' name: 右矢印の中に入力したいテキスト
' startRow: 右矢印を描画する行(始点)
' startCol: 右矢印を描画する列(始点)
' endRow: 右矢印を描画する行(終点)
' endRow: 右矢印を描画する列(終点)
Sub AddArrow(name As String, startRow As Integer, startCol As Integer, endRow As Integer, endCol As Integer)
With ActiveSheet.Range(Cells(startRow, startCol), Cells(endRow, endCol))
ActiveSheet.Shapes.AddShape(Type:=msoShapeRightArrow, _
Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select
End With
Selection.Text = name
End Sub
以上で、「ステップ2:VBAで図形を作成する方法」は完了です。
ステップ3:VBAでExcelの列に記載された情報を取得する方法
「VBAでExcelの列に記載された情報を取得する方法」に関してご紹介します。
実現したいことは、「A列の2行目からの情報を配列変数に格納」です。
以下のVBAプログラムで「VBAでExcelの列に記載された情報を取得」できます。
Range("A2").Select
Do
s = ActiveCell.Offset(j, 0).Value
If s = "" Then
Exit Do
End If
' セルに入力された情報を配列に格納
sourceNameList(j) = s
j = j + 1
Loop
以上で、「ステップ3:VBAでExcelの列に記載された情報を取得する方法」は完了です。
ステップ4:VBAで図形を作成する関数を呼び出す方法
「VBAで図形を作成する関数を呼び出す方法」に関してご紹介します。
ステップ3で、四角形や右矢印を作成する関数を作りました。
VBAでステップ3で作成した関数を呼び出すためには「Call 関数名」を使います。
以上で、「ステップ4:VBAで図形を作成する関数を呼び出す方法」は完了です。
ステップ5:VBAで図形を作成するExcelマクロのプログラム
「VBAで図形を作成するExcelマクロのプログラム」に関してご紹介します。
VBAで図形を作成するExcelマクロのプログラムは、以下となります。
Sub AddArrow(name As String, startRow As Integer, startCol As Integer, endRow As Integer, endCol As Integer)
With ActiveSheet.Range(Cells(startRow, startCol), Cells(endRow, endCol))
ActiveSheet.Shapes.AddShape(Type:=msoShapeRightArrow, _
Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select
End With
Selection.Text = name
End Sub
Sub AddSquare(name As String, startRow As Integer, startCol As Integer, endRow As Integer, endCol As Integer)
With ActiveSheet.Range(Cells(startRow, startCol), Cells(endRow, endCol))
ActiveSheet.Shapes.AddShape(Type:=msoShapeRectangle, _
Left:=.Left, Top:=.Top, Width:=.Width, Height:=.Height).Select
End With
Selection.Text = name
End Sub
Sub Main()
Dim sourceNameList() As String
Dim processList() As String
Dim outputNameList() As String
Dim i
i = 0
Dim j
j = 0
Range("A2").Select
Do
s = ActiveCell.Offset(i, 0).Value
If s = "" Then
Exit Do
End If
i = i + 1
Loop
ReDim sourceNameList(i)
ReDim processList(i)
ReDim outputNameList(i)
Range("A2").Select
Do
s = ActiveCell.Offset(j, 0).Value
If s = "" Then
Exit Do
End If
sourceNameList(j) = s
j = j + 1
Loop
j = 0
Range("B2").Select
Do
s = ActiveCell.Offset(j, 0).Value
If s = "" Then
Exit Do
End If
processList(j) = s
j = j + 1
Loop
j = 0
Range("C2").Select
Do
s = ActiveCell.Offset(j, 0).Value
If s = "" Then
Exit Do
End If
outputNameList(j) = s
j = j + 1
Loop
Dim startRow As Integer
Dim startCol As Integer
startRow = 5
startCol = 5
loopCount = j - 1
For nowCount = 0 To loopCount
Call AddSquare(sourceNameList(nowCount), startRow, startCol, startRow + 1, startCol)
Call AddArrow(processList(nowCount), startRow, startCol + 1, startRow + 1, startCol + 1)
Call AddSquare(outputNameList(nowCount), startRow, startCol + 2, startRow + 1, startCol + 2)
Next nowCount
Stop
End Sub
以上で、「ステップ5:VBAで図形を作成するExcelマクロのプログラム」は完了です。
ステップ6:動作確認(VBAで図形を作成するExcelマクロのプログラム)
「VBAで図形を作成するExcelマクロのプログラム」の動作確認をしましょう。
上記コードの「Main関数」を実行することで、下記の図を自動で生成できます。
以上で、「ステップ6:動作確認(VBAで図形を作成するExcelマクロのプログラム)」は完了です。
上記のステップで、「VBAで図形を作成するExcelマクロの作成」することができました。
【まとめ】VBAでExcelマクロを作成する方法
今回の記事を通して、「VBAでExcelマクロを作成する方法」をご紹介することで、以下の悩みを解消しました。
★悩み★
・プログラミング(VBA)で「マクロ」を作成する方法を知りたい。
・「VBA」の書き方を知りたい。
・「VBA」のデバッグ方法を知りたい。
・「VBA」で図形の書き方を知りたい。
「VBAでExcelマクロを作成する方法は?」で悩んでいるあなたにこの記事が少しでも役に立てれば幸いです。
コメント