Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1328to1332
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

Range mit UNION bilden

Range mit UNION bilden
04.09.2013 02:42:56
Peter_S
Hallo,
ich möchte eine Range aus mehreren einzelnen Spalten bilden und verwende hierzu UNION. Beim Lesen der Range erhalte ich aber auch alle anderen Spalten.
Beispiel:
Set rSpalten = Nothing
For iCol = 1 To ws.UsedRange.Columns.Count
If iCol = 2 Or _
iCol = 5 Or _
iCol = 8 Then
If rSpalten Is Nothing Then
Set rSpalten = ws.Cells(1, iCol).EntireColumn
Else
Set rSpalten = Union(rSpalten , ws.Cells(1, iCol).EntireColumn)
End If
End If
Next
Mit rSpalten.Cells(1, 2) erhalte ich statt den Wert aus der ersten Zeile der 3. Spalte statt wie gewünscht den Wert aus der 5. Spalte.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bei einer Mehrfachauswahl ...
04.09.2013 04:50:37
Luc:-?
…(Union) muss man jede Area einzeln ansprechen, Peter;
mit flfd Index kann man in diesem Fall nur eine Array-Variable traktieren. Bei Union wird einfach über die jeweilige Area hinaus weitergezählt.
Gruß Luc :-?

AW: Range mit UNION bilden
04.09.2013 05:03:49
Luschi
Hallo Peter_S,
so ist es ja auch von Dir vorgegeben im Vba-Code, die Spalten 2, 5 und 8 werden in das neue Rangeobjekt übernommen.
Im neuen Bezugssystem ist die jetzt 2. Spalte die ehemals 5. Spalte.
Die ehemals 3. Spalte ist überhaupt nicht übernommen worden.
Ein Beispiel:

Sub test1()
Dim rg As Range
Set rg = Range("K1:Z10")
MsgBox rg.Range("A1")
Set rg = Nothing
End Sub
Jetzt rate mal, welcher Zellinhalt angezeigt wird; natürlich der Inhalt vom alten Bezugssystem 'K1'.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Range mit UNION bilden
04.09.2013 09:49:50
Peter_S
Hallo Luschi,
vielen Dank für Deinen Hinweis. Genau so würde ich es erwarten. In der neuen Range erhalte ich in der ersten Spalte die Werte der ursprünglichen Spalte 2. Aber in der zweiten Spalte der neuen Range stehen nich die Werie der ursprünglichen Spalte 5 sondern die der ursprünglichen Spalte 3.
Sorry, mein erster Beitrag war hier missverständlich (das erste "statt" gehört aus dem letzten Satz raus). Kann es sein, dass dies mit der Übernahme der Entire.Column zusammenhängt?
Gruß Peter

AW: Range mit UNION bilden
04.09.2013 11:15:21
Luschi
Hallo Peter,
ich habe noch mal ein bischen getestet und festgestellt, das in Deinem Fall (lückenbehaftete Bereiche in einem Range-Objekt) der Zugriff 'rSpalten.Cells(1, 3).Value' so nicht funktioniert.
Eigentlich willst Du ja hier den Inhalt von 'H1' ändern oder anzeigen. Excel geht aber von der 1. Zelle in rSpalten aus ('B1') und nimmt die 3. Zelle rechts davon aus der tatsächlichen Tabelle und nicht aus rSpalten - greift also auf 'D1' zu.
Wenn man aber per For 'Each rg In rSpalten' den Bereich durchläuft, werden nur die Zellwerte der 2., 5. und 8. Spalte angezeigt.
Verstehen tue ich das auch nicht.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Range mit UNION bilden
04.09.2013 12:22:13
Peter_S
Hallo Luschi und Rudi,
vielen Dank für Eure Hinweise und Vorschläge. For each rng in rSpalten funktioniert nicht, da ich die Zellen direkt adressieren muss. Der Lösungsvorschlag über Areas funktioniert auch nicht, da Excel dummerweise nebeneinander liegende Spalten zu einer Area zusammenfasst.
Viele Grüße
Peter

AW: Range mit UNION bilden
04.09.2013 14:05:50
Rudi
Hallo,
wozu brauchst du den Bereich?
Um ihn in der gewünschten Weise adressieren zu können, brauchst du einen zusammenhängenden Bereich.
Motto:
rSpalten.Copy
with sheets(2).cells(1,1)
.currentregion.clear
.pastespecial xlpastevalues
set rpalten =.currentregion
end with
Gruß
Rudi

Anzeige
Nebeneinanderliegende Spalten?
04.09.2013 16:08:38
Luc:-?
Deine Spalten in Union liegen doch gar nicht nebeneinander, Peter,
sonst wäre richtig, was du schreibst! Aber da du anscheinend der Peter bist, der meine AWn lieber ignoriert, darfst du dein Problem gern ohne meine Mithilfe lösen! :->>
Luc :-?

das liegt wohl daran, ...
04.09.2013 16:45:26
Rudi
Hallo,
... dass sein Beispiel (wie die meisten Bsp) nicht der Realität entspricht.
Gruß
Rudi

Ja, da wirst du leider mal wieder recht haben, ...
05.09.2013 01:06:39
Luc:-?
…Rudi…! ;-]
Gruß Luc :-?

wie Luc schon schrieb,....
04.09.2013 11:20:31
Rudi
Hallo,
muss du in dem Fall mit Areas() arbeiten.
MsgBox rSpalten.Areas(2).Cells(5) oder
MsgBox rSpalten.Areas(2).Range("A5")
gibt dir die 5.Zeile der 2.Spalte zurück.
Gruß
Rudi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige