Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Union Range bis zu 400 Bereichen

Union Range bis zu 400 Bereichen
12.11.2018 23:04:45
Lorenz
Hallo
Lässt sich dies eventuell kürzer gestalten?
Union(Range("C47:C78"), Range("E47:E78"), Range("G47:G78"), Range("I47:I78"), Range("K47:K78"), Range("M47:M78"), Range("O47:O78"), _
("C125:C156"), Range("E125:E156"), Range("G125:G156"), Range("I125:I156"), Range("K125:K156"), Range("M125:M156"), Range("O125:O156") _
("C203:C234"), Range("E203:E234"), Range("G203:G234"), Range("I203:I234"), Range("K203:K234"), Range("M203:M234"), Range("O203:O234") _
("C281:C312"), Range("E281:E312"), Range("G281:G312"), Range("I281:I312"), Range("K281:K312"), Range("M281:M312"), Range("O281:O312"))
Das letzte Paket wäre Zeilen "4181:4212" (Es sind zusammenhängend immer 32 Zeilen mit jeweils 47 Zeilen dazwischen)& das immer in den Spalten C,E,G,I,K,M,O
Hat jemand eine Idee?
Gruß
Lorenz
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Union Range bis zu 400 Bereichen
12.11.2018 23:28:52
Daniel
Hi
1. mit ner Schleife und Union die Zeilen in einer Variable sammeln und dann über Intersect mit den Spalten die schnittmenge bilden:
dim z as long
dim Bereich as Range
set Bereich = Rows(47).Resize(32)
for z = 125 to 4181 Step 78
set Bereich = Union(Bereich, Rows(z).Resize(32))
next
set Bereich = intersect(Bereich, Range("C:C,E:E,G:G,I:I,K:K,M:M,O:O"))

Gruß Daniel
Anzeige
AW: Union Range bis zu 400 Bereichen
13.11.2018 02:33:48
Lorenz
Hi Daniel
Danke für deine Hilfe. Is ja extrem kürzer! Jetzt habe ich aber ein weiteres Problem (für mich scheinbar "unlösbar") Ich habe versucht deine "Schleife" im "Doppelklick-Ereignis" einzubauen.
Untenstehend eins meiner vielen missglückten Versuche:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim z As Long
Dim Bereich As Range
Set Bereich = Rows(47).Resize(32)
For z = 125 To 4181 Step 78
Set Bereich = Union(Bereich, Rows(z).Resize(32))
Next
Set Bereich = Intersect(Bereich, Range("C:C,E:E,G:G,I:I,K:K,M:M,O:O"))
'ab hier mein Pfusch!!
If Not Bereich Is Nothing Or Target.Count = 1 Then
Application.EnableEvents = False
With ActiveCell
With .Font
.Name = "Wingdings"
.Size = 11
.Color = -16776961
.TintAndShade = 0
End With
.Value = "ü"
End With
End If
Cancel = True
Application.EnableEvents = True
End Sub

Das "doppel-Klick-Ereignis sollte nur im "Bereich" funktionieren, es läuft aber in jeder ausgewählten (aktivierten) Zelle!
Grüße
Lorenz
Anzeige
AW: Union Range bis zu 400 Bereichen
13.11.2018 09:11:39
Daniel
Hi
beim Programmieren ist Nachdenken ein ganz wichtiger Faktor.
Kann denn Bereich = Nothing sein, wenn wir kurz zuvor Bereich c.a. 3500 einzelne Zellbereiche erfolgreich zugewiesen haben?
du meinst wahrscheinlich: If Not Intersect(Target, Bereich) is Nothing then, um zu prüfen ob die angeklickte Zelle zu dem unter Bereich definierten Zellbereich gehört.
beim Doppelklick kannst du immer nur eine Zelle anklicken, daher ist die Abfrage auf Target.Count = 1 nicht notwendig.
Und wenn, solltest du besser .CountLarge verwenden, weil Excel mittlerweile mehr Zellen hat, als es mit .Count zählen kann.
Gruß Daniel
Anzeige
AW: Union Range bis zu 400 Bereichen
14.11.2018 00:18:10
Lorenz
Hallo Daniel!
Das war´s!
Alles funktioniert(wunschgemäß)
Nochmals Danke & Grüße
Lorenz
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige