Supportnet Computer
Planet of Tech

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

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

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:


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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: