Excel VBA nicht aktives Blatt formatieren

Wenn ich den folgenden Code von der „Tabelle1“ aus aufrufe, bekomme ich einen Fehler 1004, Anwendungs- und objektdefinierter Fehler. Alle Versuche den Fehler abzufangen sind bei mir gescheitert. Weiß jemand Rat?

With Sheets("Tabelle3")
 .Range(Cells(2, 5), Cells(6, 5)).NumberFormat = "0.00" '
End With

Ich kann das ganze natürlich mit einem Sheets(„Tabelle3“).Select lösen, aber dann flackert der Bildschirm. Außerdem vermeiden gute Programmierer .Selct nach Möglichkeit :wink:

Weiß jemand Rat?

Probiers hiermit

With Sheets("Tabelle3")
 .Range("A1").NumberFormat = "0.00"
End With

statt

Weiß jemand Rat?

With Sheets(„Tabelle3“)
.Range(Cells(2, 5), Cells(6, 5)).NumberFormat = „0.00“ ’
End With

Hallo
Das Tabellenblatt muss natürlich zuerst selektiert werden, bevor man Änderungen darin vornehmen kann. Ich schlage Dir eine Alternative vor. Mache es mit Select, sowie Du beschrieben hast und setzte während dieser Zeit der Screenupdate auf false.
Screenupdating = False
Dann hat es sich ausgeflackert…
Vor dem Programmende natürlich wieder Aktivieren mit Screenupdating = True
Grüsse Sebastian

Danke, perfekt. Noch als Nachgang für spätere Besucher des Themas: Statt der bisherigen Variablen {Cells(6,5) hieß ja Cells (J,5)}
muss ich nun nur einen String bilden.
MyRange = „E2:E“ & J
und dann .Range(MyRange)…

Hallo Amtsschimmel,

du hast zwei Punkte vergessen, um die Referenz für „Cells“ zur Tabelle3 vollständig herzustellen.

 With Sheets("Tabelle3")
 .Range(.Cells(2, 5), .Cells(6, 5)).NumberFormat = "0.00" '
 End With

Viel Erfolg auf dem Weg zum guten Programmierer :wink:

Gruß
Franz

Hallo Amtsschimmel,

nach einem Test habe ich festgestellt, dass nur zwei Punte fehlen:
.Range(.Cells(2, 5), .Cells(6, 5)).NumberFormat = „0.00“

Gruß Hugo

Hallo,
ein bekanntes Problem.
Wenn Du statt Range(Cells(2, 5), Cells(6, 5))
die „harte“ Bezeichnung Range(„E2:E6“) nimmst, funktioniert es.
Damit bist Du natürlich nicht ganz so flexibel, aber es funktioniert.

Gruß,
Ptonka