COMオブジェクト・モジュール表記にてオブジェクト・モジュール名を省略して書くことができます。省略したオブジェクト・モジュールを使用するには、そのドット(.)以降を記述します。
- 構文
- WITH 省略部
.変数.関数名( )ENDWITH
- 引数
- 戻り値
COMオブジェクトでの使い方
WITH文を使用すると、同じオブジェクトに対して処理を行うときにコードを簡略化して記述することができます。
まずWITHに続けてオブジェクトを指定します。WITH-ENDWITH内では省略したオブジェクトのメソッド・プロパティを記述する際は「.(ドット)」から書き始めれば良くなります。
Raege(“A1:C3”).Font.Name = “メイリオ”
Range(“A1:C3”).Font.Size = 14
Range(“A1:C3”).Interior.ColorIndex = 20
WITH文を使うと以下のようになります。
WITH Raege(“A1:C3”)
.Font.Name = “メイリオ”
.Font.Size = 14
.Interior.ColorIndex = 20
ENDWITH
モジュールでの使い方
自作のmathモジュールでmathを省略部に書く例。
WITH内で省略した変数・関数を使うにはドット以降から書き始めます。
PRINT math.pi
PRINT math.e
PRINT math.tau
PRINT math.fabs(-4)
PRINT math.factorial(5)
WITH math // 省略部
PRINT .pi // 変数
PRINT .e // 変数
PRINT .tau // 変数
PRINT .fabs(4) // 関数名()
PRINT .factorial(5) // 関数名()
ENDWITH
MODULE math
// 円周率π
CONST pi = 3.14159265358979323846
// 自然対数e
CONST e = 2.71828182845904523536
// τ(τ=2π)
CONST tau = THIS.pi * 2
// 引数の絶対値を返す
FUNCTION fabs(x)
RESULT = ABS(x)
FEND
// 引数の階乗を返す
FUNCTION factorial(x)
IF x ABS(INT(x)) THEN RESULT = ERR_VALUE
IFB x = 0 OR x = 1 THEN
RESULT = 1
ELSE
RESULT = x * factorial(x – 1)
ENDIF
FEND
ENDMODULE
WITHの入れ子
「.(ドット)」であればどこでも区切ることができます。
CONST xlA1 = 1
CONST xlR1C1 = -4150
WITH Excel.Application.Selection
PRINT “絶対参照” + .Address
PRINT “絶対参照(行)” + .Address(TRUE, FALSE)
PRINT “絶対参照(列)” + .Address(FALSE, TRUE)
PRINT “相対参照” + .Address(FALSE, FALSE)
PRINT “R1C1形式” + .Address(TRUE, TRUE, xlR1C1)
PRINT “外部参照” + .Address(TRUE, TRUE, xlR1C1, TRUE)
ENDWITH
でも入れ子のし過ぎは見づらい。
CONST xlA1 = 1
CONST xlR1C1 = -4150
WITH Excel
WITH Application
WITH Selection
PRINT “絶対参照” + .Address
PRINT “絶対参照(行)” + .Address(TRUE, FALSE)
PRINT “絶対参照(列)” + .Address(FALSE, TRUE)
PRINT “相対参照” + .Address(FALSE, FALSE)
PRINT “R1C1形式” + .Address(TRUE, TRUE, xlR1C1)
PRINT “外部参照” + .Address(TRUE, TRUE, xlR1C1, TRUE)
ENDWITH
ENDWITH
ENDWITH