Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nur Zellen mit Formeln als Werte kopieren

Nur Zellen mit Formeln als Werte kopieren
19.02.2008 16:10:02
Klaus
Hallo Forum,
ich habe 2 gleich große Felder mit Namen "Blau" und "Gelb",
die in einer geschützen Tabelle nebeneinander liegen und mit Werten gefüllt sind.
Ich möchte nun alle Zellwerte von Range(Blau) an die gleiche Stelle von Range(Gelb) kopieren,
allerdings nur die Zellen, die Formelwerte beinhalten – normale Texte sollen unberücksichtigt bleiben.
Ich habe schon mit SpecialCells und Locked.Cells experimentiert, aber entweder wird
alles kopiert oder nur die Zelle oben links. Bisher habe ich

Sub UnlockedCellsKopieren()
Worksheets("Archiv").Unprotect
Dim WorkRange As Range
Dim FoundCells As Range
Dim Cell As Range
Set WorkRange = Worksheets("Archiv").Range("Blau")
For Each Cell In WorkRange
If Cell.Locked = False Then
If FoundCells Is Nothing Then
Set FoundCells = Cell
Else
Set FoundCells = Union(FoundCells, Cell)
End If
End If
Next Cell
FoundCells.Select
For Each Cell In Selection.Areas
FoundCells.Offset(0, -4).Value = FoundCells.Value
Next Cell
Worksheets("Archiv").Protect
End Sub


Funktioniert aber nicht. Hat jemand von Euch eine zündende Idee?
Zum besseren Verständnis Beispielarbeitsmappe anbei
https://www.herber.de/bbs/user/50023.xls
Für Antworten Dank im voraus
Klaus

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur Zellen mit Formeln als Werte kopieren
19.02.2008 16:20:41
Rudi
Hallo,

Sub UnlockedCellsKopieren()
Worksheets("Archiv").Unprotect
Dim WorkRange As Range
Dim FoundCells As Range
Dim Cell As Range
Set WorkRange = Worksheets("Archiv").Range("Blau")
For Each Cell In WorkRange
If Cell.Locked = False Then
If FoundCells Is Nothing Then
Set FoundCells = Cell
Else
Set FoundCells = Union(FoundCells, Cell)
End If
End If
Next Cell
For Each Cell In FoundCells.Cells
Cell.Offset(0, -4).Value = Cell.Value
Next Cell
Worksheets("Archiv").Protect
Worksheets("Archiv").Range("A1").Select
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: Dankeschön
19.02.2008 16:26:56
Klaus
Hallo Rudi,
so dicht dran und doch so weit weg ...
Vielen Dank dafür – klappt bestens.
Gruß
Klaus

Alternative
19.02.2008 16:33:01
Original
Hi,
oder:

Sub til()
Dim c As Range
For Each c In [blau].SpecialCells(xlCellTypeFormulas, 23)
If Not c.Locked Then
c.Offset(0, -4) = c
c.Offset(0, -4) = c.Offset(0, -4).Value
End If
Next
End Sub


mfg Kurt

Auch gut
19.02.2008 16:49:03
Klaus
Hallo Kurt,
das ist in der Tat auch eine sehr elegante Lösung –
und sehr leicht anpassbar.
Vielen Dank auch dafür!
Gruß
Klaus

AW: Auch gut
19.02.2008 16:53:24
Daniel
Hi
der Coder ist gut, aber immer noch verbesserbar.
die zweite Zeile beim kopieren ist überflüssig, so müsste es auch funktionieren:

Sub til()
Dim c As Range
For Each c In [blau].SpecialCells(xlCellTypeFormulas, 23)
If Not c.Locked Then
c.Offset(0, -4).formula = c.value
End If
Next
End Sub


Gruß, Daniel

Anzeige
AW: Auch gut
19.02.2008 17:00:36
Original
Hi,
wenn schon sparen, dann richtig:

Sub til()
Dim c As Range
For Each c In [blau].SpecialCells(xlCellTypeFormulas, 23)
If Not c.Locked Then
c.Offset(0, -4) = c.value
End If
Next
End Sub


mfg Kurt

AW: Auch gut
19.02.2008 18:16:00
Daniel
Hi
das 2. Value könnte man dann konsequenterweise auch weglassen, oder?
Gruß, Daniel
ps. allerdings glaube ich mich daran erinnen zu können, daß die Variante mit .Formula = .Value am zuverlässigsten arbeitet, wenn man diese Methode auf grössere Zellbereiche anwendet.

343 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige