Supportnet / Forum / Tabellenkalkulation
Inputbox Bedingung
Frage
Hallo zusammen,
ich habe das u.a. kleine Makro gemacht und würde es gerne um die Bedingung ergänzen, dass nur eine Eingabe zwischen Spalte N bis Spalte BC möglich ist, ansonsten soll eine Fehlermeldung kommen.
Wäre schön, wenn mir jemand helfen könnte. THX.
Gruß
Kalle
Sub hide_columns_under_writeprotect()
ActiveSheet.Protect userinterfaceonly:=True
Dim column1 As String
column1 = InputBox("HIDE Column FROM:" & Chr(13) & "AUSBLENDEN Spalte VON:" & Chr(13) & "i.e./z.B.: N")
Dim column2 As String
column2 = InputBox("HIDE Column TO :" & Chr(13) & "AUSBLENDEN Spalte BIS:" & Chr(13) & "i.e./z.B.: BC")
Columns(column1 & ":" & column2).EntireColumn.Hidden = True
Selection.EntireColumn.Hidden = False
End Sub
Antwort 1 von powder
Hallo kalle,
wie wäre es z.B. mit einer Do ... Until Schleife in welche du einfach deine Inputbox-Abfrage packst.
Grüße Tino
wie wäre es z.B. mit einer Do ... Until Schleife in welche du einfach deine Inputbox-Abfrage packst.
Grüße Tino
Antwort 2 von kalle
wie funtkioniert die do... until schleife???
habe es mit IF/THEN versucht, bin aber noch nicht so fit und weiß nicht wie er erkennen kann, dass z.B. bei der Eingabe ein B kleiner ist als ein F.
Sub hide_columns_under_writeprotect()
ActiveSheet.Protect userinterfaceonly:=True
Dim column1 As String
nochmal:
column1 = InputBox("HIDE Column FROM:" & Chr(13) & "AUSBLENDEN Spalte VON:" & Chr(13) & "i.e./z.B.: N")
If column1 < F Then
MsgBox "Please use columns between N and BC"
GoTo nochmal
End If
Dim column2 As String
column2 = InputBox("HIDE Column TO :" & Chr(13) & "AUSBLENDEN Spalte BIS:" & Chr(13) & "i.e./z.B.: BC")
Columns(column1 & ":" & column2).EntireColumn.Hidden = True
Selection.EntireColumn.Hidden = False
End Sub
habe es mit IF/THEN versucht, bin aber noch nicht so fit und weiß nicht wie er erkennen kann, dass z.B. bei der Eingabe ein B kleiner ist als ein F.
Sub hide_columns_under_writeprotect()
ActiveSheet.Protect userinterfaceonly:=True
Dim column1 As String
nochmal:
column1 = InputBox("HIDE Column FROM:" & Chr(13) & "AUSBLENDEN Spalte VON:" & Chr(13) & "i.e./z.B.: N")
If column1 < F Then
MsgBox "Please use columns between N and BC"
GoTo nochmal
End If
Dim column2 As String
column2 = InputBox("HIDE Column TO :" & Chr(13) & "AUSBLENDEN Spalte BIS:" & Chr(13) & "i.e./z.B.: BC")
Columns(column1 & ":" & column2).EntireColumn.Hidden = True
Selection.EntireColumn.Hidden = False
End Sub
Antwort 3 von powder
Hallo Kalle,
die Do Until schleife ist ähnlich wie Dein Ansatz nur ohne diese Sprungbedingung. Siehe auch Excel Hilfe (Alternative auch Do While mit Gegenteiliger Bedingung)
Syntax
Do Until (Prüfung)
Ausführung
Loop
Damit es für Dich schneller nachvollziebar ist habe ich deine IF Schleife belassen nur die Bedingung mit Hilfe von Like formuliert hoffe du kommst klar:
Grüße tino
die Do Until schleife ist ähnlich wie Dein Ansatz nur ohne diese Sprungbedingung. Siehe auch Excel Hilfe (Alternative auch Do While mit Gegenteiliger Bedingung)
Syntax
Do Until (Prüfung)
Ausführung
Loop
Damit es für Dich schneller nachvollziebar ist habe ich deine IF Schleife belassen nur die Bedingung mit Hilfe von Like formuliert hoffe du kommst klar:
Sub hide_columns_under_writeprotect()
ActiveSheet.Protect userinterfaceonly:=True
Dim column1 As String
nochmal:
column1 = InputBox("HIDE Column FROM:" & Chr(13) & "AUSBLENDEN Spalte VON:" & Chr(13) & "i.e./z.B.: N")
If (UCase(column1) Like "[N-Z]") Or (UCase(column1) Like "A[A-Z]") Or (UCase(column1) Like "B[A-C]") Then
MsgBox "Please use columns between N and BC"
GoTo nochmal
End If
Dim column2 As String
column2 = InputBox("HIDE Column TO :" & Chr(13) & "AUSBLENDEN Spalte BIS:" & Chr(13) & "i.e./z.B.: BC")
Columns(column1 & ":" & column2).EntireColumn.Hidden = True
Selection.EntireColumn.Hidden = False
End Sub
Grüße tino
Antwort 4 von kalle
SUPER, vielen Dank für die Info, läuft genau wie ich es brauche.
Weißt Du zufällig, wie man unterbindet, dass die Fehlermeldung mit dem Laufzeitfehler kommt, wenn man auf Abbrechen während des Makros drückt.
Grüße
Holger
Weißt Du zufällig, wie man unterbindet, dass die Fehlermeldung mit dem Laufzeitfehler kommt, wenn man auf Abbrechen während des Makros drückt.
Grüße
Holger
Antwort 5 von powder
Hi Kalle,
da muss ich passen. Warum stört die dich denn?? Läuft das Makro so lange? Normalerweise ist es ja Sinnvoll wenn du das Makro abbrichst eine Fehlermeldung zu machen und dir die Wahl zu lassen ob du zum Code gehst (debuggen) oder abbrichst.
Grüße Tino
da muss ich passen. Warum stört die dich denn?? Läuft das Makro so lange? Normalerweise ist es ja Sinnvoll wenn du das Makro abbrichst eine Fehlermeldung zu machen und dir die Wahl zu lassen ob du zum Code gehst (debuggen) oder abbrichst.
Grüße Tino

