Makro beenden wenn zwei Bedingungen erfüllt sind

Hallo,

wieder eine Frage als Anfänger.

Habe eine Userform, die nach jeder Eingabe in den Textfeldern den Namen und das Datum schreibt. Abfrage der Namen kommen aus einer Spalte im Tabellenblatt.
Jetzt würde ich gern das Makro ergänzen, so das es wenn der letzte Mitarbeiter der Spalte mit Datum eingetragen ist eine MsgBox erscheint zB. " Alles eingetragen !" und das Makro wird beendet.

Wie wird sowas geschrieben.

Hier mein Makro : (aber nicht lachen ! Anfänger ! So geht es bis jetzt erstmal :smile:)

Private Sub CommandButton6_Click()
Dim lngZeile As Long
Dim drei As Worksheet
Dim TEXT As String
Set drei = Tabelle3
Dim iprüf As Integer
Dim btrue As Boolean
Dim idatum As Integer
Dim bdatum As Boolean

With Worksheets(„Import“)
lngZeile = IIf(Len(.Cells(.Rows.Count, 2)), .Rows.Count, .Cells(.Rows.Count, 2).End(xlUp).Row)
If Len(.Cells(lngZeile, 2).Value) > 0 Then lngZeile = lngZeile + 1

Do
For iprüf = 1 To 10
If Controls(„Optionbutton“ & iprüf).Value = True Then
btrue = True
Exit Do
End If
Next iprüf
If MsgBox(„Kostenstelle wählen“, vbOKOnly + vbQuestion, " Wichtig") = vbOK Then
Exit Sub
Else
iprüf = 1
End If

Loop Until btrue = True

Do
For idatum = 1 To 1
If Controls(„combobox“ & idatum).Value = True Then
bdatum = True
Exit Do
End If
Next idatum
If MsgBox(„datum wählen“, vbOKOnly + vbQuestion, " Wichtig") = vbOK Then
Exit Sub
Else
idatum = 1
End If

Loop Until bdatum = True

If OptionButton3.Value = True Then
.Cells(lngZeile, 2).Value = Label1.Caption
.Cells(lngZeile, 6).Value = drei.Range(„i5“)
.Cells(lngZeile, 3).Value = drei.Range(„h5“)
.Cells(lngZeile, 1).Value = ComboBox1.Value
UserForm1.Label10.Caption = „Montage“
lngZeile = lngZeile + 1
Call CommandButton1_Click
Call NameimLabel
End If

If OptionButton5.Value = True Then
.Cells(lngZeile, 2).Value = Label1.Caption
.Cells(lngZeile, 6).Value = drei.Range(„i7“)
.Cells(lngZeile, 3).Value = drei.Range(„h7“)
.Cells(lngZeile, 1).Value = ComboBox1.Value
lngZeile = lngZeile + 1
Call CommandButton1_Click
Call NameimLabel
End If

If OptionButton6.Value = True Then
.Cells(lngZeile, 2).Value = Label1.Caption
.Cells(lngZeile, 6).Value = drei.Range(„i8“)
.Cells(lngZeile, 3).Value = drei.Range(„h8“)
.Cells(lngZeile, 1).Value = ComboBox1.Value
lngZeile = lngZeile + 1
Call CommandButton1_Click
Call NameimLabel
End If

If OptionButton2.Value = True Then
.Cells(lngZeile, 2).Value = Label1.Caption
.Cells(lngZeile, 6).Value = drei.Range(„i6“)
.Cells(lngZeile, 3).Value = drei.Range(„h6“)
.Cells(lngZeile, 4).Value = TextBox1.Value
.Cells(lngZeile, 5).Value = TextBox2.Value
.Cells(lngZeile, 7).Value = TextBox3.Value
.Cells(lngZeile, 9).Value = TextBox4.TEXT
.Cells(lngZeile, 1).Value = ComboBox1.Value
lngZeile = lngZeile + 1
Call CommandButton1_Click
Call NameimLabel
End If

If OptionButton4.Value = True Then
.Cells(lngZeile, 2).Value = Label1.Caption
.Cells(lngZeile, 6).Value = drei.Range(„i8“)
.Cells(lngZeile, 3).Value = drei.Range(„h8“)
.Cells(lngZeile, 1).Value = ComboBox1.Value
lngZeile = lngZeile + 1
Call CommandButton1_Click
Call NameimLabel
End If

If OptionButton10.Value = True Then
Call NameimLabel
Call Abbrechen
End If

If OptionButton1.Value = True And _
UserForm1.Label10.Caption „“ And _
OptionButton11.Value = True Then

.Cells(lngZeile, 2).Value = Label1.Caption
.Cells(lngZeile, 6).Value = („8“)
.Cells(lngZeile, 3).Value = Label10.Caption
.Cells(lngZeile, 4).Value = TextBox1.Value
.Cells(lngZeile, 5).Value = TextBox2.Value
.Cells(lngZeile, 7).Value = TextBox3.Value
.Cells(lngZeile, 9).Value = TextBox4.TEXT
.Cells(lngZeile, 1).Value = ComboBox1.Value
lngZeile = lngZeile + 1
Call CommandButton1_Click
Call NameimLabel
Else
.Cells(lngZeile, 2).Value = Label1.Caption
.Cells(lngZeile, 6).Value = TextBox5.Value
.Cells(lngZeile, 3).Value = Label10.Caption
.Cells(lngZeile, 4).Value = TextBox1.Value
.Cells(lngZeile, 5).Value = TextBox2.Value
.Cells(lngZeile, 7).Value = TextBox3.Value
.Cells(lngZeile, 9).Value = TextBox4.TEXT
.Cells(lngZeile, 1).Value = ComboBox1.Value
lngZeile = lngZeile + 1
Call CommandButton1_Click
Call NameimLabel
End If

End With
End Sub

Danke im Voraus !

LG Alex

Moin, Alex,

Wie wird sowas geschrieben.

sub MeineSub()
 ...
 if then
 MsgBox "Dein Text"
 Exit Sub
 end if
 ...
end sub

Gruß Ralf

Hallo Ralf,

konnte mit Deiner Antwort nichts so richtig anfangen.
Habe hier mal mein Makro angefügt :

Private Sub Speichern()

Dim Tab2 As Worksheet
Dim Tab1 As Worksheet
Dim Name As Range
Dim Datum As Range
Dim BedArr1 As Variant
Dim BedArr2 As Variant
Dim BedOK As Boolean
Dim i As Long
Dim j As Long
Dim lngZeile As Long

Set frm1 = UserForm1
Set Tab1 = Worksheets(„Tabelle1“)
Set Tab2 = Worksheets(„Tabelle2“)
Set Name = Worksheets(„Tabelle1“).Range(„b1:b100“)
BedArr1 = Tab2.Range(„A1:A10“).Value
BedArr2 = frm1.ComboBox1.Value

For i = LBound(BedArr1) To UBound(BedArr1)
For j = LBound(BedArr2) To UBound(BedArr2)
If BedArr1(i, 2) = Name.Value And _
BedArr2(j, 1) = frm1.ComboBox1.Value Then
BedOK = True
Exit For
End If
Next i
Next j
Exit Sub
MsgBox " Mitarbeiter zum Datum eingetragen"

With Worksheets(„Tabelle1“)
lngZeile = IIf(Len(.Cells(.Rows.Count, 2)), .Rows.Count, .Cells(.Rows.Count, 2).End(xlUp).Row)
If Len(.Cells(lngZeile, 2).Value) > 0 Then lngZeile = lngZeile + 1
If OptionButton1.Value = True Then
.Cells(lngZeile, 2).Value = Label2.Caption
.Cells(lngZeile, 1).Value = ComboBox1.Value
lngZeile = lngZeile + 1
Call NameimLabel
End If
If OptionButton2.Value = True Then
Call NameimLabel
End If
End With
End Sub

ComboBox1 ist Datum ! (in der Userframe)
Label2 ist der Mitarbeitername ! (in der Userframe)

Aber es geht nicht ! Wo liegt der Fehler ?

Alex

Moin, ALex,

konnte mit Deiner Antwort nichts so richtig anfangen.

so geht’s mit mit Deiner Frage :smile:

In gefühlten 50 Zeilen Code können etwa 50 Fehler stecken, eher mehr. Deshalb werd ich den Deibel tun und Dein Codíng im Trockentest nachfahren.

Geh mal in den VBA-Editor und lass das Makro schrittweise (F8) ablaufen. Verfolge den Ablauf Schritt für Schritt, dann solltest Du verstehen, was da geschieht. Und wenn es dann immer noch hakt, melde Dich nochmal.

Gruß Ralf

Ach ja, nochwas:

Aber es geht nicht !

ist keine VBA-Meldung, vor allem ist „es“ etwas wunderbar Seidenweiches - darüber kann man plauschen, zur Fehlersuche taugt es nicht.

Morgen Ralf,

drücke mich manchmal unverständlich aus ! Das gebe ich zu !

Werde mal als Anfänger Deinen Rat befolgen und es mit F8 versuchen ! Gute Idee !

Danke erstmal !

Alex

Ok, komme nicht weiter

Habe hier mein Makro. Muß es nur erweitern ! Aber wie ! So etwa „Schleife“ in der „Schleife“ !

Public Sub NamenList()
Dim ws1 As Worksheet
Dim i As Long
Dim Name As Range
Dim OK As Boolean

Set ws1 = Worksheets(„Tabelle1“)
bedg = ws1.Range(„f1:f15“).Value
Set Name = ws1.Range(„A1“)

For i = LBound(bedg) To UBound(bedg)
If bedg(i, 1) = Name.Value Then
OK = True
End If
Next i
If OK Then
MsgBox " Name vorhanden"
Else
MsgBox „Name nicht vorhanden“
End If
End Sub

Eingetragene Namen in Spalte A mit Bedingungsliste in Spalte F. Schaffe es nur, den Namen aus A1 zuvergleichen ! Würde gern den Rest auch abfragen ! Wie ändere ich das ?
Eingetragenes Datum in Spalte B nach Bedingung Datum in Zelle G.

Mehr kann ich als Änfänger noch nicht per Makro erstellen !

Alex