WITH文

COMオブジェクト・モジュール表記にてオブジェクト・モジュール名を省略して書くことができます。省略したオブジェクト・モジュールを使用するには、そのドット(.)以降を記述します。

構文
WITH 省略部
.変数
.関数名( )
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 “絶対参照<#TAB>” + .Address
	PRINT “絶対参照(行)<#TAB>” + .Address(TRUE, FALSE)
	PRINT “絶対参照(列)<#TAB>” + .Address(FALSE, TRUE)
	PRINT “相対参照<#TAB>” + .Address(FALSE, FALSE)
	PRINT “R1C1形式<#TAB>” + .Address(TRUE, TRUE, xlR1C1)
	PRINT “外部参照<#TAB>” + .Address(TRUE, TRUE, xlR1C1, TRUE)
ENDWITH

でも入れ子のし過ぎは見づらい。

CONST xlA1 = 1
CONST xlR1C1 = -4150

WITH Excel
	WITH Application
		WITH Selection
			PRINT “絶対参照<#TAB>” + .Address
			PRINT “絶対参照(行)<#TAB>” + .Address(TRUE, FALSE)
			PRINT “絶対参照(列)<#TAB>” + .Address(FALSE, TRUE)
			PRINT “相対参照<#TAB>” + .Address(FALSE, FALSE)
			PRINT “R1C1形式<#TAB>” + .Address(TRUE, TRUE, xlR1C1)
			PRINT “外部参照<#TAB>” + .Address(TRUE, TRUE, xlR1C1, TRUE)
		ENDWITH
	ENDWITH
ENDWITH