Public Sub と Private Subの違い
<スポンサーリンク>
マクロやvbaと検索すると、Subだけでなく
・Public Sub
・Private Sub
と書いてあるのを見かけると思います。この違いは至極簡単で、
Public Sub → 違うModuleから呼び出せる。
Private Sub → 違うModuleから呼び出せない。
これだけの違いになります。ちなみに、Subだけ=Public Subとなりどのモジュールからも呼び出せる設定になります。
Public Subの有効な使い方
Public Subの有効な使い方としては、
① Module2によく使うコードを
Public Subで登録しておく。
②Module1にメインのプログラムを書き、
必要に応じて「call」で呼び出す。
そうすることで、非常にきれいなプログラムを書くことができます。
例えば下記のように、Module2に、範囲指定したセルをコピーペーストできるSUBプロシージャを作っておいた場合、入力の手間が省け、そして、非常にコードがシンプルになります。
Module1
Private Sub MAIN()
cells(1,1)=50%
cells(1,2)=30%
Range(Cells(1, 1), Cells(1, 2)).COPY
Range(Cells(2, 1), Cells(2, 2)).PasteSpecial xlPasteValues
End Sub
↓
Private Sub MAIN()
cells(1,1)=50%
cells(1,2)=30%
Call COPYPASTE(1, 1, 1, 2, 2, 1, 2, 2, "VALUE")
End Sub
Module2
Public Sub COPYPASTE(FROM_Y1, FROM_X1, FROM_Y2, FROM_X2, TO_Y1, TO_X1, TO_Y2, TO_X2, Optional PS = "VALUE")
Range(Cells(FROM_Y1, FROM_X1), Cells(FROM_Y2, FROM_X2)).COPY
If PS = "VALUE" Then
Range(Cells(FROM_Y1, FROM_X1), Cells(FROM_Y2, FROM_X2)).PASTESPECAIL xlPasteValues
ElseIf PS = "Formulas" Then
Range(Cells(FROM_Y1, FROM_X1), Cells(FROM_Y2, FROM_X2)).PASTESPECAIL xlPasteFormulas
ElseIf PS = "FV" Then
Range(Cells(FROM_Y1, FROM_X1), Cells(FROM_Y2, FROM_X2)).PASTESPECAIL xlPasteFormulas
Selection.Calculate
Range(Cells(FROM_Y1, FROM_X1), Cells(FROM_Y2, FROM_X2)).PasteSpecial
ElseIf PS = "FORMAT" Then
Range(Cells(FROM_Y1, FROM_X1), Cells(FROM_Y2, FROM_X2)).PASTESPECAIL xlPasteFormats
End If
End Sub
表作成に便利なPublic Subプロシージャを紹介していこうと思います。
コメント欄