Anzeige
Archiv - Navigation
1900to1904
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

Fehler in Code

Fehler in Code
22.09.2022 15:14:10
Henry
Hallo,
ich habe folgenden Code mit dem ich Blatt 2 fülle.
Der Code funktioniert einwandfrei solange ich Blatt 2 angewählt habe.
Wenn ich den Code aber über den Button in Blatt 1 ausführen möchte, kommt eine Fehlermeldung.
Anwendungs- oder objektorienter Fehler.
Es wird folgende Code Zeile markiert.
.Range(Cells(i, "D"), Cells(i, "H")).FillDown
Hat hier jemand einen Rat?

Sub transferdata()
Dim h As Long, i As Long, j As Long, k As Long
h = Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
With Sheets(2)
i = .Cells(1, 4).End(xlDown).Row + 1
.Rows(i).Insert
.Cells(i, 3) = Sheets(1).Cells(h, 2)
.Range(Cells(i, "D"), Cells(i, "H")).FillDown
j = Sheets(2).Cells(i + 2, 3).End(xlDown).Row + 1
.Rows(j).Insert
.Cells(j, 3) = Sheets(1).Cells(h, 2)
.Range(Cells(j, "D"), Cells(j, "H")).FillDown
k = .Cells(j + 2, 3).End(xlDown).Row + 1
.Rows(k).Insert
.Cells(k, 3) = Sheets(1).Cells(h, 2)
.Range(Cells(k, "D"), Cells(k, "H")).FillDown
End With
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler in Code
22.09.2022 15:19:51
Rudi
Hallo,
die fehlt jeweils ein . vor Cells.
.Range(.Cells(i, "D"), .Cells(i, "H")).FillDown
Gruß
Rudi
AW: Fehler in Code
22.09.2022 15:21:17
Henry
Hallo Rudi,
vielen Dank! :-)
AW: Fehler in Code
22.09.2022 15:22:29
GerdL
Moin Henry!
.Range(.Cells(k, "D"), .Cells(k, "H")).FillDown
Frage: Bis wohin soll der FillDown gehen?
Gruß Gerd
AW: Fehler in Code
22.09.2022 15:31:16
Daniel
Hi
Cells oder Range ohne eine Tabellenblattangabe davor beziehen sich immer auf das aktive Tabellenblatt*.
Das gilt auch, wenn sie in eine andere Funktion er eingebettet sind, dh bei Range(cells(), Cells()) wird das Tabellenblatt vor Range nicht auf die beiden Cells übertragen, diese sind da eigenständig.
Der Fehler entsteht, wenn die beiden Cells auf einem anderen Tabellenblatt liegen als die Range , die sie definieren sollen.
Daher so wie von Rudi beschrieben.
Im Prinzip darfst du sogar die Tabellenblattangabe vor der Range weglassen, denn diese wird dann von den Cells übernommen, aber eben nicht umgekehrt.
Gruß Daniel
* Kleine Ausnahme: liegt der Code in einem Tabellenblattmodul, dann wird bei fehlender Blattangabe nicht das aktive Blatt eingesetzt, sondern das Blatt des Moduls.
Dann muss auch vor Range immer die Blattangabe stehen
Anzeige
AW: Fehler in Code
22.09.2022 15:35:49
Daniel
Hi
Noch ein Tip:
Verwende Resize, um Zellbereiche zu beschreiben:
Aus: .Range(Cells(i, "D"), Cells(i, "H")).FillDown
Wird: .Cells(i, "D").Resize(1, 5).Filldown
Da braucht man das Tabellenblatt nur 1x
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige