(3)文字列を区切り文字で分割する

データファイルdata.datから読み込んだ行は「雇う [Tab] employ」のようにタブ区切りの文字列です。ここでは、これをタブで分割します。決められた区切り文字で文字列を分割するのは、Split関数の役割です。

[構文]Split関数

Split(対象の文字列 ,区切り文字)

Split関数は分割した文字列を配列として返します。ここでは配列lineに、(たとえば)line[0]=雇う、line[1]=employのような値がセットされます。

(4)ユーザーからの入力を促すのはInputBox関数

ユーザーからの入力を求めるインプットボックスを表示するには、InputBox関数を使います。InputBox関数の構文は、次の通りです。

[構文]InputBox関数

InputBox(表示する文字列 [,タイトル [,デフォルト値]])

ここでは、先ほどSplit関数で取得した英単語(line[0])を引数「表示する文字列」に、問題数(変数cnt)を引数「タイトル」に、それぞれセットしています。引数「デフォルト値」は省略していますので、インプットボックスの入力部分はこの場合は空で表示されます。InputBox関数は、ユーザーから入力された文字列を戻り値として返します。もしも[キャンセル]ボタンが押された場合には、InputBox関数は空文字列を返します。

(5)文字列の前後から余計な空白を取り除く

あとは、InputBox関数の戻り値(ユーザーの入力値)と、解答(line[1])とを比較するだけです。ただし、この際、ユーザーが入力の前後に余計なスペースを入れてしまった場合に備えて(たとえば、「 employ 」のように)、入力の前後からスペースを除去している点に注目です。さもないと、一見して正しい値を入力しているのに、スクリプトは不正解と見なしてしまう恐れがあります。文字列の前後から空白を取り除くのは、Trim関数の役割です。

[構文]Trim関数

Trim(文字列)

以上が理解できたら、さっそくword.vbsをダブルクリックして、スクリプトを起動してみましょう。冒頭の図のような結果が得られれば、まずは成功です。