Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1496to1500
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

unerklärlicher Laufzeitfehler bei Zellformatierung

unerklärlicher Laufzeitfehler bei Zellformatierung
06.06.2016 12:50:45
Winfried
Hallo zusammen,
ich hab ein Problem, welches ich mir nicht wirklich erklären kann.
Meine Datei hat mehrere Tabellenblätter, bei denen ich u.A. die Zellfarbe ändern möchte.
Wenn die entsprechende Tabelle aktiv ist (ich sie mir während der Änderung ansehe), klappt alles wunderbar. Schaue ich mir aber ein andrees Tabellenblatt an, bekomme ich einen Laufzeitfehler '1004'.
Kann mir jemand vielleicht dankenswerter Weise erklären wo hier der Fehler liegt?
Die Formatierung läuft in einer Schleife über die Tabelle und es werden nachfolgende Programmzeilen genutzt:
With ThisWorkbook
Rem Zellfarbe ändern
.Worksheets("DD_Matrix").Range(Cells(3, 3), Cells(102, 102)).Interior.Color = RGB(0, 0, 0)
Rem Rahmenfarbe ändern
.Worksheets("DD_Matrix").Range(Cells(3, 3), Cells(102, 102)).Borders.Color = RGB(255, 255,  _
255)
Rem Schriftfarbe ändern
.Worksheets("DD_Matrix").Range(Cells(3, 3), Cells(102, 102)).Font.Color = RGB(255, 255, 255) _
Rem Schrift dick machen
.Worksheets("DD_Matrix").Range(Cells(3, 3), Cells(102, 102)).Font.Bold = True

Komischerweise klappt die Befüllung mit einer Formel (und der Eintrag des daraus resultierenden Wertes) ohne Probleme, auch wenn ich nicht in dem Tabellenblatt bin:
   .Worksheets("DD_Matrix").Cells(i, j).FormulaR1C1 = "='Eingabemaske'!R38C3"
.Worksheets("DD_Matrix").Cells(i, j) = .Worksheets("DD_Matrix").Cells(i, j).Value
Vielen Dank im Voraus für eure Mühen.
VG
Winfried

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Der Fehler, den wohl jeder machen muss
06.06.2016 13:06:42
Daniel
Hi
der Fehler liegt an folgendem:
1. Wenn eine Range auf einem Bestimmten Tabellenblatt liegen soll, dann müssen auch die beiden Cells, die die Range definieren, auf dem gleichen Tabellenblatt liegen
2. Wenn vor Cells/Range/Columns/Rows kein Tabellenblatt davor steht, dann setzt VBA automatisch das aktive Tabellenblatt ein (bzw das Tabellenblatt des Moduls, wenn der Code in einen Tabellenblattmodul liegt)
Das gilt auch, wenn das Cells/Range/Columns/Rows innerhalb einer Funtktion steht.
Du musst also bei Range(Cells, Cells) das Tabellenblatt nicht nur vor der Range, sondern auch vor den beiden Cells hinschreiben.
.Worksheets("DD_Matrix").Range(.Worksheets("DD_Matrix").Cells(3, 3), .Worksheets("DD_Matrix").Cells(102, 102)).Interior.Color = RGB(0, 0, 0)

oder du arbeitest mit Resize, um einen grösseren Zellbereich zu beschreiben:
.Worksheets("DD_Matrix").Cells(3, 3).Resize(100, 100).Interior.Color = RGB(0, 0, 0)

Gruß Daniel

Anzeige
AW: Der Fehler, den wohl jeder machen muss
06.06.2016 17:40:12
Winfried
Hi Daniel,
vielen Dank für deine Hilfe, hat bestens geklappt :o)
VG
Winfried

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige