If Len(zmienna) = 10 Then
'jakiś kod(nieważne)
Else
If MsgBox("String nie ma wymaganej długości. Czy chcesz go teraz edytować?", vbYesNo, "Błąd długości tekstu") = vbYes Then
'tu wstrzymanie kodu na czas dokonania zmian
Exit Sub
End If
End if
W powyższym kodzie chcę zatrzymać wykonanie pętli by móc wprowadzić ręcznie poprawki w komórce excela, a potem kliknąć jakiś przycisk np F1,F2…
zmienna = ActiveCell.Cells(1, 1)
If Len(zmienna) = 10 Then
'jakiś kod(nieważne)
Else
ponow:
If MsgBox("String nie ma wymaganej długości. Czy chcesz go teraz edytować?", vbYesNo, "Błąd długości tekstu") = vbYes Then
zmienna = InputBox("podaj nową wartość stringa", , zmienna)
If Len(zmienna) <> 10 Then GoTo ponow
ActiveCell.Cells(1, 1) = zmienna
Exit Sub
End If
End If
Zawieszenie wykonania pętli (jak to określiłeś) to zły pomysł. Lepiej użyć w tym wypadku zdarzeń. Poniżej przykład od wujka google
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1"), Target) Is Nothing Then
MsgBox "A1 has changed"
End If
End Sub
W zdarzeniu tym dla wybranej komórki sprawdzałbyś, czy jej wartość jest prawidłowa. Jeśli wartość nie jest prawidłowa, to wychodzisz z procedury informując przed tym użytkownika, że powinien wprowadzić poprawki. Użytkownik poprawia wartość (jeśli ma na to ochotę ;)) i ponownie następuje wykonanie tej procedury obsługującej zdarzenie Change. Jeśli wartość ponownie nie będzie prawidłowa to użytkownik zostanie ponownie poproszony o wprowadzenie poprawki, jeśli jednak będzie prawidłowa, to zostanie wykonany dalszy kod.