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 
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