SSブログ

’(’がありません。の原因と解決方法【VBScriptエラー】 [VBScript]

スポンサーリンク

外部ファイルの指定忘れ


【原因】
配列の大きさを変更するPreserveステートメントのスペルに誤りがあった
×ReDim Perserve ARY(nCNT)
○ReDim Preserve ARY(nCNT)

【解決方法】
正しいスペルに書き直す


スポンサーリンク


関連記事


型が一致しません。の原因と解決方法【VBScriptエラー】

’(’がありません。の原因と解決方法【VBScriptエラー】


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

エンティティの参照に問題があります ー 対応する’;’が見つかりません。 の原因と解決方法【VBScript エラー】 [VBScript]

スポンサーリンク

原因 文中に""を記述してしまった


 WSFファイル形式でVBScriptを記述する場合、で挟むが、その中に""が記述されてしまうと、そこをスクリプトの最後と認識してしまうから。

elmS = repStr(emS(2),"","")


スポンサーリンク

解決方法


たとえダブルクォーテーションで囲んだ文字列であっても、コメントであっても、そこをスクリプトの最後と認識してしまう。そこで下記のように"script"の前にある"/"の前に"\"を記述する。

elmS = repStr(emS(2),"","")


スポンサーリンク


関連記事


エンティティの参照に問題があります ? 対応する~が見つかりません。 の原因と解決方法【VBScript エラー】

型が一致しません。 の原因と解決方法【VBScript エラー】


nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

型が一致しません。 の原因と解決方法【VBScript エラー】 [VBScript]

スポンサーリンク

原因 代入する変数の指定に誤りがある


Split()関数で出力される配列は、変数に代入しなければいけないところ、配列変数に代入してしまった。

例)時刻を代入する変数を配列で指定した。
×Dim timS(1)
timS = Split(tim,":")


スポンサーリンク

解決方法


誤って配列で指定した変数を、変数に書き換える。

例)時刻を代入する変数に書き換えて、コロンで時間と分に分割する。
○Dim timS
timS = Split(tim,":")

または、配列変数に代入するのであれば、要素番号もきちんと指定する。
timS(0) = Split(tim,”:”) でもOK。


スポンサーリンク


関連記事


エンティティの参照に問題があります ? 対応する~が見つかりません。 の原因と解決方法【VBScript エラー】

型が一致しません。 の原因と解決方法【VBScript エラー】


nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

指定した間隔でカラーコードを作成する関数(再帰的プログラム)のサンプル VBScript [VBScript]

各桁が3,9,Fの16進数で組み合わされたカラーコードを作成し配列で出力する関数の例です。Sub(サブルーチン)で作成されるのが多い再帰的プログラムをFunctionで作成してみました。

スポンサーリンク

サンプルプログラム



Function hex39F(cmpS,c)
	Dim	numS
	Dim	num6, d
  ReDim	num6(0)		'配列の宣言
	Dim	m
		m	= -1

	For	d = 3 To 15 Step 6
		cmpS(c)	= hex(d) & hex(d)	'数字を16進数に変換する

		If	c < UBound(cmpS) Then	'まだ3回ネストを繰り返していなければ
			numS	= hex39F(cmpS,c+1)
'd			objLOG.WriteLine(Join(numS,";"))
			If	UBound(num6) = 0 Then	'最初の出力であれば
				num6	= numS					'連結処理なし→配列を代入する
			Else
				num6	= concatARY(num6,numS)	'2回目以降は配列を連結していく
			End	If
		Else
			If	cmpS(0) <> cmpS(2) Then		'前後2桁のコードが同じものは弾く
				m		= m + 1
				ReDim	Preserve num6(m)	'配列の大きさを1つずつ大きくしていく
				num6(m)	= "#"& Join(cmpS,"")
'd				objLOG.WriteLine(m &":"& Join(cmpS,""))
			End	If
		End	If
	Next

	hex39F	= num6
End	Function



concatARY関数は、2つの1次元配列を連結する独自関数です。

出力結果


#333333
#333399
#3333FF
#339933
#339999
#3399FF
#33FF33
#33FF99
#33FFFF
#993333
#993399
#9933FF
#999933
#999999
#9999FF
#99FF33
#99FF99
#99FFFF
#FF3333
#FF3399
#FF33FF
#FF9933
#FF9999
#FF99FF
#FFFF33
#FFFF99
#FFFFFF

スポンサーリンク

concatARY関数


2つの1次元配列をの結合する関数です。

・inARY1:結合する配列1
・inARY2:結合する配列2
・outARY:戻り値。結合した配列

Function concatARY(inARY1,inARY2)
	Dim UB1, UB2
		UB1	= UBound(inARY1)
		UB2	= UBound(inARY2)

	Dim	outARY
  ReDim outARY(UB1+UB2+1)
	Dim a
	For a = 0 To UB1
		outARY(a)	= inARY1(a)
	Next

	For a = 0 To UB2
		outARY(UB1+1+a)	= inARY2(a)
	Next

	concatARY	= outARY
End Function


スポンサーリンク


関連記事


指定した間隔でカラーコードを作成する関数(再帰的プログラム)のサンプル VBScript


nice!(1)  コメント(0) 
共通テーマ:パソコン・インターネット

正規表現 [VBScript]

スポンサーリンク

連続する数字を取得する


\d+ ポイントは、"\d+?"ではなく、"\d+"を使うこと。 "\d+?"は、最短の文字列を取得するため、数字1文字ずつを取得してしまう。 例)文字列"1200円"に対して、"\d+?"を指定すると、"1", "2", "0", "0" と、一文字ずつ取得されてしまう。

カンマまたは小数点つきの連続する数字を取得する


[\d\,\.]+ ポイントは、"+?"ではなく"+"を使う点と、演算子には正規表現の予約文字があるため、その文字の前に"\"を付けること。 なお、カンマの前に"\"をつける必要はないが、明確に数字以外の文字として表すため、ここではあえてつけてみた。

数式(連続する数字と演算子)を取得する


[\d\+\-\*\/\=]+

ポイントは、"+?"ではなく"+"を使う点と、演算子には正規表現の予約文字があるため、その文字の前に"\"を付けること。

"+", "-", "*", "/", "=" 以外の演算子を含む場合は、追加していく。


文字数の異なる開始文字を取得する


スポンサーリンク

(ab|a|b)

""が開始文字を取得するための文字で、カッコ内が取得する文字。ポイントは、カッコ内に指定する文字の書き順で、優先順位の高い文字ほど左に書くこと。

例)先頭が"◎・", "◎", "・" から始まる文字列から、これらの記号を取り除く(""に置換する)場合、"(◎・|◎|・)"の順で記述する。誤って"(◎|・|◎・)"で記述してしまうと、"◎・"から始まる文字列は、"◎"しか置換の対象にならない。


スポンサーリンク


関連記事


正規表現


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。