Anzeige
Archiv - Navigation
1456to1460
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

Einfärben von Mehreren Zellen - Anwendungsfehler

Einfärben von Mehreren Zellen - Anwendungsfehler
16.11.2015 15:31:16
Mehreren
Hey,
ich habe folgendes Problem:
Wenn ich mein Makro direkt über Run aus dem VBA-Editor ausführe dann klappt der Code meistens, wenn ich aber den Code mit dem damit verknüpften Button aus dem Excel-Sheet starte, dann kommt folgeder Fehler:
Laufzeitfehler 1004:
Anwendungs- oder objektdefinierter Fehler
Danach lässt sich der Code aber auch nicht mehr aus dem Editor heraus starten.
Debuggen liefert mir diese Zeile:
Worksheets("Komplett").Range(Cells(LastRow2, 1), Cells(LastRow2, 35)).Interior.ColorIndex = 43
Vielen Dank schon mal!
lolap

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Falsche Referenzierung
16.11.2015 15:35:52
EtoPHG
Hallo,
Immer wieder falsche Referenzierung der Objekte!
With Worksheets("Komplett")
.Range(.Cells(LastRow2, 1), .Cells(LastRow2, 35)).Interior.ColorIndex = 43
End With
Gruess Hansueli

AW: Der Fehlerklassiker der meisten Anfänger
16.11.2015 15:42:23
Daniel
Hi
du machst den hier den Fehler, den irgendwie alle VBA-Anfänger machen:
beachte folgenden Zusammenhang:
1. ein Zellbezug in VBA (Cells, Range, Columns, Rows) ohne Tabellenblattangabe bezieht sich immer auf:
- Makro liegt in einem allgemeinen Modul (Modul1): das aktive Tabellenblatt
- Makro liegt in einem Tabellenblattmodul (Tabelle1): das Tabellenblatt des Moduls
2. wenn du eine Range über zwei Zellen defninierst (Range(Cells(), Cells()) dann muss die Range auf dem selben Tabellenblatt liegen wie die Zellen, die sie definieren, sonst gibt es einen Fehler
dh du musst das worksheet nicht nur vor der Range angeben, sondern auch vor den beiden Cells:
Worksheets("Komplett").Range(Worksheets("Komplett").Cells(LastRow2, 1), Worksheets("Komplett").Cells(LastRow2, 35)).Interior.ColorIndex = 43
da das den Code etwas aufbläht, empfehle ich andere Methoden um den Zellbereich zu beschreiben, beispielsweise RESIZE statt RANGE:
Worksheets("Komplett").Cells(LastRow2, 1).Resize(1, 35).Interior.ColorIndex = 43
Gruß Daniel

Anzeige
AW: Der Fehlerklassiker der meisten Anfänger
16.11.2015 16:01:10
lolap
Gut Vielen Dank, das löst mein Problem!
Jetzt ist aber noch ein weiteres aufgetaucht:
Ich schreibe durch den Klick auf den angesprochenen Button mit einem Makro in 11 Zeilen x 35 Spalten Daten, dazu wird die erste Freie Zelle in Spalte A gesucht und dann ab da werden die Daten reingeschrieben. Wenn ich das wieder aus dem Editor starte fängt er schön bei A2 an (A1 ist die Überschrift der Tabelle), wenn ich es aber per Button starte fängt er bei A14 an (obwohl A2-A13 leer ist), auch aus dem Editor lässt er dann A2-A13 leer und schreibt unter dem Datensatz dann den nächsten. So ermittele ich die erste freie Zeile zu beginn des Codes:
Sub Fall_erzeugen()
'Erste Freie Zeile finden:
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Worksheets("Komplett").Cells(LastRow, 2).Value = Worksheets("Maske").Cells(3, 2).Value
(...)
End Sub
Danke noch mal!
lolap

Anzeige
AW: Der Fehlerklassiker der meisten Anfänger
16.11.2015 16:13:15
Werner
Hallo,
Sub Fall_erzeugen()
'Erste Freie Zeile finden:
Dim LastRow As Long
With Worksheets("Komplett")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Cells(LastRow, 2).Value = Worksheets("Maske").Cells(3, 2).Value
(...)
End With
End Sub
Du ermittelst zwar die erste freie Zelle in Spalte A, Überträger die Daten aber in Spalte B.
Gruß Werner

AW: Der Fehlerklassiker der meisten Anfänger
16.11.2015 16:34:32
lolap
Hey, danke für die schnelle Antwort,
ja ich weiß, dass ist Absicht, davor kommt noch was in Spalte A, das Problem ist ja auch, dass er in ZEILE 14 schreibt und nicht in Zeile 1, ich schreibe dann in 35 Spalten was, aber er schreibt immer in die 14. Zeile und nicht in die erste freie...
lolap

Anzeige
AW: Der Fehlerklassiker der meisten Anfänger
16.11.2015 16:39:42
lolap
Hab das Problem gefunden,
habe hier:
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
nicht den Worksheet angegeben, da der Button auf einem anderen als das Worksheet "Komplett" ist.
Danke!
lolap

AW: Der Fehlerklassiker der meisten Anfänger
16.11.2015 16:50:42
Werner
Hallo,
deshalb hatte ich ja auch vor der Codezeilen zum Ermitteln der ersten freien Zeile ein
With Sheets("Komplett")
drin.
Gruß Werner

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige