2.2k Aufrufe
Gefragt in Tabellenkalkulation von

Hallo alle miteinanderwink

Ich bin hier im Forum eh auch schon alle Beiträge die irgendwie mit meinen Problem zusammen hängen durch gegangen und getestet aber ich finde den Fehler einfach nicht angry

Kurzerklärung. Die Datei wird geöffnet -> mit UserForm1.Show -> mit "Ja" bestätigt und mit Sub Mail() soll er den ganzen Code auf jedes TB ausführen. Nur irgendwie macht er das nicht er macht es immer nur für das akutelle TB angry wenn ich die Sub Mail() in jedem TB manuell aufrufe dann macht er es frown


Private Sub Workbook_Open()
UserForm1.Show
End Sub


Private Sub CommandButton1_Click()
Application.Run "Mail"
End Sub


Private Sub Mail()

Dim Zeile As Long
Zeile = 1
Check (Zeile)  'Sprung in den Aufruf Check()

End Sub

Private Sub Check(ByVal Zeile As Long)
    Dim WS As Worksheet
    Dim Urgenz1 As String
    Dim Urgenz2 As String
    Urgenz1 = "x"
    Urgenz2 = "x"
    Dim i As Long
    
    For Each WS In ThisWorkbook.Worksheets 'alle Tabellenblätter durchlaufen
    
    Const xlUp As Long = &HFFFFEFBE
    Debug.Print CStr(Cells(Rows.Count, 1).End(xlUp).Row) 
      
    For i = Zeile + 1 To Cells(Rows.Count, 1).End(xlUp).Row
        If (CDate(Cells(i, 7).Value) < DateTime.Date) And (CStr(Cells(i, 13).Value) = "x") Then ' Wenn Spalte "G" Datum = heutiges Datum & Spalte "M" auf "Leer" Dann
        'MsgBox "Email schon geschickt", vbInformation, "Fertig" 'Message Box als Hilfe stellung

        ElseIf (CDate(Cells(i, 7).Value) < DateTime.Date) And (CStr(Cells(i, 13).Value) = vbNullString) Then 'Wenn Spalte "G" Datum = heutiges Datum & Spalte "M" auf "Leer" Dann
            Cells(i, 13).Value = Urgenz1 'Füge Urgenz1 in Spalte M
            Call Send_Email(i)  'Aufruf Prozedur "Send_Email()"
        End If
        
        If (CDate(Cells(i, 8).Value) < DateTime.Date) And (CStr(Cells(i, 14).Value) = vbNullString) Then 'Wenn Spalte "H" Datum = heutiges Datum & Spalte "N" auf "Leer" Dann
            Cells(i, 14).Value = Urgenz2 'Füge Urgenz2 in Spalte N
            Call Send_Erinnerung(i)  'Aufruf Prozedur "Send_Erinnerung" 
        End If
    Next i
'    Call MsgBox("Fertig!", vbOKOnly)
    Next WS
End Sub


Kann mir bitte wer sagen was ich falsch mache und wo der verdammte Fehler ist cheeky. Bin echt schon am verzweifeln devil

Über dringende Hilfe wäre ich sehr dankbar.

LG SnowWhite

75 Antworten

0 Punkte
Beantwortet von snowwhite Mitglied (121 Punkte)

Hallo M.O.

dann geht es dir genau so wie mir wink

Ja gerne das ist der momentane stand ^^ Datei

GLG SnowWhite

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Bearbeitet von m-o

Hallo SnowWhite,

jetzt bin ich wieder auf dem neuesten Stand. Vielen Dank. Der Anfang wird dir bekannt vorkommen:

Ergänze im allgemeinen Modul vor Option Explicit die folgende Zeile:

Public strMail As String

Ergänze im VBA-Projekt der Userform den Code wie folgt:

Private Sub CommandButton1_Click()
strMail = "ja"
Application.Run "Schlüssel_Daten_löschen"
UserForm1.Hide
End Sub

Private Sub CommandButton2_Click()
strMail = "nein"
Application.Run "Schlüssel_Daten_löschen"
UserForm1.Hide
End Sub
Und hier die Änderungen im Code Schlüssel-Daten löschen:
Private Sub Schlüssel_Daten_löschen()
'-------------<Variation v. M.O. = /supportnet.de/>-------------
Dim i As Long
Dim t As Long
Dim arrTabellen As Variant

