Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Range-Cells-Kombination reagiert mit Fehler

Forumthread: Range-Cells-Kombination reagiert mit Fehler

Range-Cells-Kombination reagiert mit Fehler
09.01.2025 21:03:59
Klaus B aus D
Hallo,

in der letzten Zeile meines Code-Ausschnitts verbirgt sich ein Laufzeitfehler 1004, den ich leider nicht erkenne. Mein Gedanke ist, die absoluten Koordinaten ("A2:A80") aus der vorletzten (auskommentierten) Zeile durch flexible Werte zu ersetzen. "A2" habe ich dabei durch Cells(2, 1) ersetzt ...
 ' Hinweis aus HERBERS Excel-Forum (24.11.2024): _

Formuliere die Argumente der Find-Methode Lookat, Lookin und MatchCase!
' Tabellenblatt "Teilnehmer"; TN anhand der StartNr. einlesen
Set wks = Worksheets("Teilnehmer")
' in Spalte A (1) von ganz unten (.End) hochzählen (xlUp)
With wks
lngLetzteZeile = .Cells(Rows.Count, 1).End(xlUp).Row
End With

'Set rng = wks.Range("A2:A80").Find(what:=txtStartNr, LookAt:=xlWhole, LookIn:=xlValues)
Set rng = wks.Range(Cells(2, 1), Cells(lngLetzteZeile, 1)).Find(what:=txtStartNr, LookAt:=xlWhole, LookIn:=xlValues)

Könnte mir bitte Jemand auf die Sprünge helfen?

Gruß Klaus
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Range-Cells-Kombination reagiert mit Fehler
09.01.2025 21:20:13
peter

Public Sub t()
Set wks = worksheets("Teilnehmer")
With wks
letzteZeile = .Cells(Rows.Count, 1).End(xlUp).Row
Set Rng = Range(Cells(2, 1), Cells(letzteZeile, 1)).Find(what:="target", lookat:=xlWhole, LookIn:=xlValues)
End With
wks.select
Rng.Select
End Sub


was habe ich geändert.
du musst "txtStartNr" in gänsefüschen setzen dann sucht er danach.
Ich habe in meinem fall target in zeile 81 spalte a platziert, da ich rng.select habe wird das ausgewählt (so kannst du das ganze testen)
Anzeige
AW: Range-Cells-Kombination reagiert mit Fehler
09.01.2025 21:31:18
daniel
Hi
wenn du die WITH-Klammer einsetzt, musst du auch die Punkte verwenden, sonst haben wir wieder Range und Cells ohne Blattangabe.

with wks

Set Rng = .Range(.Cells(2, 1), .Cells(letzteZeile, 1)).Find(what:="target", lookat:=xlWhole, LookIn:=xlValues)
end with


Gruß Daniel
Anzeige
AW: Range-Cells-Kombination reagiert mit Fehler
09.01.2025 23:06:08
PeterDerSchusel
Jo,
Klsssicher flüchtigkeitsfehler bei mir. Extra die Range ins with gezogen um das zu machen und dann nen Typo gemacht.

Gute korrektur
AW: Range-Cells-Kombination reagiert mit Fehler
10.01.2025 14:58:20
Klaus B aus D
Hallo,

verdammte Hacke! Nachdem ich den Vorschlag von Daniel in mein UserForm-Code erfolgreich übernommen habe, erscheint jetzt der Laufzeitfehler 1004 beim Übertragen der Formular-Textfelder zurück in die Tabelle. Ich verstehe es nicht, denn ich nutze doch exakt die gleiche Anweisung, um den betreffenden Zellenbereich zu definieren. Mit der auskommentierten vorletzten Zeile (... "A2:A80" ...) funktioniert es.
' Werte aus dem Formular in die Tabelle übertragen

'#################################################
Private Sub cmdPunkteUebertragen_Click()
' Spaltenüberschriften werden verwendet, damit weitere Tabellenspalten eingefügt oder gelöscht werden können
Dim wks As Worksheet
Dim rng As Range
Dim lngLetzteZeile As Long
Dim lngLetzteSpalte As Long
Dim nr As Integer ' Überschriftenzeile
Dim tf As String ' TextFeld
Dim hl As String ' HeadLine
Dim r As Variant
Dim z As Integer ' "Zehner"
Dim e As Integer ' "Einer"

Set wks = Worksheets("Wertungspunkte")
' Zeile mit der eingegebenen StartNr. (in UserForm1) bestimmen
'Set rng = wks.Range("A2:A80").Find(what:=txtStartNr, LookAt:=xlWhole, LookIn:=xlValues)
Set rng = wks.Range(wks.Cells(2, 1), wks.Cells(lngLetzteZeile, 1)).Find(what:=txtStartNr, LookAt:=xlWhole, LookIn:=xlValues)
If rng Is Nothing Then
MsgBox "Es wurde KEINE entsprechende Startnummer gefunden."
Exit Sub
Else

Gruß Klaus
Anzeige
AW: Range-Cells-Kombination reagiert mit Fehler
10.01.2025 15:13:13
daniel
Hi
da fehlt noch die Wertzuweisung für die Variablen lngLetzteZeile und lngLetzteSpalte.
wenn du Variablen im Makro als Long deklarierst und keinen Wert zuweist, haben sie den Wert 0 und der ist in Cells() als Zeilen- oder Spaltennummer nicht zulässig.

Gruß Daniel
AW: Range-Cells-Kombination reagiert mit Fehler
09.01.2025 21:28:52
daniel
Hi
du machst mal wieder den typischen Anfängerfehler, den wohl irgendwie jeder macht.
Sollte das inzwischen nicht auch irgendwie bei den VBA-Lehrern und Tutorials angekommen sein, so dass auch die Anfänger das gleich gelehrt bekommen???

Also: ein Range() oder Cells() ohne Tabellenblattangabe davor (dein wks) bezieht sich immer auf das gerade aktive Tabellenblatt.
der Fehler kommt, wenn du eine Range über zwei Cells definierst und nur für die Range das Tabellenblatt vorgibst, aber nicht für die Cells.
dann kann es passieren, dass die Cells (ActiveSheet) auf einem anderen Tabellenblatt liegen als die Range, die sie definieren sollen (wks), das ist dann nicht sauber definiert und dann gibts den Fehler.

also immer schon das Tabellenblatt mit angeben, egal wo die Range oder Cells stehen:
Set rng = wks.Range(wks.Cells(2, 1), wks.Cells(lngLetzteZeile, 1))


tatsächlich ist es so, dass die Cells die Range definieren. also darf man vor der Range das Tabellenblatt weglassen, dann wird das Tabellenblatt der Cells übernommen, dh so funktioiert es, anders rum (also so wie du es versucht hast) leider nicht.*
Set rng = Range(wks.Cells(2, 1), wks.Cells(lngLetzteZeile, 1))


wem der Code damit zu umständlich wird, verwendet Resize:
set rng = wks.Cells(2, 1).Resize(lngletzteZeile - 2 + 1, 1)



* hier gibt es eine Ausnahme zu beachten: steht der Code in einem Tabellenblattmodul, so muss man das Tabellenblatt vor Range und vor Cells angeben.
in einem Tabellenblattmodul wird ohne Tabellenblattangabe das Blatt des Moduls referenziert und nicht das aktive Blatt (ist zwar meist das gleiche, kann aber anders sein). Und weil das hier priorität hat, muss man dann das Blatt bei Range(Cells, Cells) auch vor der Range angeben und nicht nur vor den Cells.

Gruß Daniel
Anzeige
AW: Range-Cells-Kombination reagiert mit Fehler
10.01.2025 01:23:13
Klaus B aus D
Hallo,

ein Dankeschön an alle "Schnellantworter". Letztlich habe ich mich für die 1. Codezeile aus Daniels Antwort entschieden und kam zum Ziel.
Und hier nochmals bedankt für die aufklärenden Zusammenhänge/Unterschiede zwischen Range und Cells.

Gruß Klaus
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18