- ベストアンサー
Exit Subでコードを抜け出したい
If textbox.value "" Then X1 = textbox.Value For i = 1 To 100 X2 = ws.Cells(i, 1).Value If X1 = X2 Then Holder = i Exit For End If If X1 <= X2 Then Holder = i Exit For End If Next i End If 上記のようなコードがあります。textboxというテキストボックスの中の文字列とExcelのセルの文字列を比較して処理を行いたいと思っています。X1=X2、もしくはX1 <=X2の時ループを抜けます。 これに追加して、X1=X2、X1<=X2以外にこれにあてはまらない文字列がある場合は処理を中止してexit subをしたいと思っています。 わからないのは、ExcelのセルのA列から100行を検索して、その結果上記の二つの条件を満たさない場合は"データがありません"でexit subをしたいと思っています。どこにexit subで抜けるようなコードを追加すればよいでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
すべて検査した上でメッセージを表示したいのであれば If textbox.value<> "" Then X1 = textbox.Value ' Holderの初期設定 Holder = 0 For i = 1 To 100 X2 = ws.Cells(i, 1).Value If X1 = X2 Then Holder = i Exit For End If If X1 <= X2 Then Holder = i Exit For End If Next i ' ここで Holderをチェック if Holder = 0 then MsgBox "該当するデータがありません" Exit Sub end if End If といった具合でしょう
その他の回答 (1)
- mt2008
- ベストアンサー率52% (885/1701)
「これにあてはまらない文字列がある場合は処理を中止してexit subをしたい」と、言うのが、 ・条件に当てはまる文字列が1つもない場合 ・条件に当てはまらない文字列が1つでもある場合 どちらなのか微妙な書き方ですが、前者と判断して回答します。 頭の方の「X1 = textbox.Value」と、「For i = 1 To 100」の間に↓を入れて検索前に確認しては如何でしょう? If Application.WorksheetFunction.CountIf(Range("A1:A100"), ">=" & X1) = 0 Then MsgBox ("データがありません") Exit Sub End If 後者の場合、IF文中の「=0」を「<100」に……