概要
一般的なVBAプログラムのために、それはライン上の1つまたはいくつかの機能であってもよい。結局、唯一使用する補助ツールとしてVBAエクセル。
プロジェクトの基本的なコードがしている間しかし、VBAで、それが必要である管理するためのプロジェクトで、より多くのを書き込む機能とモジュール。
機能
VBA関数は2種類、1がされているサブ、一方が機能 VBAで、実際には、サブ関数を呼び出していない、プロセスと呼ばれ、その差を2があります。
- 関数が値を返す、サブなし
- サブを直接実行することができ、機能を実行するために呼び出さなければなりません
次のように例のサブと機能は以下のとおりです。
1 Option Explicit
2
3 Sub CallAnotherMod()
4 Dim sum As Integer
5 sum = Add(2, 3)
6 Debug.Print sum
7 End Sub
8
9 Function Add(a As Integer, b As Integer) As Integer
10 Debug.Print a
11 Debug.Print b
12 Add = a + b
13 End Function
関数の戻り値は、結果が関数名自体に割り当てられていることに注意してください追加= A + Bそう返し、値は常に0です
モジュール
モジュラー目的は、いくつかの一般的な機能のために、私たちは、モジュールおよびエクスポートにパッケージ化することができ、再利用することである。このように、さまざまなプロジェクトにインポート既存のVBAモジュール、彼らは車を複製し、作成しないでください。
エクスポートモジュールだけでエクスポートすることができ、対応するモジュールを右クリックして、非常に簡単で、輸出は* .BASファイルです。
一般的なモジュール
シンプルな、我々はデフォルトの一般的なモジュールでは、実際にはSubまたは関数の前に書きました。次の例のプロジェクトを、私は2つのモジュール、すなわちメインとMyMathを作成し、メインをテストするために使用される一般的なモジュール、MyMath後で再利用するために、関数が使用されます。
主なモジュール:
1 Option Explicit 2 3 Sub CallAnotherMod() 4 Debug.Print "2 + 3 = " & (Add(2, 3)) 5 Debug.Print "2 * 3 = " & (Multiply(2, 3)) 6 7 End Sub
MyMathモジュール:
1 Option Explicit 2 3 Function Add(A As Integer, B As Integer) As Integer 4 Add = A + B 5 End Function 6 7 Function Multiply(A As Integer, B As Integer) As Integer 8 Multiply = A * B 9 End Function
次のようにメインモジュールの動作結果は以下のとおりです。
2 + 3 = 5 2 * 3 = 6
クラスモジュール
上記のようにパッケージに加えて、機能を介していくつかの機能は、本実施形態を好むかもしれないオブジェクト指向設計の開発に精通して、整理するVBAクラスの方法に従うことができます。
- 以前に選択除き、クラスモジュール、新しいモジュール、および同じ一般的な手順を作成した新しいタイプのあるクラスモジュール
たとえば、私たちは、新しいクラスモジュールMathClsを作成します。
1 Option Explicit 2 3 ' 常量, class说明 4 Const MathClsName = "math class" 5 6 Dim MathA As Integer 7 Dim MathB As Integer 8 9 ' 相当于其他面向对象语言中的 set 方法 10 Public Property Let A(numA As Integer) 11 MathA = numA 12 End Property 13 14 ' 相当于其他面向对象语言中的 get 方法 15 Public Property Get A() As Integer 16 A = MathA 17 End Property 18 19 ' 相当于其他面向对象语言中的 set 方法 20 Public Property Let B(numB As Integer) 21 MathB = numB 22 End Property 23 24 ' 相当于其他面向对象语言中的 get 方法 25 Public Property Get B() As Integer 26 B = MathB 27 End Property 28 29 Function Add() As Integer 30 Add = MathA + MathB 31 End Function
共通モジュールであるメインモジュールを、テストするために使用
1 Option Explicit 2 3 Sub CallAnotherMod() 4 5 Dim mc As New MathCls 6 mc.A = 2 7 mc.B = 3 8 9 Debug.Print (mc.Add()) 10 11 End Sub
概要
かかわらず、パッケージへのアプローチの種類の、パッケージはそのように機能するために調べる必要があります。機能やオブジェクト指向プログラミングと同様に、これら二つの方法のように、誰もが適切な場面で、それぞれが、高いか低いん。