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

Per VBA definierte Range verschieben

Per VBA definierte Range verschieben
23.08.2018 14:32:09
RK
Aloha Community.
Wie angehangene Datei zeigt verfügt meine Excel-Datei über zwei Registerblätter und je 3 Zeilen (1,4,7) in deren Spalten (A-H) Daten stehen. Ich möchte ein Makro schreiben, dass die Range zum zählen mit jedem Durchlauf um 3 Zeilen nach unten verschiebt. Diese Prozedur für beide Registerblätter.
Mein bestehendes Makro arbeitet die erste Zeile problemlos ab.
Möchte ich jedoch in meinem Makro die auskommendtierte Zeile verwenden, um die Verschiebung eingeben zu können, erhalte ich folgenden Fehler:
Laufzeitfehler 1004
Anwendungs- oder objektdefinierter Fehler

Makro:

Sub zählen()
Dim Range As Range
For i = 1 To Sheets.Count
Set ZRB = ThisWorkbook.Sheets(i)
Set Range = ZRB.Range("A1:H1")
'Set Range = ZRB.Range(Cells(1, 1), Cells(1, 8))
k = Application.WorksheetFunction.CountA(Range)
ZRB.Cells(1, 10) = k
Next
End Sub

Datei:
https://www.herber.de/bbs/user/123517.zip
Ich bitte um Hilfe.
Weiss mir keinen Rat mehr.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA definierte Range verschieben
23.08.2018 14:45:41
Wolfgang

Set Range = Range(ZRB.Cells(1, 1), ZRB.Cells(1, 8))

sollte funktionieren
Gruß, Wolfgang
AW: Per VBA definierte Range verschieben
23.08.2018 14:58:23
RK
Vielen dank aber leider nicht.
Der Fehler lautet in diesem Fall:
Laufzeitfehler 91:
Objektvariable oder With-Blockvariable nicht festgelegt

Sub zählen()
Dim Range As Range
For i = 1 To Sheets.Count
Set ZRB = ThisWorkbook.Sheets(i)
'Set Range = ZRB.Range("A1:H1")
Set Range = Range(ZRB.Cells(1, 1), ZRB.Cells(1, 8))
k = Application.WorksheetFunction.CountA(Range)
ZRB.Cells(1, 10) = k
Next
End Sub

Anzeige
AW: Per VBA definierte Range verschieben
23.08.2018 15:33:05
RK
Ok, dein Ansatz funktioniert, allerdings hatte ich einen zusätzlicher Fehler.
Die Range darf nicht als Range definiert werden.
Das fertige Ergebnis sieht wie folgt aus:
Sub zählen()
Dim R As Range
For i = 1 To Sheets.Count
Set ZRB = ThisWorkbook.Sheets(i)
k = 0
For j = 0 To 2 'Zeilen durchlaufen
Set R = Range(ZRB.Cells(1 + k, 1), ZRB.Cells(1 + k, 8))
l = Application.WorksheetFunction.CountA(R)
ZRB.Cells(1 + k, 10) = l
k = k + 3
Next
Next
End Sub
Die Datei zum Nachvollziehen:
https://www.herber.de/bbs/user/123521.zip
Anzeige
mit OffSet und Resize
23.08.2018 19:02:01
Rudi
Hallo,
ich würde das so machen:
Set R = ZRB.Cells(1, 1).OffSet(k).Resize(,8)
Gruß
Rudi

324 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige