- ベストアンサー
VBAで、この場合のループ処理の終了条件の記述方法がわかりません。
Excelのシート名『Pn』のなかから、変数iの文字列と一致するセルをアクティブにする というマクロを組んでみました。以下のマクロのループ処理の終了条件を、「変数iの文字列と一致するセルが見つかるまで」としたいのですが、ネットで調べても記述方法がわかりませんでした。 シート名の、nは枚数に応じて1から順に番号がつけられていて、場合によって何枚あるかは変わってきます。 『Pn』以外にもシートが色々とあるので、すべてのシートのなかからの検索は避けたいのです。 Dim i as string Dim n as integer dim FoundCell as Range i = TextBox1.Value n = 1 Do Until 終了条件 Sheets("P" & n).Activate Set FoundCell = Cells.Find(What:=i, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False) n = n + 1 Loop 終了条件をどのように記述したらよいのでしょうか? 当方のパソコンは WindowsXP、 Excel2003 です。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Sub test01() Dim i as string Dim n As Integer Dim FoundCell As Range i = TextBox1.Value n = 1 Do Until Not FoundCell Is Nothing Sheets("P" & n).Activate On Error Resume Next Set FoundCell = Cells.Find(What:=i, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False, SearchFormat:=False) If Not FoundCell Is Nothing Then FoundCell.Select MsgBox "発見!Selectしました。" End If On Error GoTo 0 n = n + 1 Loop End Sub ではいかがでしょう?
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
質問には長々と説明があり、コード実例が載っているが、質問の表現の仕方が悪いと思う。 ーー エクセルVBAで「セルの値による検索!」において、終了条件はどうするのかという表現なら、質問の意味が1発で判る。 ーー (1)FindメソッドでNothing法 http://officetanaka.net/excel/vba/cell/cell11.htm (2)FindNextメソッド状態で、最初に見つかったセルにもどったことを検知法 http://www.moug.net/tech/exvba/0050116.htm があるようだ。 ーー VBAでFindを使ったらすぐぶつかる問題で、本にも解説が必ずあり、WEB照会すれば、記事が沢山でてくる問題だ。 そういう世界を広げよう。ただ初心者には、異色で難しい点だと思うが。
お礼
ご回答有難うございます 説明のしかたについては以後気をつけます。
お礼
動作確認完了いたしました! 本当に有難うございました!!!!