変数型vbscriptを宣言するにはどうすればよいですか?[複製]

Aug 21 2020

以下は、Option Explicitセットの有無にかかわらずエラーをスローします。

という名前のファイルを作成しますdim.vbs

Dim a as String

次に、コマンドプロンプトで実行します。

cscript dim.vbs

Microsoft VBScriptコンパイルエラー:予期されるステートメントの終わり

Option Explicitセットありまたはセットなしで変数型を強制する方法はありますか?

回答

5 Dai Aug 21 2020 at 10:44

vbscriptで変数タイプを宣言するにはどうすればよいですか?

できません。

  • VBScriptは、静的に型付けされた変数の概念をサポートしていません。
  • VBScriptは、WindowsのActiveScripting環境用のフロントエンド言語です。
    • この環境は、cscript(コマンドライン用)およびwscript(CMDウィンドウを表示したくない場合)によってホストされます。
    • この環境は、IIS for Classic ASP .asp/によってもホストされて.asaおり、以前はInternet Explorer(Internet Explorer 9より前)であり、JavaScriptエンジンの基盤でした。
      • 「JScript」は、ActiveScriptingでもサポートされているJavaScriptのブランド(または方言)です。VBScriptとJScriptはどちらも、両方の機能に類似点があります。
  • ActiveScriptingは、COMオブジェクトの操作を目的としています。

VBScriptの構文はVBAのサブセットであり、ほとんど相互に理解できVariantます。これは、VBAがCOMオブジェクトとして静的な型定義なしで変数を暗黙的に型指定するためです。これは、VBScriptの変数によって使用される実際の基になる型とほぼ同等です(おそらく同一です。

(内部的にはVBScript入力されます。そうでない場合、VBScriptでCOMを使用することはできません。予想される値のタイプに基づいてキーワードSetLetキーワードを使用する必要がある方法、またはConst特定のリテラル値タイプなどを使用するVBScriptでのみ使用できます)。

類推:あなたは乗用車の運転免許証を持っていて(VBAの書き方を知っている)、フォークリフト(VBScript)を運転することにしました-乗用車の運転方法を知っていて、コントロール/インターフェースが見えるからです乗用車の運転手としてのスキルは、フォークリフトをすぐに問題なく運転できるはずだということと同じです(ハンドル、ハンドブレーキ、運転席、スピードメーターがあります)。できませんし、できません。フォークリフトの取り扱いは大きく異なります(たとえば、後輪ステアリング、電気駆動、および多くの地域では、この理由からフォークリフトの運転手に特別なライセンスが必要です)。

BrandonGoodman Aug 26 2020 at 08:09

そのがないVBまたはVBAで、あなたと同じようにVBS内の特定のタイプを持つ変数を宣言することができ、そこにあるあなたの変数は、あなたが望むことを、データ型が含まれていることを保証するいくつかの変換関数は。

CBool, CByte, CCur, CDate, CDbl, CInt, CLng, CSng, CStr

例えば

Option Explicit
Dim x
x = "1"
WScript.Echo TypeName(x)
x = CInt("1")
WScript.Echo TypeName(x)
x = CInt(1)
WScript.Echo TypeName(x)

を生成します

String
Integer
Integer

変換できない値を変換関数に渡すと、型の不一致エラーが発生する可能性があることに注意してください。たとえば、「x9x」のような文字列は数値に変換できないため、CInt( "x9x")は実行を停止するランタイムエラーを引き起こします。