Excel-VBA - Union der Bereiche und seine Teilbereiche
Betrachten Sie das folgende vba-makro in excel
Sub foo()
Dim aRng As Range: Set aRng = ActiveSheet.Range("A1:J1")
Dim bRng As Range: Set bRng = ActiveSheet.Range("A4:J4")
Dim cRng As Range: Set cRng = ActiveSheet.Range("A10:J10")
Dim uRng As Range: Set uRng = Union(aRng, bRng, cRng)
uRng.Style = "Good"
uRng.Cells(2, 1).Style = "Bad"
End sub
Sind die Ergebnisse: Zeilen 1 "A1:J1", "A4:J4", "A10:J10"
sind gute und Zelle "A2"
ist bad.
Ich erwartete Zelle "A4"
werden bad. "A2" ist nicht in uRng
; warum sollte es zurückgegeben werden, indem uRng.Cells(2,1)
?
Andere Merkwürdigkeiten: uRng.Rows.Count = 1
und uRng.Columns.Count = 10
. Bin ich falsch, zu erwarten, dass uRng
zu 3x10-Bereich? Oder ist das unbestimmt, weil die Positionen der aRng
, bRng
, und cRng
zu einander ist nicht angegeben?
- Fragte ich eine Frage, reicht gestern.. Sie sich nicht so Verhalten, wie man erwarten würde 🙁 Meine Auswahl Frage
- es ist leicht zu überprüfen. Füllen Sie einfach Ihr Angebot (lassen Sie alle anderen Zellen leer), und führen Sie eine
Application.Worksheetfunction.CountaA(uRng)
. So können Sie sehen das nicht. der gefüllten Zellen vs. erwartet. - Ich sehe, Sie haben bereits akzeptiert eine Antwort 🙂 Aber ich werde trotzdem gehen Sie voran und poste meine Antwort, da tippte ich eine Menge... lol
- Es wird geschätzt werden
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie tatsächlich so behandelt, als drei separate Bereiche, zugänglich von
uRng
über dieRange.Areas
Eigenschaft:http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.range.areas(v=office.11).ASPX
Mit Ihrem Beispiel, hier ist, wie man
A4
enthalten, wie die erste Zelle in der zweiten Reihe:auch der code unten wird Ihnen dasselbe Ergebnis:
uRng.Areas(2).Cells(2,1).Select
wählt "A5". DankEine
uRng.Cells(2, 1)
funktioniert nur für zusammenhängende Bereiche und nicht-zusammenhängenden Bereich. Wählen Sie eine Zelle in einem bestimmten Bereich, haben Sie auf Adresse, und verwenden Sie dann.Cells(r,w)
Beispielsweise
Wo
n
ist die Fläche, die Sie möchten, schreiben undr
,c
sind die Zeile/Spalte.B. Zeilen.Graf arbeitet mit 1-Gebiet. So finden Sie die Zeilen zählen, die in einen nicht zusammenhängenden Bereich, haben Sie, um eine Schleife, obwohl es.
Diesem Beispiel sehen
C. Es ist eine kuriosität in
columns.count
als gut, aber da alle der Reihe hatte die gleiche Anzahl von Spalten, die Sie nicht relaize diese. Versuchen Sie, dieseAlso die gleiche Logik gilt für die Anzahl der Spalten als auch.
IMP: Nun, Es hängt davon ab, wie Sie möchten, um die Anzahl der Spalten/Zeilen. Was ist, wenn die Zeilen/Spalten die Bereiche überschneiden? In einem solchen Fall möchten Sie die Anzahl der Spalten/Zeilen oder die aktuelle Excel Zeilen/Spalten in diesem nicht zusammenhängenden Bereich?
"A2:J2"
statt"A4:K4"
dann würde es zwei Bereiche, 2x10 und 1x10. Also Bereiche ist abhängig davon, welche Bereiche getrennt sind, nicht die Bereiche wurden vereint.aRng
undbRng
werden zu einem zusammenhängenden BereichA1:J2
🙂