dim rngReset as Range
set rngReset = Range("A5:BT8;BU6:DV8;BU5;DN5")
set rngReset = Union(rngReset, Range("M11:P12;Q12;AE11:AH12;AI12")
set rngReset = Union(rngReset, Range("AW11:AZ12;BA12;BO11:BR12;BS12")
usw...
rngReset.Clearcontents
ausserdem solltest du dir auch mal die INTERSECT-Funktion anschauen, damit kann man Schnittmengen aus Zellbereichen bilden:
Intersect(Range("A:A,C:C,E:E"), Range("1:1,3:3,5:5")).Select
und auch die offset-Funktion könnte hilfreich sein, wenn sich Muster wiederholen:dim rngX as range
set rngX = Intersect(Range("A:A,C:C,E:E"), Range("1:1,3:3,5:5"))
set rngX = Union(rngX, rngX.offset(1, 1))
rngX.select
gruß Daniel
Sub splitten()
Dim a As Variant
Dim z As Long
a = Split(Range("A1").Value, ";")
For z = LBound(a) To UBound(a)
Range(a(z)).Interior.Color = 3
' Range(a(z)).ClearContents
Next
End Sub
Anstatt der Farbzuweisung verwendest Du eben .clear oder .clearcontents.Sub zerlegen()
Dim a As Variant
Dim z As Long
a = Split(Range("A1").Value, ";")
For z = LBound(a) To UBound(a)
Range("A" & z + 4).Value = a(z)
Next
End Sub
... die kann man dann nämlich sortieren, vielleicht läßt sich noch was zusammenfassen, und außerdem funzt das dann analog mit dem Löschen - mit einem Array geht das fix.Sub loeschen()
' in Modul
Dim a As Range
Dim c As Range
Set a = Sheets("verstecken").Range("A4:A403")
For Each c In a
Sheets(2).Range(c.Value).Clear
Next
End Sub
Schöne Grüße,
Sub test()
Dim rng1 As Range
Dim rngGesamt As Range
Dim i As Long
'obere linke Kachel definieren
Set rng1 = Range("A25:R25,D38:E42,I38:I41,H42,M42:P43,Q43")
'--- ober linke Kachel in erster Spalte nach unten duplizieren
Set rngGesamt = rng1
For i = 1 To 10
Set rngGesamt = Union(rngGesamt, rng1.Offset(32 * i, 0))
Next
'--- erste Spalte nach rechts duplizieren
Set rng1 = rngGesamt
For i = 1 To 6
Set rngGesamt = Union(rngGesamt, rng1.Offset(0, 18 * i))
Next
rngGesamt.Interior.Color = vbYellow
End Sub
hat auch den Vorteil, dass du bei Korrekturen nur die erste Kachel überarbeiten musst und dass du bei Erweiterungen einfach nur den entsprechenden Schleifenendwert anpassen musst (natürlich nur, solange sich das Muster regelmässig wiederholt)
Private Sub CommandButton1_Click()
Dim rng1 As Range
Dim rngGesamt As Range
Dim i As Long
'obere linke Kachel definieren
Set rng1 = Range("A25:R25,D38:E42,I38:I41,H42,M42:P43,Q43")
'--- ober linke Kachel in erster Spalte nach unten duplizieren
Set rngGesamt = rng1
For i = 1 To 9
Set rngGesamt = Union(rngGesamt, rng1.Offset(32 * i, 0))
Next
'--- erste Spalte nach rechts duplizieren
Set rng1 = rngGesamt
For i = 1 To 6
Set rngGesamt = Union(rngGesamt, rng1.Offset(0, 18 * i))
Next
rngGesamt.Value = ""
Dim rngReset As Range
Set rngReset = Range("A5:BT8;BU7:DV8;DN5;BU5;M11:P12;Q12;AE11:AH12;AI12;AW11:AZ12;BA12;BO11: _
BR12;BS12;CG11:CJ12;CK12;CY11:DB12;DC12;DQ11:DT12;DU12;A345:DV345;D358:E362;H362;I358:I361;V358:W362;Z362")
set rngReset = Union(rngReset, Range("AA358:AA361;AN358:AO362;AR362;AS358:AS361;BF358:BG362; _
BJ362;BK358:BK361;BX358:BY362;CB362;CC358:CC361;CP358:CQ362;CT362;CU358:CU361;DH358:DI362;DL362;DM358:DM361")
rngReset.ClearContents
End Sub
Vielen Dank! Paul.
dim rngReset as Range
set rngReset = Range("A5:BT8;BU6:DV8;BU5;DN5")
set rngReset = Union(rngReset, Range("M11:P12;Q12;AE11:AH12;AI12")
set rngReset = Union(rngReset, Range("AW11:AZ12;BA12;BO11:BR12;BS12")
usw...
rngReset.Clearcontents
ausserdem solltest du dir auch mal die INTERSECT-Funktion anschauen, damit kann man Schnittmengen aus Zellbereichen bilden:
Intersect(Range("A:A,C:C,E:E"), Range("1:1,3:3,5:5")).Select
und auch die offset-Funktion könnte hilfreich sein, wenn sich Muster wiederholen:dim rngX as range
set rngX = Intersect(Range("A:A,C:C,E:E"), Range("1:1,3:3,5:5"))
set rngX = Union(rngX, rngX.offset(1, 1))
rngX.select
gruß Daniel
Sub splitten()
Dim a As Variant
Dim z As Long
a = Split(Range("A1").Value, ";")
For z = LBound(a) To UBound(a)
Range(a(z)).Interior.Color = 3
' Range(a(z)).ClearContents
Next
End Sub
Anstatt der Farbzuweisung verwendest Du eben .clear oder .clearcontents.Sub zerlegen()
Dim a As Variant
Dim z As Long
a = Split(Range("A1").Value, ";")
For z = LBound(a) To UBound(a)
Range("A" & z + 4).Value = a(z)
Next
End Sub
... die kann man dann nämlich sortieren, vielleicht läßt sich noch was zusammenfassen, und außerdem funzt das dann analog mit dem Löschen - mit einem Array geht das fix.Sub loeschen()
' in Modul
Dim a As Range
Dim c As Range
Set a = Sheets("verstecken").Range("A4:A403")
For Each c In a
Sheets(2).Range(c.Value).Clear
Next
End Sub
Schöne Grüße,
Sub test()
Dim rng1 As Range
Dim rngGesamt As Range
Dim i As Long
'obere linke Kachel definieren
Set rng1 = Range("A25:R25,D38:E42,I38:I41,H42,M42:P43,Q43")
'--- ober linke Kachel in erster Spalte nach unten duplizieren
Set rngGesamt = rng1
For i = 1 To 10
Set rngGesamt = Union(rngGesamt, rng1.Offset(32 * i, 0))
Next
'--- erste Spalte nach rechts duplizieren
Set rng1 = rngGesamt
For i = 1 To 6
Set rngGesamt = Union(rngGesamt, rng1.Offset(0, 18 * i))
Next
rngGesamt.Interior.Color = vbYellow
End Sub
hat auch den Vorteil, dass du bei Korrekturen nur die erste Kachel überarbeiten musst und dass du bei Erweiterungen einfach nur den entsprechenden Schleifenendwert anpassen musst (natürlich nur, solange sich das Muster regelmässig wiederholt)
Private Sub CommandButton1_Click()
Dim rng1 As Range
Dim rngGesamt As Range
Dim i As Long
'obere linke Kachel definieren
Set rng1 = Range("A25:R25,D38:E42,I38:I41,H42,M42:P43,Q43")
'--- ober linke Kachel in erster Spalte nach unten duplizieren
Set rngGesamt = rng1
For i = 1 To 9
Set rngGesamt = Union(rngGesamt, rng1.Offset(32 * i, 0))
Next
'--- erste Spalte nach rechts duplizieren
Set rng1 = rngGesamt
For i = 1 To 6
Set rngGesamt = Union(rngGesamt, rng1.Offset(0, 18 * i))
Next
rngGesamt.Value = ""
Dim rngReset As Range
Set rngReset = Range("A5:BT8;BU7:DV8;DN5;BU5;M11:P12;Q12;AE11:AH12;AI12;AW11:AZ12;BA12;BO11: _
BR12;BS12;CG11:CJ12;CK12;CY11:DB12;DC12;DQ11:DT12;DU12;A345:DV345;D358:E362;H362;I358:I361;V358:W362;Z362")
set rngReset = Union(rngReset, Range("AA358:AA361;AN358:AO362;AR362;AS358:AS361;BF358:BG362; _
BJ362;BK358:BK361;BX358:BY362;CB362;CC358:CC361;CP358:CQ362;CT362;CU358:CU361;DH358:DI362;DL362;DM358:DM361")
rngReset.ClearContents
End Sub
Vielen Dank! Paul.