Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Anwendungsfehler With ThisWorkbook.Worksheets ...

Forumthread: Anwendungsfehler With ThisWorkbook.Worksheets ...

Anwendungsfehler With ThisWorkbook.Worksheets ...
18.06.2007 17:52:23
Peter
Liebes Forum
Ich versuche einem Bereich eine bedingte Formatierung zuzuweisen. Der Bereich setzt sich zusammen aus einem Bereich "ySoll" und einem Bereich "yHaben". Die Summe aller Zahlen muss NULL geben. Ist dies nicht der Fall, sollen die Bereiche rot markiert werden. Diese Farbe habe ich standardmässig zugewiesen und wenn die Summe tatsächlich null gibt, soll die Farbe mit "keine Farbe" (bei Farben anwählbar) überschrieben werden.
Dieser Code hat ein Problem mit der Zeile With ThisWorkbook.Worksheets("Original-Journal").Range("rngBereich") - mir ist jedoch nicht klar, worin das Problem liegt.
Desweiteren weiss ich deswegen nicht, ob der untere Teil des Codes funktioniert. Insbesondere sehe ich im Code die Farbe ("keine Farbe") nicht enthalten. Ich habe den Code auf Grundlage der Makroaufzeichnung angepasst und übernommen.
Kann mir jemand helfen?
Besten Dank, Peter

Sub Journal_kopieren()
Dim rngBereich As Range
ThisWorkbook.Worksheets("Original-Journal").Cells.Copy Destination:=ThisWorkbook.Worksheets(" _
Journal-zum-bearbeiten").Range("A1")
Set rngBereich = Union(Range("ySoll"), Range("yHaben"))
With ThisWorkbook.Worksheets("Original-Journal").Range("rngBereich")
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=RUNDEN(SUMME(ySoll)+SUMME(yHaben);1)=0"
End With
End Sub


Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anwendungsfehler With ThisWorkbook.Worksheets ...
18.06.2007 19:09:09
Harry
Hallo Peter,
den "ThisWorkbook"-Aufruf verwende ich standardmäßig nur für AddIns.
Vielleicht funktioniert's, wenn Du "ThisWorkbook" durch "ActiveWorkbook" ersetzt.
Gruß
Harry

AW: Anwendungsfehler With ThisWorkbook.Worksheets ...
18.06.2007 19:17:00
Peter
Hallo
Mit "ActiveWorkbook" funktioniert's leider auch nicht.
Weiss noch jemand Rat?
Gruss, Peter

Anzeige
AW: Anwendungsfehler With ThisWorkbook.Worksheets ...
18.06.2007 20:13:00
Harry
Hallo Peter,
vielleicht so:

Sub Journal_kopieren()
Dim rngBereich As Range
ThisWorkbook.Worksheets("Original-Journal").Cells.Copy _
Destination:=ThisWorkbook.Worksheets("Journal-zum-bearbeiten").Range("A1")
Worksheets("Original-Journal").Activate
Set rngBereich = Application.Union(Range(ySoll), Range(yHaben))
With rngBereich
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=RUNDEN(SUMME(ySoll)+SUMME(yHaben);1)=0"
End With
End Sub


Gruß
Harry

Anzeige
AW: Anwendungsfehler With ThisWorkbook.Worksheets ...
18.06.2007 20:11:47
Fred
Hi,
Referenzierung unzureichend:
Set rngBereich = Union(Range("ySoll"), Range("yHaben"))
mfg Fred
;
Anzeige

Infobox / Tutorial

Anwendungsfehler mit ThisWorkbook.Worksheets beheben


Schritt-für-Schritt-Anleitung

  1. Öffne das VBA-Editor-Fenster: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deinWorkbookName)", wähle "Einfügen" und dann "Modul".

  3. Kopiere den folgenden Code in das Modul:

    Sub Journal_kopieren()
       Dim rngBereich As Range
       ThisWorkbook.Worksheets("Original-Journal").Cells.Copy _
       Destination:=ThisWorkbook.Worksheets("Journal-zum-bearbeiten").Range("A1")
    
       Set rngBereich = Application.Union(ThisWorkbook.Worksheets("Original-Journal").Range("ySoll"), _
       ThisWorkbook.Worksheets("Original-Journal").Range("yHaben"))
    
       With rngBereich
           .FormatConditions.Delete
           .FormatConditions.Add Type:=xlExpression, Formula1:= _
           "=RUNDEN(SUMME(ySoll)+SUMME(yHaben);1)=0"
       End With
    End Sub
  4. Führe das Makro aus: Drücke F5 oder gehe zu "Ausführen" und wähle "Sub/UserForm ausführen".

  5. Überprüfe die bedingte Formatierung: Stelle sicher, dass die Bereiche "ySoll" und "yHaben" korrekt definiert sind.


Häufige Fehler und Lösungen

  • Fehler: "Anwendungsfehler": Dieser Fehler tritt häufig auf, wenn der Bereich nicht korrekt referenziert wurde. Achte darauf, dass die Namen der Bereiche ("ySoll" und "yHaben") in der Arbeitsmappe korrekt sind.

  • Lösung: Stelle sicher, dass du ThisWorkbook.Worksheets("Original-Journal").Range("ySoll") verwendest, um sicherzustellen, dass du auf den richtigen Arbeitsblattbereich zugreifst.

  • Fehler: Ungültige Formatierung: Wenn die Formatierung nicht wie gewünscht funktioniert, stelle sicher, dass du .FormatConditions.Delete vor dem Hinzufügen neuer Bedingungen verwendest.


Alternative Methoden

  • Verwendung von ActiveWorkbook: Wenn du mit verschiedenen Arbeitsmappen arbeitest, kann es sinnvoll sein, ActiveWorkbook anstelle von ThisWorkbook zu verwenden. So kannst du beispielsweise:

    Set rngBereich = Application.Union(ActiveWorkbook.Worksheets("Original-Journal").Range("ySoll"), _
    ActiveWorkbook.Worksheets("Original-Journal").Range("yHaben"))
  • Direkte Referenzierung: Du kannst auch die Referenzierung auf ThisWorkbook.Worksheets(1) verwenden, um auf das erste Arbeitsblatt zuzugreifen.


Praktische Beispiele

Hier ein Beispiel, wie du die bedingte Formatierung für einen Bereich anwendest:

Sub Beispiel_Formatierung()
    Dim rngBereich As Range
    Set rngBereich = ThisWorkbook.Worksheets("Original-Journal").Range("A1:A10")

    With rngBereich
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="=100"
        .FormatConditions(1).Interior.Color = RGB(255, 0, 0) ' Rot
    End With
End Sub

In diesem Beispiel wird der Bereich A1:A10 auf Werte größer als 100 formatiert.


Tipps für Profis

  • Verwende Fehlerbehandlung: Integriere Fehlerbehandlungsroutinen, um Anwendungsfehler abzufangen. Beispiel:

    On Error GoTo Fehlerbehandlung
    ' Dein Code hier
    Exit Sub
    Fehlerbehandlung:
    MsgBox "Fehler: " & Err.Description
  • Verwende Debug.Print: Nutze Debug.Print in deinem Code, um Informationen zur Laufzeit im Direktfenster anzuzeigen. So kannst du leichter Fehler finden und beheben.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen ThisWorkbook und ActiveWorkbook? ThisWorkbook bezieht sich auf die Arbeitsmappe, in der der Code ausgeführt wird, während ActiveWorkbook die aktuell aktive Arbeitsmappe darstellt.

2. Wie kann ich die bedingte Formatierung entfernen? Verwende .FormatConditions.Delete, um alle bestehenden Formatierungen für einen Bereich zu entfernen, bevor du neue hinzufügst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige