VBA 6.5: Vordefinierter Bereich

Hallo Experten,

entschuldigt bitte den nichtssagenden Titel, aber ich habe ihn nicht weit genug kürzen können:

Ich möchte einen Bereich vordefinieren und diesen dann auf unterschiedliche Worksheets anwenden, also z.B.:

i = „rows(10)“
For intZähler = 1 to 10
Set rng = Worksheets(intZähler).Range(i)
Next

oder

set i = Rows(10)
For intZähler = 1 to 10
Set rng = Worksheets(intZähler).i
Next

Geht sowas und falls ja, wie?

Vielen Dank schon mal
Martin

Hallo Martin,

meinst du, du willst Objektvariablen mit den Bereichen belegen? Dann ginge das so:

Option Explicit
Option Base 1

Sub bereiche()
 Dim i As Integer
 Dim bereich(10) As Range

 For i = 1 To 10
 Set bereich(i) = Worksheets(i).Rows("1:10")
 Next i
End Sub

Wenn du aber gemeint hast, dass du die Bereiche auswählen willst ginge das so:

Option Explicit

Sub auswählen()
 Dim i As Integer

 For i = 1 To 10
 Worksheets(i).Activate
 Rows("1:10").Select
 Next i
End Sub

Gruß, Andreas

Hallo Andreas,

danke schon mal. Im Prinzip ist es die erste Antwort. Da ich den Bereich aber flexibel halten möchte, soll er in der Schleife durch eine Variable angesprochen werden und nicht direkt. Ich möchte also, dass die „Rows(„1:10“)“ von einer Variablen beigesteuert werden. In meinem Beispiel habe ich das einmal über die Adresse und einmal über die Objektvariable versucht.

Martin

Da ich den Bereich aber flexibel halten möchte, soll er in der
Schleife durch eine Variable angesprochen werden und nicht
direkt.

Sub bereiche(iMinRow as Integer, iMinCol as Integer, iMaxRow as Integer, iMaxCol as Integer)
Dim i As Integer
Dim bereich(10) As Range

For i = 1 To 10
Set bereich(i) = Worksheets(i).Range(Cells(iMinRow, iMinCol), Cells(iMaxRow, iMaxCol))
Next i
End Sub

Allerdings wird über Set bereich(i) dann immer die gleiche (zwar variable aber dennoch gleiche) range reingeschrieben.

geht das so profis? müsst doch oder :smile:

Würd die schleife aber nur dafür benutzen aktiv was zu schreiben oder auszulesen.

Ohne For-Next

Set bereich = Range(Cells(iMinRow, iMinCol), Cells(iMaxRow, iMaxCol)

)

und dann mit zwei for each bzw with erst die worksheets des workbooks durchlaufen und dann die cells in der range bereich.

Set bereich = Range(Cells(iMinRow, iMinCol), Cells(iMaxRow,
iMaxCol)

und dann mit zwei for each bzw with erst die worksheets des
workbooks durchlaufen und dann die cells in der range bereich.

is natärlich plötsinn, aber der rest sollte das „variabler-bereich-problem“ lösen, oder?

Hallo Martin,

ich habs noch nicht so ganz kapiert. In deinem Code willst du zwar den Bereich über eine Variable festlegen. Aber die Varible bekommt ja ihren Wert aus dem Code und nicht aus irgendwelchen Benutzereingaben. Im Grunde ist es also doch ein fester Wert. Meinst du so etwas?:

Option Explicit
Option Base 1

Sub bereiche()
 Dim i As Integer
 Dim bereich(10) As Range

 For i = 1 To 10
 Set bereich(i) = Worksheets(i).Rows(i & ":" & i + 9)
 Next i
End Sub

Gruß, Andreas

Ja, so hatte ich das auch schon. Vielleicht geht es ja wirklich nur so.

Danke (auch an Andreas)
Martin

PS: Die Adresse zu dem Bereich wird aus einer „Setup“-Tabelle geholt, dort liegen die Adressen aktuell als Zeile „10“ und als „A5:F25“ vor.

PS: Die Adresse zu dem Bereich wird aus einer „Setup“-Tabelle
geholt, dort liegen die Adressen aktuell als Zeile „10“ und
als „A5:F25“ vor.

Hallo Martin,

welche Excelversion hast du? Aus VB 6.5 kann man das nicht herauslesen.

Für was steht die 10?
Sind das die Worksheets(1) - Worksheets(10)?
Oder die Zeile 10? Wenn ja in welchen Blättern?

Willst du als Ergebnis dann einen Bereich haben oder 10 Bereiche?

Gruß
Reinhard