• ベストアンサー

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で抜けるようなコードを追加すればよいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

すべて検査した上でメッセージを表示したいのであれば 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)
回答No.2

「これにあてはまらない文字列がある場合は処理を中止して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」に……