427 Aufrufe
Gefragt in Tabellenkalkulation von jelena Mitglied (737 Punkte)

Hallo guten Tag, hätte widermal eine Bitte. Wenn ich dieses Makro ein 2tes mal ausführen möchte (aus versehen) soll nichts ausgeführt werden da sonst eine Fehlermeldung kommt. Danke

Private Sub CommandButton1_Click()
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "WENN(C4="""";""0"";""x"")"
    Range("D4").Select
    ActiveSheet.Paste
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]="""",""0"",""x"")"
    Range("D4").Select
    Selection.AutoFill Destination:=Range("D4:D466"), Type:=xlFillDefault
    Range("D4:D466").Select
    
    Selection.AutoFilter
    ActiveSheet.Range("$D$4:$D$466").AutoFilter Field:=1, Criteria1:="0"
    Rows("5:465").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$D$4:$D$235").AutoFilter Field:=1
    Range("C4:D4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("C4:C235").Select
    Selection.Copy
    
    Range("E3").Select
    ActiveSheet.Paste
    Range("E3").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("D4").Select
    Selection.End(xlDown).Select
    Rows("235:235").Select
    Selection.ClearContents
    ActiveWindow.SmallScroll Down:=-210
    Range("E4").Select
    'Selection.AutoFilter
    Selection.AutoFilter
    
    Range("F3").Select
    Selection.AutoFill Destination:=Range("F3:F234")
    Range("F3:F234").Select
    Selection.AutoFilter
    Selection.AutoFilter
    ActiveSheet.Range("$F$3:$F$234").AutoFilter Field:=1, Criteria1:="WAHR"
    Rows("5:5").Select
    
    Rows("5:233").Select
    Selection.Delete Shift:=xlUp
    ActiveSheet.Range("$F$3:$F$119").AutoFilter Field:=1
    Range("E4").Select
    
    Range("F3:G3").Select
    Selection.AutoFilter
    Selection.AutoFilter
    Range("G3").Select
    Selection.AutoFill Destination:=Range("G3:G119")
    Range("G3:G119").Select
    Range("A1").Select
End Sub

Meine Fehlermeldung

13 Antworten

+1 Punkt
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jelena,

das sind 2 verschiedene Dinge: geht es nun darum dass die Codezeile einen Fehler auslöst oder geht es darum, dass das Makro nur ausgeführt werden darf wenn in D4 kein "x" steht?

Zum 1. Fall hatte ich bereits einiges geschrieben - d.h. der Fehler wird immer wieder auftreten wenn du vor Ausführung des Makro nichts kopiert hast und deshalb die Zwischenablage leer ist.

Im 2. Fall musst du nur an den Anfang deines Codes die folgende Zeile schreiben:

If Range("D4") = "x" Then Exit Sub

Bis später, Karin

0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)

Hallo Karin, besten Dank der folgende Code If Range("D4") = "x" Then Exit Sub war was ich brauchte. Nochmals Danke

0 Punkte
Beantwortet von jelena Mitglied (737 Punkte)
Bearbeitet von jelena

Hallo Karin guten Tag hätte da noch eine Bitte. Wäre es möglich wenn ich in excel bedingte formatierung die Formel =UND(D$3=HEUTE()) habe daß die Spalte mit dem Datum HEUTE in der mitte der Tabelle dargestellt wird und nicht links oder rechts in der Tabelle. Hier mein Makro, leider am Anfang nicht mitgeschickt. Danke

Sub zu_heute()
    Dim rngDatum As Range
    Set rngDatum = Rows(3).Find(Date, lookat:=xlWhole, LookIn:=xlFormulas)
    If Not rngDatum Is Nothing Then
        Application.Goto reference:=Cells(ActiveCell.Row, rngDatum.Column)
    Else
        MsgBox "Datum nicht gefunden!"
    End If
End Sub

...