Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Ich finde den Fehler nicht
#1
Guten Abend.

Mich macht zur Zeit ein Fehler wahnsinnig, dessen Ursache ich nicht finde. In einer Prozedur soll in der Tabelle "Personal" ein Bereich festgelegt werden, in dem eine Suche stattfindet. Der Bereich wird definiert in der Spalte 14 von Zeile 2 bis zur letzten Zeile der Tabelle. Folgender Code (Auszug):

Dim lngLZ As Long
Dim rngBereich As Range
lngLZ = Worksheets("Personal").Cells(Rows.Count, 1).End(xlUp).Row
Set rngBereich = Worksheets("Personal").Range(Cells(2, 14), Cells(lngLZ, 14))

Und bei der letzten Zeile des Codes (farbig) steigt Excel aus mit der Meldung:

"Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler"

Was mache ich hier falsch?
Antworten Top
#2
Hallo,

hänge mal das Worksheet noch vor dem Cells an

Code:
Dim lngLZ As Long
Dim rngBereich As Range
lngLZ = Worksheets("Personal").Cells(Rows.Count, 1).End(xlUp).Row
Set rngBereich = Worksheets("Personal").Range(Worksheets("Personal").Cells(2, 14), Worksheets("Personal").Cells(lngLZ, 14))
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#3
Hallo Stefan.

Das ist die Lösung! Ich hatte mittlerweile herausgefunden, dass der Fehler nicht auftritt, wenn ich vor der Zeile "Set rngBereich..." folgende Zeile einfüge: "Worksheets("Personal").Activate" oder statt dessen vor der Ausführung des Codes das Blatt "Personal" manuell aktiviert habe. Das heißt, dass mein Code

Set rngBereich = Worksheets("Personal").Range(Cells(2, 14), Cells(lngLZ, 14))

die Zellen des Blattes "Personal" nicht ausreichend referenziert (sollte man nicht meinen), und dass es aber trotzdem funktioniert, wenn das Blatt "Personal" aktiv ist.

Vielen Dank. Wieder etwas gelernt.
Antworten Top
#4
Hallo Usedom

der Code von Stefan ist richtig.  Ich benutze aber lieber eine andere Schreibweise, mag nicht Ellenlange Syntax.
In solchen Faellen nehme ich eine separete End-Adresse, oder benutze Resize  (bestehenden Bereich erweitern)

mfg  gAst 123

Code:
'Variante über extra End-Adresse
EndAdr = Worksheets("Personal").Cells(lngLZ, 14).Address
Set rngBereich = Worksheets("Personal").Range(Cells(2, 14), EndAdr)

'Variante über Resize(lngLZ, 1)
Set rngBereich = Worksheets("Personal").Range(Cells(2, 14)).Resize(lngLZ, 1)
Antworten Top
#5
Guten Abend gAst123.

Deinen Vorschlag werde ich morgen testen. Ich werde den aber mit der Lösung von Stefan kombinieren müssen, denn in deinem Vorschlag ist die Referenzierung wohl auch nicht vollständig, würde also wohl ebenfalls voraussetzen, das das Blatt "Personal" aktiv ist.
Antworten Top
#6
Das geht schief. 

Zitat:Set rngBereich = Worksheets("Personal").Range(Cells(2, 14), EndAdr)

Wenn das aktive Blatt ein anderes als "Personal" ist, dann referenziert Cells(2,14) diesen Bereich was zu einem Fehler führt. Ich bevorzuge

Code:
  With Worksheets("Personal")
     lngLZ = .Cells(.Rows.Count, 1).End(xlUp).Row
     Set rngBereich = Range(.Cells(2, 14), .Cells(lngLZ, 14))
  End With
Grüße,
Winny
Antworten Top
#7
Das ist die Lösung von Stefan, verpackt in eine With-Anweisung. Funktioniert.
Antworten Top
#8
Hallo Winny,

ich programmiere seit >20 Jahren und stolpere immer wieder über dumme Flüchtigkeitsfehler.
Du warst sehr aufmerksam, und hast gleichzeitig eine gute Lösung angeboten.    Respekt!!

mfg  Gast 123
Antworten Top
#9
oder


Code:
sub M_snb()
  Sheets("Personal").columns(14).specialcells(2).offset(1).specialcells(2)="so geht's auch"

  Sheets("Personal").usedrange.columns(14).offset(1).specialcells(2)="Alternative 1"

  Sheets("Personal").cells(1).currentregion.columns(14).offset(1).specialcells(2)="Alternative 2"
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste