_基本

【VBA入門】DimとPrivateは基本は同様だが少し違いはある

プログラムを勉強し始めると「変数」を知ります。
今までに感じた事のない概念で、最初は戸惑と考えます。

基本的には DimPublic だけ理解すれば問題ありません。
【VBA入門】変数の適用範囲(スコープ)Dim/Public

今回は Dim Privateの違いを説明します。
基本的には適用範囲(スコープ)同一で、違いはありません。

DimとPrivateのサンプルコード

モジュール内にPrivate i As Long のように宣言する。

'■PrivateもDimも本モジュール内で使用可能な形で違いはない。
Private i As Long
Dim k As Long

Public Sub test_Dim_Private()
    MsgBox i '初期値の0を表示
    MsgBox k '初期値の0を表示
End Sub

Privateはプライベートモジュールレベル変数である

Dimプロシージャレベル変数もしくはプライベートモジュールレベル変数ですが、
Privateプライベートモジュールレベル変数のみです。

プロシージャ内にPrivateを宣言するとコンパイルエラーが発生します

Public Sub test_Dim_Private()
    'Private i As Long 'コンパイルエラー SubまたはFunctionの属性が適切ではありません
    'Dim k As Long    '本プロシージャ内でのみ使用可能。
    
    MsgBox i 'コンパイルエラー
    MsgBox k '初期値の0を表示
End Sub

まとめ

  • 変数の場合、 Dim またはPrivateでもスコープの範囲は変わりません。
    コードの可読性を上げるために Privateステートメントを使用します。
  • 定数の場合、 Dim は使用できません。Privateでのみ宣言が可能です。

関連記事

【VBA基本】変数のデータ型一覧
【VBA入門】変数の適用範囲(スコープ)Dim/Public
【VBA入門】Staticステートメント/静的変数

コメント

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