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

Union(Range
14.06.2016 11:34:42
Nik

Hallo zusammen..
ich stehe mal wieder etwas auf der Leitung.. Ich möchte gerne Formel durch Werte ersetzen in definierten Bereichen. Das wollte ich so machen:
With ActiveSheet.Union(Range("G12:R20,G22:R34"))
.Cells = .Cells.Value
End With
Was mache ich hier falsch? Hat mir jemand ein Tip?
Vielen lieben Dank und Gruss
Nik

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Union(Range
14.06.2016 12:02:41
Michael
Hallo Nik,
geht auch ohne Union:
Sub test()
With ActiveSheet.Range("G12:R20", "G22:R34")
.Cells = .Cells.Value
End With
End Sub
Gruß
Michael

Union() ...
14.06.2016 12:39:54
RPP63
... ist eine Methode der Application, nicht eines Worksheets.
Gruss Ralf

AW: Union() ...
14.06.2016 12:55:30
Nik
Okay, probiere ich mal so aus! Vielen lieben Dank für Eure Hilfe!
Gruss
Nik

Funktioniert noch immer nicht! Union() ...
14.06.2016 14:22:28
Nik
Hallo zusammen,
Der Code oben von Michael funktioniert einwandfrei, wenn ich aber den Bereich erweiter wie hier:
Sub test()
With ActiveSheet.Range("G12:R20", "G22:R34", "G36:R37", "G39:R43")
.Cells = .Cells.Value
End With
End Sub
funktioniert er wieder nicht. Ich bin mit meinem Latein echt am Ende. Ich muss einige Bereiche markieren und deren Formeln durch Werte ersetzen. Ich muss prinzipiell alle DBRW-Formeln (TM1-Formeln) ersetzen, welche aber nicht immer am Anfang steht, sondern auch mal verschachtelt in der Mitte. Vielleicht gibt es auch eine andere Lösung?
Vielen lieben Dank und Gruss
Nik

Anzeige
AW: Union(Range
14.06.2016 13:27:26
Daniel
Hi
im Prinzip reicht:
With Range("G12:R20")
.Formula = .Value
End with
das Problem ist, dass das in einem Schritt nur für einen rechteckigen und lückenlosen Zellbereich funktioniert (also alles was mit Zelle_oben_Links / Zelle_unten_Rechts ausreichen beschrieben werden kann)
ist der Zellbereich unterbrochen und besteht aus mehreren Rechteckbereichen, so musst du jeden Bereich separat umwandeln. Diese Rechteckbereiche einer Range sind in deren AREAS hinterlegt, so dass man eine Schleife über die Areas der Range laufen lassen kann:
dim ar as Range
for each ar in Range("G12:R20,G22:R34").areas
ar.formula = ar.value
next
wenn du mit Union arbeiten willst:
dim ar as Range
for each ar in Union(Range("G12:R20"), Range("G22:R34")).areas
ar.formula = ar.value
next
Gruß Daniel

Anzeige
AW: Union(Range
14.06.2016 14:26:58
Nik
Sorry, hab das erst jetzt gesehen, ich probier es grad mal aus! Vielen lieben DANK!
Gruss
Nik

AW: Union(Range
14.06.2016 14:27:03
Nik
Sorry, hab das erst jetzt gesehen, ich probier es grad mal aus! Vielen lieben DANK!
Gruss
Nik

AW: Union(Range
14.06.2016 14:37:01
Nik
Hi Daniel,
funktioniert soweit so gut. Ich habe allerdings noch ein paar Bereiche mehr, die nicht mehr in eine Zeile reinpassen:
Dim ar As Range
For Each ar In Range("G12:R20,G22:R34,G36:R37,G39:R43,G45:R52,G54:R60,G62:R68,G70:R76,G78:R80,G82:R87,G89:R91,G93:R94,G96:R98,G100:R100,G102:R102,G105:R110"), _
Range("U12:AF20,U22:AF34,U36:AF37").Areas
ar.Formula = ar.Value
Next
Ich habe es nicht geschafft die Verbindung auf die nächste Zeile herzustellen, so dass ich noch ein paar Bereiche mehr eintragen kann. Was mache ich hier falsch?
Vielen lieben Dank und Gruss
Nik

Anzeige
"...," & _ nächste Zeile "..." Gruß owT
14.06.2016 14:41:56
Luc:-?
:-?

AW: "...," & _ nächste Zeile "..." Gruß owT
14.06.2016 14:54:02
Nik
Jetzt funktioniert es! :-)
Die eleganteste Lösung wäre halt nach DBRW-Formeln suchen (egal ob die Formel damit beginnt oder auch nur verschachtelt in der Mitte steht) und diese mit Werten ersetzen. Aber das ist nur nice to have wenn sich die Bereiche mal ändern; bin schon happy das es so passt.
DANKE & Gruss
Nik

AW: Union(Range
14.06.2016 14:54:17
Daniel
Hi
in der Range-Funktion darf der Addressstring höchstens 256 Zeichen lang sein (auch wenn die Range aus wesentlich mehr Areas bestehen kann)
Wenn du einen Bereich erstellen willst, dessen Adressstring länger als 256 Zeichen ist, müsstst du aus mehreren Teilbereichen zusammenstetzen (mit Union)
dim rngX as range
dim ar as range
set rngX = Range("G12:R20,G22:R34,G36:R37,G39:R43,G45:R52,G54:R60,G62:R68"))
set rngX = Union(rngX, Range("G70:R76,G78:R80,G82:R87,G89:R91,G93:R94,G96:R98"))
set rngX = Union(rngX, Range("G100:R100,G102:R102,G105:R110"))
for each ar in rngX
...
je nach Struktur lässt sich so ein Bereich auch auch über INTERSECT effektiv erstellen:
set rngX = Intersect(Range("G:R"), Range("12:20,22:34,36:37,39:43,45:52,54:60,62:68,...."))

wenn du die VBA-Befehlszeile in eine neue Editorzeile umberechen willst und dieser Umbruch innerhalb eines Textstrings liegen soll, dann so:
For Each ar in Range("G12:R20,G22:R34,G36:R37,G39:R43,G45:R52" & _
",G54:R60,G62:R68,G70:R76,G78:R80,G82:R87")
Gruß Daniel

Anzeige
AW: Union(Range
14.06.2016 15:07:32
Nik
Hi Daniel,
das ist es, ich bin an diesen 256 Zeichen gescheitert, da hat er mir einen Strich durch die Rechnung gemacht. Danke für die Info! :-)
DANKE und Gruss
Nik

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge