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

ActiveSheet.Range Mehrere Bereiche

ActiveSheet.Range Mehrere Bereiche
Hans
Hallo Leute
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
AW: ActiveSheet.Range Mehrere Bereiche
22.03.2010 22:48:46
Schorschi
Hallo Hans,
evtl. so...
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

Gruss
Schorschi
AW: ActiveSheet.Range Mehrere Bereiche
22.03.2010 23:00:28
Hans
Danke Schorschi ..
Ich habe das mit dem Union eingefügt .. aber dann kommt im weiteren teil ein Fehler, da die Variale "Bereich" alleine nicht mehr zutrifft.
Vlt kannst du oder ein anderer mir weiterhelfen
Lg
Hans

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

Anzeige
AW: ActiveSheet.Range Mehrere Bereiche
22.03.2010 22:56:14
Oberschlumpf
Hi Hans
So einfach funktioniert es wohl nicht (zumindest ich hab es nicht geschafft)
Ich versuchte es mit
Set Bereich = ActiveSheet.Range("C5:C12, E5:E12, G5:12")
was aber mit einer Fehlermeldung abgebrochen wurde.
Aber der Versuch mit
Set Bereich = ActiveSheet.Range("C5:G12")
funktioniert, was aber zur Folge hat, dass eben auch die Spalten D + F mit eingeschlossen werden, was du ja nicht möchtest.
Dass der erste Versuch nicht funzt, liegt, glaube ich, daran, dass es in VBA nicht möglich ist, nicht zusammenhängende Bereiche zu "vereinen".
Daher kann ich dir nur diesen Workaround vorschlagen:
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).
Und die zweite Schleife durchläuft immer die Zeilen 5 - 12.
Und innerhalb der zweiten Schleife muss dann dein Code stehen.
Hilfts?
Wenn nicht, dann zeig uns eine Bsp-Datei, in der du uns erklärst, was geschehen soll.
Ciao
Thorsten
Anzeige
AW: ActiveSheet.Range Mehrere Bereiche
22.03.2010 23:14:14
Hans
Hallo
Ich habe die Datei mal hochgeladen.
Was ich machen möchte ist ....
mit einer Bedingten Formatierung gehen ja nur drei Bedingungen.
Daher soll mit VBA folgende Bedingungen erfüllt werden
Ist die Zelle = 0 , dann Hintergrund Grün
Ist die Zelle ist die Zelle > 0 dann Rot
Und wenn da "Leihgerät" drinnen steht Gelb
lg
Hans
https://www.herber.de/bbs/user/68746.xls
AW: ActiveSheet.Range Mehrere Bereiche
23.03.2010 00:22:25
Oberschlumpf
Hi Hans
Versuch es mal hiermit:
https://www.herber.de/bbs/user/68749.xls
Du wirst aber deinen Code anpassen müssen, da ich die Spalten F + S löschen musste, da sonst die Regelmäßigkeit - jede zweite Spalte - unterbrochen wurde.
Hilfts denn?
Ciao
Thorsten
Anzeige
AW: ActiveSheet.Range Mehrere Bereiche
23.03.2010 08:40:13
hary
Hallo Hans
teste mal so. Problem evtl mit der Null.

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

sieht dann hier im Test,so aus.
Userbild
gruss hary
Anzeige
AW: ActiveSheet.Range Mehrere Bereiche
23.03.2010 09:24:48
Schorschi
Hallo Hans,
so müsste es wie gewünscht gehen...
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
Formeln anpassen: =WENN(Z14="";"";Z14) usw.
Achtung löschen reicht dann hier nicht aus, die Eingabe der 0 ist erforderlich.
Gruss
Schorschi
Anzeige
AW: ActiveSheet.Range Mehrere Bereiche
23.03.2010 14:16:19
hary
Hallo Hans
hab mal rumprobiert, geht auch so. Dieser Code getestet mit 2007, evtl aendern in Set Bereich = Range..usw

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

gruss hary
Anzeige

49 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige