2009-09-08 11 views
1

これはおそらく簡単な質問ですが、複数の入力ボックスを使用してサブ開始時にデータを収集する必要がある場合は、どちらが正しいですか?入力ボックスのネスト入力文の場合

例1:

InputText1 = InputBox("Enter your name") 
If InputText1 = "" Then Exit Sub 

InputText2 = InputBox("Enter your age") 
If InputText2 = "" Then Exit Sub 

'Do something 

例2:

InputText1 = InputBox("Enter your name") 
If Not InputText1 = "" Then 
    InputText2 = InputBox("Enter your age") 
    If Not InputText2 = "" Then 
    'Do something 
    End If 
End If 

答えて

3

私は良い方法は、すべてのデータを求めてフォームを作成することだと思います。

ただし、両方のコードセットが機能します。それは、プロシージャ内に1つの出口だけがあるべきだと思っているかどうかによって異なります。 2番目の例には1つの終了しかありません。その理由は、あなたがいつどこから出るかを常に知っているということです。しかし、コードが入れ子になり、視覚的に複雑になるという欠点があります。彼が条件が単純でサブルーチンがエラー終了、すなわち何かをしていないと終了する場合、私は終了することを好む。

は、別のはあなたがテストできる状態を返さがあります:だから私はあなたの質問に答えるかもしれない興味のある例1

+0

+1:入力にInpputBoxを頼りにしてはいけません。ユーザーの回答には実際には制限がありません(少なくともリアルタイムではありません)。私はMarkに同意します。例1はもっと理解できます。特にInputBoxが多い傾向を続ける場合 – waqasahmed

+1

例1は良いですが、ルーチン内で何も起こってはいけないということを約束します。本当に早い段階にあります。ルーチンを途中で終了させることは、ルーチンを長く複雑にすることができれば、エラーの原因になることがあります。 (長いと複雑なルーチンはしばしば悪い考えですが、そこに散在している出口があればさらに悪化します) – MarkJ

+0

はいMarkJからのこのコメントは、私が代わりに言ったことを広げます – Mark

1

関連アイテムを好む[キャンセル]ボタンを。

Dim InputText1 As String 

InputText1 = InputBox("Enter your name") 
If StrPtr(InputText1) = 0 Then 
    MsgBox "*Canceled*" 
ElseIf InputText1 = "" Then 
    MsgBox "*Empty*" 
Else 
    MsgBox InputText1 
End If 

この場合は問題ではありませんが、違いを知ることができます。

+0

フォームを使用する別の理由:) – Mark

関連する問題