Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1664to1668
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

Unverständlicher Laufzeitfehler 1004

Unverständlicher Laufzeitfehler 1004
27.12.2018 20:30:30
Bernd
Hallo,
ich bin neu in der Programmierung mit VBA. Ich habe ein Makro welches eine Arbeitsmappe durchgeht und kleinere Formatierungen vornimmt. Hier der Code:
Option Explicit
Sub Formatierung()
Dim WS_Count As Long
Dim i As Long
WS_Count = ActiveWorkbook.Worksheets.Count
' Begin the loop.
For i = 1 To WS_Count
Dim lastrow As Long
Dim lastcolumn As Long
lastrow = Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Row
lastcolumn = Worksheets(i).Cells(2, Columns.Count).End(xlToLeft).Column
With Worksheets(i).PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
With Worksheets(i).Rows(2)
.Orientation = 65
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.RowHeight = 100
End With
With Worksheets(i).Range(Cells(2, 1), Cells(2, lastcolumn)).Borders
.LineStyle = xlContinuous
.Color = RGB(218, 225, 244)
End With
With Worksheets(i).Range(Cells(1, 1), Cells(1, lastcolumn))
.Merge
.Font.Bold = True
.Font.Color = RGB(94, 80, 150)
.WrapText = True
.EntireRow.AutoFit
End With
With Worksheets(i).Range(Cells(lastrow, 1), Cells(lastrow, lastcolumn))
.Merge
.Font.Bold = True
.Font.Color = RGB(94, 80, 150)
.WrapText = True
.EntireRow.AutoFit
End With
Next i
End Sub
Mein Problem taucht immer bei den With Befehlen auf die einen bestimmten Bereich bearbeiten. Also z.B. With Worksheets(i).Range(Cells(2, 1), Cells(2, lastcolumn)).Borders
Hier kommt immer bei einem anderen Arbeitsblatt der Laufzeitfehler 1004.
Wie gesagt bin ich neu in VBA aber auf manchen Blättern funktionierts und auf anderen nicht aber nicht immer an der selben Stelle.
Wäre super wenn mir hier wer helfen könnte.
Danke
Bernd

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Üblicher Anfängerfehler - unvollständige Referenz
27.12.2018 21:01:38
Luc:-?
Ja, Bernd,
das ist auch klar, Worksheets(i) hast du nur .Range zugeordnet, nicht aber auch Cells! Also müsstest du ggf 2× With verwenden:
With Worksheets(i): With .Range(.Cells(2, 1), .Cells(2, lastcolumn)).Borders
…und zum Schluss auch: End With: End With
Kannst du natürlich auch auf ExtraZeilen schreiben statt : zu verwenden.
Gruß, Luc :-?
AW: Üblicher Anfängerfehler - unvollständige Referenz
27.12.2018 21:12:49
Bernd
Auch dir Danke. Werd ich wie gesagt morgen testen.
AW: Üblicher Anfängerfehler - unvollständige Referenz
27.12.2018 21:53:13
Bernd
Habs jetzt mal eben mit folgendem Code ausprobiert:
Option Explicit
Sub Gallup_Formatierung()
Dim WS_Count As Long
Dim i As Long
WS_Count = ActiveWorkbook.Worksheets.Count
' Begin the loop.
For i = 1 To WS_Count
Dim lastrow As Long
Dim lastcolumn As Long
lastrow = Worksheets(i).Cells(Rows.Count, 1).End(xlUp).Row
lastcolumn = Worksheets(i).Cells(2, Columns.Count).End(xlToLeft).Column
With Worksheets(i).PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
With Worksheets(i)
With .Range(Cells(2, 1), Cells(2, lastcolumn)).Borders
.LineStyle = xlContinuous
.Color = RGB(218, 225, 244)
End With
End With
With Worksheets(i)
With .Range(Cells(1, 1), Cells(1, lastcolumn))
.Merge
.Font.Bold = True
.Font.Color = RGB(94, 80, 150)
.WrapText = True
.EntireRow.AutoFit
End With
End With
With Worksheets(i)
With .Range(Cells(lastrow, 1), Cells(lastrow, lastcolumn))
.Merge
.Font.Bold = True
.Font.Color = RGB(94, 80, 150)
.WrapText = True
.EntireRow.AutoFit
End With
End With
With Worksheets(i).Rows(2)
.Orientation = 65
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.RowHeight = 100
End With
Next i
End Sub
Aber leider bekomme ich wieder in der Zeile With .Range(Cells(2, 1), Cells(2, lastcolumn)).Borders einen Laufzeitfehler. Kanns vielleicht an etwas anderem liegen?
Anzeige
Wo ist der Pkt vor Cells geblieben? owT
27.12.2018 23:55:02
Luc:-?
:-?
wozu habe ich dir...
28.12.2018 09:05:40
Werner
Hallo Bernd,
...denn eigentlich den Code gepostet?
Gruß Werner
AW: Unverständlicher Laufzeitfehler 1004
27.12.2018 21:05:02
Werner
Hallo Bernd,
wohl ein Referenzierungsproblem. Um sauber und korrekt auf ein Blatt zu referenzieren, muss vor jedel Range Objekt (Range, Rows, Cells....) das jeweilige Blatt angegeben werden.
Um die dauernde schreiberei des Blattnamens zu vermeiden kannst du das Ganze in ein With End With packen. Da wird dann durch einen Punkt vor den Range Objekten (Range, Rows, Cells...) auf das Blatt referenziert, das du im With angegeben hast.
Versuch mal:
Sub Formatierung()
Dim i As Long, lastrow As Long, lastcolumn As Long
For i = 1 To ActiveWorkbook.Worksheets.Count
With Worksheets(i)
lastrow = .Cells(.Rows.Count, 1).End(xlUp).Row
lastcolumn = .Cells(2, .Columns.Count).End(xlToLeft).Column
End With
With Worksheets(i).PageSetup
.Orientation = xlLandscape
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
With Worksheets(i).Rows(2)
.Orientation = 65
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.RowHeight = 100
End With
With Worksheets(i)
With .Range(.Cells(2, 1), .Cells(2, lastcolumn)).Borders
.LineStyle = xlContinuous
.Color = RGB(218, 225, 244)
End With
End With
With Worksheets(i)
With .Range(.Cells(1, 1), .Cells(1, lastcolumn))
.Merge
.Font.Bold = True
.Font.Color = RGB(94, 80, 150)
.WrapText = True
.EntireRow.AutoFit
End With
End With
With Worksheets(i)
With .Range(.Cells(lastrow, 1), .Cells(lastrow, lastcolumn))
.Merge
.Font.Bold = True
.Font.Color = RGB(94, 80, 150)
.WrapText = True
.EntireRow.AutoFit
End With
End With
Next i
End Sub
Ist aber ungetestet.
Gruß Werner
Anzeige
AW: Unverständlicher Laufzeitfehler 1004
27.12.2018 21:12:23
Bernd
Super. Danke. Werd ich morgen gleich ausprobieren.
aha....
30.12.2018 14:48:37
Werner
Hallo Bernd,
...aber für eine Rückmeldung hat es dann nicht mehr gereicht?
Gruß Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige