スポンサーリンク

Public Sub と Private Subの違い~~データ集計業務に即したマクロVBA

マクロVBA
この記事は約3分で読めます。
スポンサーリンク

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プロシージャを紹介していこうと思います。

スポンサーリンク
スポンサーリンク
マクロVBA
スポンサーリンク
nujonoa_blog

コメント欄

タイトルとURLをコピーしました