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

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

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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige