Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Hilfe bei einer Userform

Betrifft: Hilfe bei einer Userform von: Langmantl
Geschrieben am: 03.11.2014 12:09:55

Problemstellung: Ich habe einen Wochenplan, dort wird habe ich mittels zweiten Tabellenblatt Feiertage und Urlaube definiert. Mittels Userform1 wird in Zelle A5 ein Wunschdatum geschrieben. Auf dem zweiten Tabellenblatt, sind die Feiertage und mein Urlaub ebenfalls mit Datum hinterlegt, so dass er in Zelle A8 nach Prüfung mit der Sverweis Formel die Arbeitsuhrzeit einträgt. Erkennt er einen Feiertag, dann trägt er anstatt Uhrzeit das Wort Frei ein. Das ist die Ausgangsbasis, die soweit funktioniert. Jetzt habe ich ein 2. Userform erstellt
in dieses Userform möchte ich u. A. eine von Uhrzeit eingeben. Jetzt soll er prüfen, am Besten unmittelbar nach eingabe der Uhrzeit, geht aber auch nach Click auf Commandbutton
prüfen soll er: Ist das Datum in der Zelle A5 ein Montag bis Donnerstag, dann darf er erst eine Von Zeit ab 16:30 zulassen. Am Freitag soll er eine Zeit ab 14:30 zulassen. Ist der Wochentag am Wochenende oder im der Zelle A8 steht Frei (also Feiertag oder Urlaub) kann er ohne einschränkung einen Zeiteintrag akzeptieren.

Ich weiß ich will da viel, aber wäre nett wenn einer mir mit dem Code hilft
Hier noch ein paar Angaben. Die Von Zeit habe ich als Variable v1 as String definiert,
Eingetragen wird Sie in Userform2 v1 = Me.TextBox2.Text

  

Betrifft: Ein paar kleine grundsätzliche Tipps von: {Boris}
Geschrieben am: 03.11.2014 12:39:20

Hi,

vorab: Du bist hier in einem sehr netten und umgänglichen und vor allen Dingen extrem kompetenten Forum gelandet. Und das ist hier auch eigentlich alles ganz einfach und unkompliziert.

So könnte man das machen:

-----
Hallo zusammen,

ich hab ein kleines Problem:

....Hier folgt jetzt die Problembeschreibung

Zur besseren Veranschaulichung hab ich eine Beispieldatei angehängt.

Ich würde mich über Hilfe freuen!

Viele Grüße

Dein Name

--------

Und wenn Du dann eine Antwort erhälst, dann antwortest Du mit

"Klasse - das war`s - hat mir sehr geholfen"

oder

"Danke für die Antwort. Ich habe aber noch Umsetzungsprobleme..."

oder so ähnlich.

Aber antworten sollstest Du in JEDEM Fall.

Ich garantiere Dir, dass Du dann auch kompetente Hilfe erhälst. ;-)

VG, Boris

P.S.: Und wenn die Frage noch nicht komplett beantwortet ist, dann kannst Du das Kontrollkästchen neben Deinem Passwort aktivieren - so wie ich das jetzt gemacht habe.


  

Betrifft: AW: Ein paar kleine grundsätzliche Tipps von: Langmantl
Geschrieben am: 03.11.2014 13:09:45

Danke für den Hinweiß, finde ich echt nett, werde es mir zu herzen nehmen und nochmals ENTSCHULDIGUNG dass ich nicht geantwortet habe.
Kannst du mir nun bei meinem Problem helfen?


  

Betrifft: AW: Ein paar kleine grundsätzliche Tipps von: Langmantl
Geschrieben am: 03.11.2014 13:10:07

Danke für den Hinweiß, finde ich echt nett, werde es mir zu herzen nehmen und nochmals ENTSCHULDIGUNG dass ich nicht geantwortet habe.
Kannst du mir nun bei meinem Problem helfen?


  

Betrifft: Auf Deine Frage hier... von: {Boris}
Geschrieben am: 03.11.2014 13:36:03

Hi,

prüfen soll er: Ist das Datum in der Zelle A5 ein Montag bis Donnerstag, dann darf er erst eine Von Zeit ab 16:30 zulassen. Am Freitag soll er eine Zeit ab 14:30 zulassen.

hab ich Dir bereits geantwortet. Der Unterschied waren nur die Zeiten - also das wirst Du selbst hinbekommen haben.

Wo ist also noch das Problem?

Ist der Wochentag am Wochenende oder im der Zelle A8 steht Frei (also Feiertag oder Urlaub) kann er ohne einschränkung einen Zeiteintrag akzeptieren.

ist nur noch eine weitere If-Abfrage - dafür steht Dir die Variable lngDay zu Verfügung.
Steht alles hier: https://www.herber.de/forum/messages/1390000.html

Also: Hast Du das erstmal schon umgesetzt? Wo hakt es genau?

VG, Boris


  

Betrifft: AW: Auf Deine Frage hier... von: Langmantl
Geschrieben am: 03.11.2014 13:52:26

Hi Boris, ich schicke dir einfach mal die Datei, allerdings ist das Userform 2 noch nicht fertig, aber dann siehst du meine Tabellenstruktur und wie die einzelnen Wochentage unterschiedlich sind. Habe bereits die Userform 2 erstellt, soll nachher so die Werte eintragen. Kannste dir ja mal ansehen.
Danke schon mal im Vorraus
https://www.herber.de/bbs/user/93508.xlsm


  

Betrifft: AW: Auf Deine Frage hier... von: {Boris}
Geschrieben am: 03.11.2014 14:01:31

Hi,

ich finde in der Datei nicht mal den Versuch, den Code von mir einzubauen.
Außerdem ist das Datum in A5 doch nur ein Bruchteil der Wahrheit B5, C5 etc. - darauf muss der Code doch auch noch reagieren. Wie genau soll das ablaufen?

Sorry, aber da fehlen mir für den Moment zu viele Infos - ich lass mal offen.

VG, Boris


  

Betrifft: AW: Auf Deine Frage hier... von: Langmantl
Geschrieben am: 03.11.2014 14:52:38

So, sollte jemand mir antworten, bitte nicht böse sein, wenn ich erst morgen ein Feedback senden kann, habe jetzt Feierabend


  

Betrifft: Ich glaube nicht... von: {Boris}
Geschrieben am: 03.11.2014 15:23:09

Hi,

...dass Du sehr viele Antworten erhalten wirst, da Deine Aufgabenstellung noch viel zu vage ist.
Neben der Tatsache, dass Du Codevorschläge nicht selbst zunächst mal umzusetzen versuchst, antwortest Du auch nicht auf Rückfragen.
In diesem konkreten Fall:

Außerdem ist das Datum in A5 doch nur ein Bruchteil der Wahrheit B5, C5 etc. - darauf muss der Code doch auch noch reagieren. Wie genau soll das ablaufen?

Aber vielleicht täusche ich mich ja auch ;-)

VG, Boris


  

Betrifft: AW: Ich glaube nicht... von: Langmantl
Geschrieben am: 04.11.2014 08:13:25

Hallo habe den Code von Boris eingebaut.
Denke, dass man den Code so umändern kann, dass er auch die Daten der anderen Zellen überprüft?
Warum funktioniert die Eintragung nicht, wenn ich Sie nach den Code einfüge, davor eingefügt funktioniert sie.
Wie müsste ich es ändern, dass er bereits nach der Eintragung prüft und nicht erst nach einfügen Button klicken.
https://www.herber.de/bbs/user/93530.xlsm


  

Betrifft: Mit Nutzung des Change-Ereignisses, aber erst ... von: Luc:-?
Geschrieben am: 04.11.2014 11:37:24

…nach Eingabe-Abschluss (mal in der VBE-Hilfe nachlesen!), Langmantl;
dann benötigst du auch keinen Button!
Gruß, Luc :-?


  

Betrifft: AW: Mit Nutzung des Change-Ereignisses, aber erst ... von: Langmantl
Geschrieben am: 04.11.2014 12:20:07

Habe das so umgesetzt, funxt aber nicht, Was habe ich falsch gemacht?

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Variablen Definieren'
Dim ch1 As String
Dim ch2 As String
Dim ch3 As String
Dim ch4 As String
Dim ch5 As String
Dim ch6 As String
Dim ch7 As String
Dim v1 As String
Dim v2 As String
Dim v3 As String
Dim v4 As String
Dim v5 As String
Dim v6 As String
Dim v7 As String
Dim b1 As String
Dim b2 As String
Dim b3 As String
Dim b4 As String
Dim b5 As String
Dim b6 As String
Dim b7 As String
Dim w1 As String
Dim w2 As String
Dim w3 As String
Dim w4 As String
Dim w5 As String
Dim w6 As String
Dim w7 As String
Dim datTest As Date
Dim datTest2 As Date
Dim datTest3 As Date
Dim datTest4 As Date
Dim datTest5 As Date
Dim datTest6 As Date
Dim datTest7 As Date
Dim lngDay As Long
Dim lngDay2 As Long
Dim lngDay3 As Long
Dim lngDay4 As Long
Dim lngDay5 As Long
Dim lngDay6 As Long
Dim lngDay7 As Long
Dim lngdayS As String
Dim lngDayS2 As String
Dim lngDayS3 As String
Dim lngDayS4 As String
Dim lngDayS5 As String
Dim lngDayS6 As String
Dim lngDayS7 As String
'Variablen den Check und Textboxen zuordnen'
ch1 = Me.CheckBox1
ch2 = Me.CheckBox2
ch3 = Me.CheckBox3
ch4 = Me.CheckBox4
ch5 = Me.CheckBox5
ch6 = Me.CheckBox6
ch7 = Me.CheckBox7
v1 = Me.TextBox2.Text
v2 = Me.TextBox6.Text
v3 = Me.TextBox10.Text
v4 = Me.TextBox15.Text
v5 = Me.TextBox19.Text
v6 = Me.TextBox23.Text
v7 = Me.TextBox27.Text
b1 = Me.TextBox3.Text
b2 = Me.TextBox7.Text
b3 = Me.TextBox11.Text
b4 = Me.TextBox14.Text
b5 = Me.TextBox20.Text
b6 = Me.TextBox24.Text
b7 = Me.TextBox28.Text
w1 = Me.TextBox4.Text
w2 = Me.TextBox8.Text
w3 = Me.TextBox12.Text
w4 = Me.TextBox13.Text
w5 = Me.TextBox17.Text
w6 = Me.TextBox21.Text
w7 = Me.TextBox25.Text
'Prüfung ob Zeit erlaubt erste Spalte'
On Error GoTo err_handler
datTest = CDate(v1)
lngDay = Weekday(Sheets(1).Range("A5"), vb1) Or lngDay = Weekday(Sheets(1).Range("A5"), vb2) Or  _
lngDay = Weekday(Sheets(1).Range("A5"), vb3) Or lngDay = Weekday(Sheets(1).Range("A5"), vb4) Or lngDay = Weekday(Sheets(1).Range("A5"), vb5) Or lngDay = Weekday(Sheets(1).Range("A5"), vb6) Or lngDay = Weekday(Sheets(1).Range("A5"), vb7)
lngdayS = Sheets(1).Range("a8").Text
If lngDay < 5 And lngdayS <> "Schließtag" And lngdayS <> "Feiertag" And lngdayS <> "Urlaub"  _
Then
    If datTest < "15:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("A5"), "ddd dd.mm") & " erst ab 15:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
ElseIf lngDay = 5 And lngdayS <> "Schließtag" And lngdayS <> "Feiertag" And lngdayS <> "Urlaub"  _
Then
    If datTest < "13:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("A5"), "ddd dd.mm") & " erst ab 13:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
End If
'Prüfung ob Zeit erlaubt zweite Spalte'
On Error GoTo err_handler
datTest2 = CDate(v2)
lngDay2 = Weekday(Sheets(1).Range("b5"), vb1) Or lngDay2 = Weekday(Sheets(1).Range("b5"), vb2)  _
Or lngDay2 = Weekday(Sheets(1).Range("b5"), vb3) Or lngDay2 = Weekday(Sheets(1).Range("b5"), vb4) Or lngDay2 = Weekday(Sheets(1).Range("b5"), vb5) Or lngDay2 = Weekday(Sheets(1).Range("b5"), vb6) Or lngDay2 = Weekday(Sheets(1).Range("b5"), vb7)
lngDayS2 = Sheets(1).Range("b8").Text
If lngDay2 < 5 And lngDayS2 <> "Schließtag" And lngDayS2 <> "Feiertag" And lngDayS2 <> "Urlaub"  _
Then
    If datTest2 < "15:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("b5"), "ddd dd.mm") & " erst ab 15:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
ElseIf lngDay2 = 5 And lngDayS2 <> "Schließtag" And lngDayS2 <> "Feiertag" And lngDayS2 <> " _
Urlaub" Then
    If datTest2 < "13:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("b5"), "ddd dd.mm") & " erst ab 13:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
End If
'Prüfung ob Zeit erlaubt dritte Spalte'
On Error GoTo err_handler
datTest3 = CDate(v3)
lngDay3 = Weekday(Sheets(1).Range("c5"), vb1) Or lngDay3 = Weekday(Sheets(1).Range("c5"), vb2)  _
Or lngDay3 = Weekday(Sheets(1).Range("c5"), vb3) Or lngDay3 = Weekday(Sheets(1).Range("c5"), vb4) Or lngDay3 = Weekday(Sheets(1).Range("c5"), vb5) Or lngDay3 = Weekday(Sheets(1).Range("c5"), vb6) Or lngDay3 = Weekday(Sheets(1).Range("c5"), vb7)
lngDayS3 = Sheets(1).Range("c8").Text
If lngDay3 < 5 And lngDayS3 <> "Schließtag" And lngDayS3 <> "Feiertag" And lngDayS3 <> "Urlaub"  _
Then
    If datTest3 < "15:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("c5"), "ddd dd.mm") & " erst ab 15:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
ElseIf lngDay3 = 5 And lngDayS3 <> "Schließtag" And lngDayS3 <> "Feiertag" And lngDayS3 <> " _
Urlaub" Then
    If datTest3 < "13:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("c5"), "ddd dd.mm") & " erst ab 13:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
End If
'Prüfung ob Zeit erlaubt vierte Spalte'
On Error GoTo err_handler
datTest4 = CDate(v4)
lngDay4 = Weekday(Sheets(1).Range("d5"), vb1) Or lngDay4 = Weekday(Sheets(1).Range("d5"), vb2)  _
Or lngDay4 = Weekday(Sheets(1).Range("d5"), vb3) Or lngDay4 = Weekday(Sheets(1).Range("d5"), vb4) Or lngDay4 = Weekday(Sheets(1).Range("d5"), vb5) Or lngDay4 = Weekday(Sheets(1).Range("d5"), vb6) Or lngDay4 = Weekday(Sheets(1).Range("d5"), vb7)
lngDayS4 = Sheets(1).Range("d8").Text
If lngDay4 < 5 And lngDayS4 <> "Schließtag" And lngDayS4 <> "Feiertag" And lngDayS4 <> "Urlaub"  _
Then
    If datTest4 < "15:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("d5"), "ddd dd.mm") & " erst ab 15:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
ElseIf lngDay4 = 5 And lngDayS4 <> "Schließtag" And lngDayS4 <> "Feiertag" And lngDayS4 <> " _
Urlaub" Then
    If datTest4 < "13:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("d5"), "ddd dd.mm") & " erst ab 13:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
End If
'Prüfung ob Zeit erlaubt fünfte Spalte'
On Error GoTo err_handler
datTest5 = CDate(v5)
lngDay5 = Weekday(Sheets(1).Range("e5"), vb1) Or lngDay5 = Weekday(Sheets(1).Range("e5"), vb2)  _
Or lngDay5 = Weekday(Sheets(1).Range("e5"), vb3) Or lngDay5 = Weekday(Sheets(1).Range("e5"), vb4) Or lngDay5 = Weekday(Sheets(1).Range("e5"), vb5) Or lngDay5 = Weekday(Sheets(1).Range("e5"), vb6) Or lngDay5 = Weekday(Sheets(1).Range("e5"), vb7)
lngDayS5 = Sheets(1).Range("e8").Text
If lngDay5 < 5 And lngDayS5 <> "Schließtag" And lngDayS5 <> "Feiertag" And lngDayS5 <> "Urlaub"  _
Then
    If datTest5 < "15:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("e5"), "ddd dd.mm") & " erst ab 15:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
ElseIf lngDay5 = 5 And lngDayS5 <> "Schließtag" And lngDayS5 <> "Feiertag" And lngDayS5 <> " _
Urlaub" Then
    If datTest5 < "13:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("e5"), "ddd dd.mm") & " erst ab 13:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
End If
'Prüfung ob Zeit erlaubt sechste Spalte'
On Error GoTo err_handler
datTest6 = CDate(v6)
lngDay6 = Weekday(Sheets(1).Range("f5"), vb1) Or lngDay6 = Weekday(Sheets(1).Range("f5"), vb2)  _
Or lngDay6 = Weekday(Sheets(1).Range("f5"), vb3) Or lngDay6 = Weekday(Sheets(1).Range("f5"), vb4) Or lngDay6 = Weekday(Sheets(1).Range("f5"), vb5) Or lngDay6 = Weekday(Sheets(1).Range("f5"), vb6) Or lngDay6 = Weekday(Sheets(1).Range("f5"), vb7)
lngDayS6 = Sheets(1).Range("f8").Text
If lngDay6 < 5 And lngDayS6 <> "Schließtag" And lngDayS6 <> "Feiertag" And lngDayS6 <> "Urlaub"  _
Then
    If datTest6 < "15:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("f5"), "ddd dd.mm") & " erst ab 15:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
ElseIf lngDay6 = 5 And lngDayS6 <> "Schließtag" And lngDayS6 <> "Feiertag" And lngDayS6 <> " _
Urlaub" Then
    If datTest6 < "13:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("f5"), "ddd dd.mm") & " erst ab 13:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
End If
'Prüfung ob Zeit erlaubt siebte Spalte'
On Error GoTo err_handler
datTest7 = CDate(v7)
lngDay7 = Weekday(Sheets(1).Range("g5"), vb1) Or lngDay7 = Weekday(Sheets(1).Range("g5"), vb2)  _
Or lngDay7 = Weekday(Sheets(1).Range("g5"), vb3) Or lngDay7 = Weekday(Sheets(1).Range("g5"), vb4) Or lngDay7 = Weekday(Sheets(1).Range("g5"), vb5) Or lngDay7 = Weekday(Sheets(1).Range("g5"), vb6) Or lngDay7 = Weekday(Sheets(1).Range("g5"), vb7)
lngDayS7 = Sheets(1).Range("g8").Text
If lngDay7 < 5 And lngDayS7 <> "Schließtag" And lngDayS7 <> "Feiertag" And lngDayS7 <> "Urlaub"  _
Then
    If datTest7 < "15:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("g5"), "ddd dd.mm") & " erst ab 15:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
ElseIf lngDay7 = 5 And lngDayS7 <> "Schließtag" And lngDayS7 <> "Feiertag" And lngDayS7 <> " _
Urlaub" Then
    If datTest7 < "13:00" Then
        MsgBox "Eingabe am " & Format(Sheets(1).Range("g5"), "ddd dd.mm") & " erst ab 13:00 Uhr  _
möglich, da Arbeit", , "Hinweis..."
        Exit Sub
    End If
End If
End Sub



  

Betrifft: AW: Mit Nutzung des Change-Ereignisses, aber erst ... von: Langmantl
Geschrieben am: 05.11.2014 09:29:09

ee


  

Betrifft: Das sollte sich doch auf eine UF beziehen, ... von: Luc:-?
Geschrieben am: 07.11.2014 03:47:21

…Langmantl;
darauf trifft dein neuer Thread mit meiner letzten AW besser zu.
Morrn, Luc :-?


  

Betrifft: AW: Das sollte sich doch auf eine UF beziehen, ... von: Langmantl
Geschrieben am: 07.11.2014 08:31:59

Ja das stimmt


 

Beiträge aus den Excel-Beispielen zum Thema "Hilfe bei einer Userform"