0

ユーザーフォームのボタンからアクティブ化されるサブがあります。クリックからの基本的な手順は、

1)ユーザー入力に基づいてサブを実行します

2) 結果シートを選択

3) 結果を表示する

4) ユーザーフォームをアンロードする

ユーザー入力値に境界を設定しようとして、ユーザーが範囲外の何かを入力すると、範囲を通知するメッセージ ボックスがポップアップ表示されるため、問題が発生しました。if/then ループを使用することで、この単純なタスクを達成できました。ユーザーがメッセージボックスを終了した後、元のユーザー入力とともにユーザーフォームを表示したままにし、ユーザーが入力を変更できるようにしたいと考えています。しかし、現在、ユーザーがメッセージボックスで「OK」をクリックした後、クリックサブはその手順を続行し、ユーザーフォームをアンロードして結果ワークシートを選択します。ユーザーに値を再入力させる代わりに、ユーザーフォームを保持するために、msgbox の状態の後に置くことができる単純な 1 行のコードはありますか?

編集 - 私のコードの一般的な要点は次のとおりです。

Private Sub CommandButton1_Click()
    PropertySearch.Search
    ActiveSheet.Name = "SearchResult"
    Cells(1, 1).Select
    Unload ILsearch
End Sub

Sub Search()
    If (TextBox1 And TextBox2 <= 8) And (TextBox1 And TextBox2 > 0) Then
    '
    'Performs my desired function
    '
    Else: MsgBox ("Database only includes ionic liquids with a maximum of 8 carbons in cation")
    End If
4

2 に答える 2

1

入力が境界内にあるかどうかにかかわらず、Search を true または false を返す関数に変えます。

Function Search() AS Boolean

   If (TextBox1 And TextBox2 <= 8) And (TextBox1 And TextBox2 > 0) Then
      Search = True
   Else
      Search = False
   EndIf

End Function

入力が境界を満たさない場合は、サブを終了します。

Private Sub CommandButton1_Click()

    If(Not PropertySearch.Search) Then
       MsgBox("your error message here")
       Exit Sub
    EndIf

    ' rest of the routine

End Sub
于 2011-07-01T13:47:17.853 に答える