'Namen der neu angelegten Tabellenblätter aus Tabelle Test einlesen
With Worksheets("Test")
     arrTabellen = .Range(.Cells(1, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 1)) 'durchläuft alle Tabellenblätter
End With

For t = LBound(arrTabellen) To UBound(arrTabellen)
   With ThisWorkbook.Worksheets(CStr(arrTabellen(t, 1)))
        For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            If LCase(.Cells(i, 3).Value) = "x" Then         'mit LCase wird der Inhalt der Zelle in Kleinschrift dargestellt & wenn ich Spalte C ein "x" steht dann löschen
               'löscht die Inhalte aus den Spalten
                .Cells(i, 3).ClearContents 'Spalte C
                .Cells(i, 4).ClearContents 'Spalte D
                .Cells(i, 7).ClearContents 'Spalte G
                .Cells(i, 9).ClearContents 'Spalte I
                .Cells(i, 10).ClearContents 'Spalte J
                .Cells(i, 11).ClearContents 'Spalte K
            End If
        Next i
       End With
     Next t
If strMail = "ja" Then Call Mail

End Sub

Schau mal, ob alles so funktioniert wie gewünscht.

Gruß

M.O.

0 Punkte
Beantwortet von snowwhite Mitglied (121 Punkte)

Hallo M.O.

Bitte gerne :-) 

Vielen lieben Dank ^^ also ich habs getestet hat es hat funktioniert ^^ und noch mal weiter gegeben zum erneuten Test^^ ich hoffe das das jetzt passt und das nicht wieder Änderungen kommen! Ich sag dir dann bescheid.

GLG SnowWhite

0 Punkte
Beantwortet von snowwhite Mitglied (121 Punkte)

Guten Morgen M.O. 

Also langsam hab ich echt keinen Bock mehr angry

Die testen gerade die Datei  wenn Sie auf "Nein" oder "JA" button klicken hupft er in die "Sub Schlüssel_Daten_löschen" und zwar in die Zeile 

 With ThisWorkbook.Worksheets(CStr(arrTabellen(t, 1)))

 Und ich habe keine Ahnung :-(

Könntest du dir das kurz anschauen bitte ;-) ?

GLG SnowWhite

0 Punkte
Beantwortet von snowwhite Mitglied (121 Punkte)

Guten Morgen M. O.

Hat sich schon wieder erledigt ich hab die "Test" Tabelle eingeblendet und da stehen in den ersten Zeilen "1193, 1194, 1195, " und die Tabellen gibt es ja gar nicht weil wir haben es glaub ich doch so gemacht das er die Zelleninhalte aus der Spalte "A" mit den generierten Tabellenblätter  vergleicht oder irre ich mich jetzt?

GLG SnowWhite

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo SnowWhite,

in der Tabelle "Test" werden die neu angelegten Tabellenblätter abgelegt, damit diese durchlaufen werden können (da die anzulegenden bzw. angelegten Tabellenblätter ja aus der Tabelle Urliste gelöscht werden).

Gruß

M.O.
0 Punkte
Beantwortet von snowwhite Mitglied (121 Punkte)

Morgen M.O.

Ja stimmt :-) und er arbeitet ja dann auf Grund (Urliste wird gelöscht) dann weiter mit der "Test" ?
Ich frag mich gerade gefragt haben wir jetzt eigentlich bezgl dem Tabellen blätter löschen auch was gemacht ?

Ich verlier echt den Überblick langsam :-(

GLG SnowWhite

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)

Hallo SnowWhite,

ich habe mal eben nachgeschautwink. Die Einträge in dem Tabellenblatt Urliste werden nach dem Anlegen der neuen Tabellenblätter gelöscht.

Gruß

M.O.

0 Punkte
Beantwortet von snowwhite Mitglied (121 Punkte)

Hallo M.O.

ok ;-) Aber bezgl wenn Mitarbeiter vorhandene Tabellenblätter nicht mehr gebrauchen und das Tabellenblatt gelöscht wird von den Mitarbeiter -> da haben wir nichts gemacht oder ?

GLG SnowWhite

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo SnowWhite,

nein, da haben wir nichts gemacht. Aber beim Check-Makro wird ja geprüft, ob die Tabellen, die im Arbeitsblatt Test aufgeführt sind, existieren und nur dann werden die E-Mails versandt.

Gruß

M.O.
...