2013-11-26 5 views
0

У меня есть какая-то проблема в моем цикле .. Важная роль в моем коде:VBA Excel, если оператор для поиска значения

Sub Search() 

inputbox MyInput 
Do 
    found = getInput(MyInput) 
Loop 
    if found = true then 
    'I want to stop doing the loop (like end sub?) 
    elseif found = false then 
    'do something 
    end if 
End Sub 

Я хочу, если найден = верно, то цикл остановится и дисплей мой Inputbox (из цикла?), потому что в моем случае:

первый цикл> верен (должен останавливаться), но будет продолжать 2 цикла> найдены ложные

FYI я поставил, если снаружи л oop, потому что я проверяю 5 листов и возвращаю найденное значение после того, как я закончил с 5 листами для ложного заявления

+1

Можете ли вы перефразировать свой вопрос. Мне непонятно ... –

+0

Я хочу знать, как закончить цикл раньше, но после этого цикла снова вызовет subs. Это возможно? – Aldin

+0

цикл как> начать суб -> ** сделать поле ввода ** искать значение из поля ввода, если найдено = true, затем закончить и снова отобразить поле ввода. Если found = false, сделайте что-нибудь и снова отобразите поле ввода ** до тех пор, пока пользователь не отменит ** -> – Aldin

ответ

0

Это то, что вы пытаетесь?

Sub Sample() 
    Dim myInput As String 

    Do 
     myInput = InputBox("Type in the word you want to search for:") 

     If myInput = "" Then Exit Do 

     If LCase(myInput) = "true" Then 
      MsgBox "User entered True" 
     ElseIf LCase(myInput) = "false" Then 
      MsgBox "User entered False" 
     Else 
      MsgBox "User entered something else" 
     End If 
    Loop 
End Sub 
+0

после поля ввода, я снова зацикливаю, чтобы проверить каждый лист (например, 5 листов), то если вход, найденный на 1-м листе, затем найден = true и завершите проверку (цикл) и снова отобразите поле ввода. Но мой результат, 1-й найденный, countinue проверяет 2-й, 3-й, 4-й, 5-й и нашел ложным, потому что значение, найденное на 1-м листе, не 5-е – Aldin

0

Хорошо после того, как я попробовать это, он отлично работает параметр Теперь

Sub Search() 

    Dim i As Integer, x As Integer, n As Integer, counter As Integer, found As Boolean, report As Boolean 

    i = 0 
    n = ActiveWorkbook.Worksheets.Count 
    n = n - 2 

    Do 

    counter = ActiveSheet.Range("A1").Offset(ActiveSheet.Rows.Count - 1, 0).End(xlUp).Row 
    counter = counter + 1 
    Range("A" & counter).Select 

    MyInput = InputBox("Enter Number") 

    found = False 
    report = False 
    If MyInput = "" Then 

    Exit Sub 

    Else 

     Sheets(1).Select 
     For i = 0 To n 
      Worksheets(ActiveSheet.Index + 1).Select    
      found = getInput(MyInput) 
      If found = True Then 
       report = True 
      End If 
     Next i 
     Sheets(1).Select 
     If report = False Then 
      MsgBox MyInput & " not found" 
      Cells(counter, 1).Value = Now 
      Cells(counter, 4).Value = MyInput 
      Cells(counter, 3).Value = Mid(Cells(counter, 4), 5, 4) 
      Cells(counter, 5).Value = "Not Found" 
     End If 
    End If 

    Loop Until MyInput = "" 

End Sub 

отчет ADDED для хранения возвращаемого значения найден, если найден = истинный

PS: может кто-то меняет название вопроса? Я думаю, что название не соответствует моему вопросу и ответам сейчас, и я не знаю, как отредактировать вопрос.

Смежные вопросы