Vbscript-miscellaneous-statements

提供:Dev Guides
移動先:案内検索

VBScriptのその他のステートメント

VBScriptには、開発者が効率的なスクリプトを開発するのに役立つ他の重要なステートメントがいくつかあります。 次の表に、このような重要なステートメントのセットを示します。 この章では、これらの各ステートメントを例とともに詳細に説明します。

Category Function Name/Statement Name
Options Option Explicit
Script Engine ID ScriptEngine
variants IsArray, IsEmpty, IsNull, IsNumeric, IsObject, TypeName
Expression Eval,Execute
Control Statement With…​End With
Math Function Randomize

明示的なオプション

*Option Explicit* は、コードの一部で使用される前に、開発者が *Dim* ステートメントを使用して変数を宣言することを強制します。

構文

Option Explicit

*Option Explicit* を使用し、変数を宣言しない場合、インタープリターはエラーをスローします。
<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Option Explicit
         Dim x,y,z,a
         x = 10
         y = 20
         z = fnadd(x,y)
         a = fnmultiply(x,y)

         Function fnadd(x,y)
            fnadd = x+y
         End Function

      </script>
   </body>
</html>

ScriptEngine

*ScriptEngine* は、使用中のスクリプト言語の詳細を表します。 また、vScriptスクリプトのメジャーバージョン、vbscriptエンジンのマイナーバージョン、vbscriptのビルドバージョンをそれぞれ提供する *ScriptEngineMajorVersion、ScriptEngineMinorバージョン、ScriptEngineBuildVersion* と組み合わせて使用​​されます。

構文

ScriptEngine

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim scriptdetails
         scriptdetails =  " Version " & ScriptEngine & " - "
         'For getting Major version, use ScriptEngineMajorVersion'

         scriptdetails = scriptdetails &  ScriptEngineMajorVersion & "."

         'For getting Minor version, use ScriptEngineMinorVersion'
         scriptdetails = scriptdetails & ScriptEngineMinorVersion & "."

         'For getting Build version, use ScriptEngineBuildVersion'
         scriptdetails = scriptdetails & ScriptEngineBuildVersion

         Document.write scriptdetails

      </script>
   </body>
</html>

IEでスクリプトを実行するときに拡張子lのファイルを保存すると、次の結果が画面に表示されます。

Version VBScript - 5.8.16996

IsEmpty

関数IsEmptyは、式が空かどうかを確認するために使用されます。 ブール値を返します。 IsEmpty は、変数が初期化されていないか、明示的に空に設定されている場合にTrueを返します。 それ以外の場合、式はFalseを返します。

構文

IsEmpty(expression)

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim var, MyCheck
         MyCheck = IsEmpty(var)
         Document.write "Line 1 : " & MyCheck & "<br/>"

         var = Null   ' Assign Null.
         MyCheck = IsEmpty(var)
         Document.write "Line 2 : " & MyCheck & "<br/>"

         var = Empty   ' Assign Empty.
         MyCheck = IsEmpty(var)
         Document.write "Line 3 : " & MyCheck & "<br/>"

      </script>
   </body>
</html>

IEでスクリプトを実行するときにl拡張子を付けてファイルを保存すると、次の結果が画面に表示されます。

Line 1 : True
Line 2 : False
Line 3 : True

無効です

関数IsNullは、式に有効なデータがあるかどうかを確認するために使用されます。 ブール値を返します。 IsNull は、変数がNullの場合Trueを返します。それ以外の場合、式はFalseを返します。

構文

IsNull(expression)

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim var, res
         res = IsNull(var)
         document.write "Line 1 : " & res & "<br/>"

         var = Null
         res = IsNull(var)
         document.write "Line 2 : " & res & "<br/>"

         var = Empty
         res = IsNull(var)
         document.write "Line 3 : " & res & "<br/>"

      </script>
   </body>
</html>

IEでスクリプトを実行するときにl拡張子を付けてファイルを保存すると、次の結果が画面に表示されます。

Line 1 : False
Line 2 : True
Line 3 : False

IsObject

IsObject関数は、式に有効なオブジェクトがあるかどうかを確認するために使用されます。 ブール値を返します。 IsObject は、式にオブジェクトサブタイプが含まれる場合はTrueを返し、そうでない場合は式はFalseを返します。

構文

IsObject(expression)

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
        Dim fso,b
        b = 10
        set fso = createobject("Scripting.Filesystemobject")

        x = isobject(fso)
        Document.write "Line 1 : " &  x  & "<br/>"

        y = isobject(b)
        Document.write "Line 2 : " &  y  & "<br/>"

      </script>
   </body>
</html>

IEでスクリプトを実行するときにl拡張子を付けてファイルを保存すると、次の結果が画面に表示されます。

Line 1 : True
Line 2 : False

IsNumeric

IsNumeric関数は、式に数値サブタイプがあるかどうかを確認するために使用されます。 ブール値を返します。 IsObject は、式に数値サブタイプが含まれている場合はTrueを返し、そうでない場合はFalseを返します。

構文

IsNumeric(expression)

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim var, chk
         var = 20
         chk = IsNumeric(var)
         Document.write "Line 1 : " &  chk  & "<br/>"

         var = "3.1415935745"
         chk = IsNumeric(var)
         Document.write "Line 2 : " &  chk  & "<br/>"

         var = "20 Chapter 23.123 VBScript"
         chk = IsNumeric(var)
         Document.write "Line 3 : " &  chk  & "<br/>"

      </script>
   </body>
</html>

IEでスクリプトを実行するときに拡張子lのファイルを保存すると、次の結果が画面に表示されます。

Line 1 : True
Line 2 : True
Line 3 : False

TypeName

TypeName関数は、変数のバリアントサブタイプ情報を返すために使用されます。

構文

TypeName(varname)

Typename関数は、次の値のいずれかを返すことができます。

  • バイト-バイト値
  • 整数-整数値
  • 長-長整数値
  • 単一-単精度浮動小数点値
  • Double-倍精度の浮動小数点値
  • 通貨-通貨価値
  • 10進数-10進数値
  • 日付-日付または時刻の値
  • 文字列-文字列値
  • ブール-ブール値
  • 空-初期化されていない値
  • Null-有効なデータなし
  • オブジェクト-オブジェクトのタイプ名
  • なし-オブジェクトインスタンスをまだ参照していないオブジェクト変数 *エラー

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim ArrVar(2), vartype
         NullVar = Null   ' Assign Null value.

         vartype = TypeName(3.1450)
         Document.write "Line 1 : " &  vartype  & "<br/>"

         vartype = TypeName(432)
         Document.write "Line 2 : " &  vartype  & "<br/>"

         vartype = TypeName("Microsoft")
         Document.write "Line 3 : " &  vartype  & "<br/>"

         vartype = TypeName(NullVar)
         Document.write "Line 4 : " &  vartype  & "< br/>"

         vartype = TypeName(ArrVar)
         Document.write "Line 5 : " &  vartype  & "<br/>"

      </script>
   </body>
</html>

IEでスクリプトを実行するときにl拡張子を付けてファイルを保存すると、次の結果が画面に表示されます。

Line 1 : Double
Line 2 : Integer
Line 3 : String
Line 4 : Null
Line 5 : Variant()

Eval

Eval関数は式を実行し、結果を文字列または数値として返します。

構文

Eval(expression)

引数Expressionは、文字列式または数値にすることができます。 Eval関数に、数値式または関数名を含まず、単純なテキスト文字列のみを含む文字列を渡すと、実行時エラーが発生します。 たとえば、Eval( "VBScript")はエラーになります。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Document.write Eval("10 + 10") & "<br/>"
         Document.write Eval("101 = 200") & "<br/>"
         Document.write Eval("5* 3") & "<br/>"

      </script>
   </body>
</html>

IEでスクリプトを実行するときにl拡張子を付けてファイルを保存すると、次の結果が画面に表示されます。

20
false
15

実行する

Executeステートメントは、実行用の1つ以上のステートメントを含む文字列式である引数を受け入れます。

構文

Execute(expression)

VBScriptでは、a = bは2つの方法で解釈できます。 xの値がyに割り当てられている割り当てステートメントとして扱うことができます。 また、aとbの値が同じかどうかをテストする式として解釈することもできます。 一致する場合、結果はTrueです。そうでない場合、結果はFalseです。 Executeステートメントは常に最初の解釈を使用し、Evalステートメントは常に2番目の解釈を使用します。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim x
         x = "Global"
         y = "VBScript"
         Execute("x = y")

         msgbox x
         msgbox y

      </script>
   </body>
</html>

IEでスクリプトを実行するときにl拡張子を付けてファイルを保存すると、次の結果が画面に表示されます。

VBScript
VBScript

With..End With

Withステートメントを使用すると、オブジェクト名を何度も明示的に言及することなく、指定したオブジェクトに対して一連の操作を実行できます。

構文

With (objectname)
   statement 1
   statement 2
   statement 3
   ...
   ...
   statement n
End With

次のスクリプトを実行すると、Winwordが開き、指定されたテキストが入力されます。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Msg =  "Vbscript" & vbCrLf & "Programming"
         Set objWord = CreateObject("Word.Application")
         objWord.Visible = True

         ' Objects methods are accessed without requaliyfying the objects again.'
         With objWord
            .Documents.Add
            .Selection.TypeText Msg
            .Selection.WholeStory
         End With

      </script>
   </body>
</html>

ランダム化

Randomizeステートメントは、開発者が乱数を生成するのに役立つ乱数ジェネレーターを初期化します。

構文

Randomize [number]

次のスクリプトを実行すると、Winwordが開き、指定されたテキストが入力されます。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim MyValue
         Randomize
         MyValue = Int((100 * Rnd) + 1)   ' Generate random value between 1 and 100.
         MsgBox MyValue

      </script>
   </body>
</html>

上記のスクリプトをHTMLとして保存し、IEでスクリプトを実行すると、次の出力が表示されます。

42