Kann mir jemand helfen?
Ich würde gerne wissen wie man mehrere Bereiche mit ActiveSheet.Range markieren kann
Set Bereich = ActiveSheet.Range("C5:C12")
Also, ich möchte Bereiche wie C5:C12, E5:E12, G5:12 .... markieren.lg
Hans
Set Bereich = ActiveSheet.Range("C5:C12")
Also, ich möchte Bereiche wie C5:C12, E5:E12, G5:12 .... markieren.Public Sub BerMark()
Dim Bereich, Bereich1, Bereich2 As Range
Set Bereich = ActiveSheet.Range("C5:C12")
Set Bereich1 = ActiveSheet.Range("E5:E12")
Set Bereich2 = ActiveSheet.Range("G5:G12")
Union(Bereich, Bereich1, Bereich2).Activate
End Sub
Private Sub Worksheet_Change(ByVal Ziel As Excel.Range)
Dim Bereich1, Bereich2, Bereich3, Bereich4, Bereich5, Bereich6, Bereich7, Bereich8, _
Bereich9 As Range
Dim rngZelle As Range
Set Bereich1 = ActiveSheet.Range("C5:C12")
Set Bereich2 = ActiveSheet.Range("E5:E12")
Set Bereich3 = ActiveSheet.Range("H5:H12")
Set Bereich4 = ActiveSheet.Range("J5:J12")
Set Bereich5 = ActiveSheet.Range("L5:L12")
Set Bereich6 = ActiveSheet.Range("N5:N12")
Set Bereich7 = ActiveSheet.Range("P5:P12")
Set Bereich8 = ActiveSheet.Range("R5:R12")
Set Bereich9 = ActiveSheet.Range("U5:U12")
Set Bereich10 = ActiveSheet.Range("W5:W12")
Union(Bereich1, Bereich2, Bereich3, Bereich4, Bereich5, Bereich6, Bereich7, Bereich8, Bereich9). _
Activate
For Each rngZelle In Bereich
Select Case rngZelle.Value
Case Is = ""
rngZelle.Interior.Color = RGB(255, 255, 255)
Case Is = 0
rngZelle.Interior.Color = RGB(0, 255, 0)
Case Is = "Leihgerät"
rngZelle.Interior.Color = RGB(255, 255, 153)
Case Is Range("W2")
rngZelle.Interior.Color = RGB(255, 0, 0)
End Select
Next
End Sub
Sub sbMehrereBereiche()
Dim liSpalte As Integer, lloZeile As Long
For liSpalte = 3 To 7 Step 2
For lloZeile = 5 To 12
'hier dein Code, mit
'Cells(lloZeile, liSpalte).Value = ?
oder
'? = Cells(lloZeile, liSpalte).Value
'der ausgeführt werden soll
Next
Next
End Sub
Die erste Schleife durchläuft die Spalten 3 (C) bis 7 (G), überspringt aber durch Step 2 die Spalten 4 (D) + 6 (F).
Sub b()
Dim Bereich1, Bereich2, Bereich3, Bereich4, Bereich5, Bereich6, Bereich7, Bereich8, _
Bereich9, Bereich10 As Range
Dim rngZelle As Range
Dim Bereich As Range
Set Bereich1 = ActiveSheet.Range("C5:C12")
Set Bereich2 = ActiveSheet.Range("E5:E12")
Set Bereich3 = ActiveSheet.Range("H5:H12")
Set Bereich4 = ActiveSheet.Range("J5:J12")
Set Bereich5 = ActiveSheet.Range("L5:L12")
Set Bereich6 = ActiveSheet.Range("N5:N12")
Set Bereich7 = ActiveSheet.Range("P5:P12")
Set Bereich8 = ActiveSheet.Range("R5:R12")
Set Bereich9 = ActiveSheet.Range("U5:U12")
Set Bereich10 = ActiveSheet.Range("W5:W12")
Set Bereich = Union(Bereich1, Bereich2, Bereich3, Bereich4, Bereich5, Bereich6, Bereich7, _
Bereich8, Bereich9)
For Each rngZelle In Bereich
Select Case rngZelle.Value
Case Is = ""
rngZelle.Interior.Color = RGB(255, 255, 255)
Case Is = "0"
rngZelle.Interior.Color = RGB(0, 255, 0)
Case Is = "Leihgerät"
rngZelle.Interior.Color = RGB(255, 255, 153)
Case Is Range("W2")
rngZelle.Interior.Color = RGB(255, 0, 0)
End Select
Next
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich, Zone(1 To 29), rngZelle As Range
Set Zone1 = ActiveSheet.Range("C5:C12")
Set Zone2 = ActiveSheet.Range("E5:E12")
Set Zone3 = ActiveSheet.Range("H5:H12")
Set Zone4 = ActiveSheet.Range("J5:J12")
Set Zone5 = ActiveSheet.Range("L5:L12")
Set Zone6 = ActiveSheet.Range("N5:N12")
Set Zone7 = ActiveSheet.Range("P5:P12")
Set Zone8 = ActiveSheet.Range("R5:R12")
Set Zone9 = ActiveSheet.Range("U5:U12")
Set Zone10 = ActiveSheet.Range("W5:W12")
Set Zone11 = ActiveSheet.Range("H17:H24")
Set Zone12 = ActiveSheet.Range("J17:J24")
Set Zone13 = ActiveSheet.Range("L17:L24")
Set Zone14 = ActiveSheet.Range("N17:N24")
Set Zone15 = ActiveSheet.Range("P17:P24")
Set Zone16 = ActiveSheet.Range("R17:R24")
Set Zone17 = ActiveSheet.Range("C30:C37")
Set Zone18 = ActiveSheet.Range("E30:E37")
Set Zone19 = ActiveSheet.Range("H30:H37")
Set Zone20 = ActiveSheet.Range("J30:J37")
Set Zone21 = ActiveSheet.Range("L30:L37")
Set Zone22 = ActiveSheet.Range("N30:N37")
Set Zone23 = ActiveSheet.Range("P30:P37")
Set Zone24 = ActiveSheet.Range("R30:R37")
Set Zone25 = ActiveSheet.Range("U30:U37")
Set Zone26 = ActiveSheet.Range("W30:W37")
Set Zone27 = ActiveSheet.Range("Z2:Z41")
Set Zone28 = ActiveSheet.Range("AB2:AB41")
Set Zone29 = ActiveSheet.Range("AD2:AD41")
Set Bereich = Application.Union(Zone1, Zone2, Zone3, Zone4, Zone5, Zone6, _
Zone7, Zone8, Zone9, Zone10, Zone11, Zone12, Zone13, Zone14, Zone15, Zone16, _
Zone17, Zone18, Zone19, Zone20, Zone21, Zone22, Zone23, Zone24, Zone25, Zone26, _
Zone27, Zone28, Zone29)
If Application.Intersect(Target, Bereich) Is Nothing Then Exit Sub
For Each rngZelle In Bereich
Select Case rngZelle.Value
Case Is = ""
rngZelle.Interior.ColorIndex = xlNone ' keine Füllung
Case Is = "Leihgerät"
rngZelle.Interior.ColorIndex = 6 ' gelb 6
Case Is = 0
rngZelle.Interior.ColorIndex = 10 ' grün
Case Is = 1
rngZelle.Interior.ColorIndex = 3 ' rot
End Select
Next
End Sub
Problemlösung bei: "" und 0
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Dim rngZelle As Range
Set Bereich = ActiveSheet.Range("C5:C12,E5:E12,H5:H12,J5:J12,L5:L12,N5:N12,P5:P12,R5:R12,U5:U12, _
W5:W12")
For Each rngZelle In Bereich
Select Case rngZelle.Value
Case Is = ""
rngZelle.Interior.Color = RGB(255, 255, 255)
Case Is = "0"
rngZelle.Interior.Color = RGB(0, 255, 0)
Case Is = "Leihgerät"
rngZelle.Interior.Color = RGB(255, 255, 153)
Case Is Range("W2")
rngZelle.Interior.Color = RGB(255, 0, 0)
End Select
Next
End Sub
Um mehrere Bereiche mit ActiveSheet.Range
in Excel VBA zu bearbeiten, kannst du folgende Schritte durchführen:
ALT
+ F11
).Einfügen
> Modul
).Union
zu kombinieren:Sub BereicheMarkieren()
Dim Bereich1 As Range, Bereich2 As Range, Bereich3 As Range
Set Bereich1 = ActiveSheet.Range("C5:C12")
Set Bereich2 = ActiveSheet.Range("E5:E12")
Set Bereich3 = ActiveSheet.Range("G5:G12")
Union(Bereich1, Bereich2, Bereich3).Select
End Sub
Fehler: "Typen nicht übereinstimmend"
Range
zu deklarieren. Stelle sicher, dass alle Bereiche korrekt als Range
deklariert sind.Fehler: "Fehler beim Ausführen der Methode 'Range'"
Range
-Definition. Sie sollte korrekte Zellreferenzen haben, z.B. ("C5:C12")
und nicht ("C5:G12")
, wenn du nicht zusammenhängende Bereiche auswählen möchtest.Wenn du nicht die Union
-Methode verwenden möchtest, kannst du auch Schleifen nutzen, um durch mehrere nicht zusammenhängende Bereiche zu iterieren. Hier ist ein Beispiel:
Sub MehrereBereiche()
Dim liSpalte As Integer, lloZeile As Long
For liSpalte = 3 To 7 Step 2 ' C bis G, aber D und F überspringen
For lloZeile = 5 To 12
' Hier kannst du deinen Code einfügen, um mit den Zellen zu arbeiten
Cells(lloZeile, liSpalte).Value = "Beispiel" ' Beispielwert setzen
Next
Next
End Sub
Hier sind einige praktische Beispiele, wie du ActiveSheet.Range
verwenden kannst:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Set Bereich = Union(ActiveSheet.Range("C5:C12"), ActiveSheet.Range("E5:E12"))
If Not Intersect(Target, Bereich) Is Nothing Then
Dim rngZelle As Range
For Each rngZelle In Bereich
Select Case rngZelle.Value
Case Is = ""
rngZelle.Interior.Color = RGB(255, 255, 255)
Case Is = 0
rngZelle.Interior.Color = RGB(0, 255, 0)
Case Is = "Leihgerät"
rngZelle.Interior.Color = RGB(255, 255, 153)
End Select
Next rngZelle
End If
End Sub
Dim GesamtBereich As Range
Set GesamtBereich = Union(ActiveSheet.Range("C5:C12"), ActiveSheet.Range("E5:E12"), ActiveSheet.Range("G5:G12"))
GesamtBereich.Select
Application.Union
, um sicherzustellen, dass du mehrere Range
-Objekte ohne Fehler kombinieren kannst.Range
-Methode korrekt sind, um Laufzeitfehler zu vermeiden.With
-Anweisungen, um den Code leserlicher zu machen:With ActiveSheet
.Range("C5:C12").Interior.Color = RGB(255, 0, 0)
.Range("E5:E12").Interior.Color = RGB(0, 255, 0)
End With
1. Wie kann ich mehrere nicht zusammenhängende Bereiche in einer Zeile definieren?
Du kannst sie mit Kommas in der Range
-Methode kombinieren, z.B. ActiveSheet.Range("C5:C12,E5:E12,G5:G12")
.
2. Kann ich die Union
-Methode mit mehr als drei Bereichen verwenden?
Ja, du kannst beliebig viele Bereiche mit der Union
-Methode kombinieren, solange du sie einzeln definierst.
3. Was ist der Unterschied zwischen ActiveSheet.Range
und Worksheets("Sheet1").Range
?
ActiveSheet.Range
bezieht sich auf das derzeit aktive Arbeitsblatt, während Worksheets("Sheet1").Range
sich auf ein spezifisches Arbeitsblatt namens "Sheet1" bezieht.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen