アプリケーションとしてのVBA Excel(エクセル) VBA の役立つ Tips の紹介

アプリケーションとしてのVBA

変数やプロシージャーなどの有効範囲(スコープレベル)

◆変数やプロシージャーなどの有効範囲(スコープレベル)


  変数やプロシージャーなどには有効範囲(スコープレベル)があります。

  変数は何処からでもその変数が使えるわけではありません。

  変数やプロシージャーの頭に 「Public」 や 「Private」 がついているのを
  見たことありませんか。

  有効範囲(スコープレベル)は、「Public」  や  「Private」の宣言 と 記述する場所で、
  その有効範囲が異なります。

  ここでの解説やサンプルアプリケーションでは、この辺のスコープレベルは適当に
  記述してありますが、本来はキチンと意識してコーディングすべきものです。

  しかし、プロではないので、曖昧にしています。

@プロシージャー内だけで使用できる変数            「プロシージャーレベル」

Private Sub test1()

    Dim point As Integer

    point = 100

End Sub

  変数の多くはプロシージャー内で宣言しますが、この変数は宣言した
  プロシージャー内だけしか使えません。

A同じモジュール内で使用できる変数                「モジュールレベル」

Module1
Option Explicit
Private counter As Integer

Private Sub test2()

    counter = counter + 1

End Sub

Private Sub test3()

    counter = counter + 1

End Sub

  同じモジュール内ならば、複数のプロシージャーで使用できます。

B複数のモジュールで使用できる変数                「グローバルレベル」

Module1
Option Explicit
Public counter As Integer

Public Sub test4()

    counter = counter + 1

End Sub

Module2
Public Sub test5()

    counter = counter + 1

End Sub

  複数のモジュールにまたがたプロシージャーで使用できます。



C同じモジュール内だけで Call できるプロシージャー「モジュールレベル」

  プロシージャーにも変数と同様の事が言えます。

Module1
Private Sub test6()

    test7

End Sub

Private Sub test7()

    .....

End Sub

Dモジュールを越えて Call できるプロシージャー    「グローバルレベル」

Module1
Public Sub test8()

    test9

End Sub

Module2
Public Sub test9()

    .....

End Sub


Copy (C) 2005   アプリケーションとしてのVBA   All Rights Reserved.