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

Formel ersetzen durch berechneten Wert

Formel ersetzen durch berechneten Wert
16.08.2002 15:38:03
Markus Fischer
Hallo NG,

ich suche für das Ersetzen von Formeln durch den durch die Formel errechneten Wert eine Hilfestellung.

Folgendes mache ich:
Ich kopiere per VBA ein Excel-Blatt von einer Arbeitsmappe in die andere. Dabei sollen jedoch Formeln, die noch auf die ursprüngliche Arbeitsmappe verweisen durch den Wert ersetzt werden, da ich die Kopie weiterverwenden will - ohne Bezüge auf die ursprüngliche Mappe.
-----
Quellcode:
Public Sub template_kopie(sheetname As String)
Dim template As String
Dim datei As String
Dim blatt As Object
Application.ScreenUpdating = False
Workbooks.Add
datei = CStr(ActiveWorkbook.Name)
template = "t_" & sheetname
Workbooks("Teradata.xls").Worksheets(template).Activate
Set blatt = ActiveSheet
blatt.Copy before:=Workbooks(datei).Sheets(1)
Application.CutCopyMode = False
Workbooks(datei).Worksheets(template).Activate
ActiveSheet.Name = sheetname
ActiveSheet.Visible = xlSheetVisible
Application.ScreenUpdating = True
End Sub
----------------

Zwei Ansätze habe ich:

Entweder es gibt einen zusätzlichen Parameter bei der Zeile "blatt.Copy before:=Workbooks(datei).Sheets(1)", der die Formeln direkt durch die Werte ersetzt. (?)

Oder es gibt die Möglichkeit, in dem neuen Excelblatt die Zellen mit den Formeln zu erkennen (?) und dann zu ersetzen mittels:
Sub ErsetzeWert()
Dim a As Variant
a = ActiveCell.Value
ActiveCell.Value = a
End Sub

Dabei ist wichtig, das ich generell das ganze Blatt durchsuchen möchte, da ich eine Funktion für verschiedene Kopiervorlagen verwenden möchte und daher nicht weiß, an welcher Stelle Formeln stehn.

Vielen Dank schon mal im voraus!!
Schönes Wochenende
Gruß
Markus

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

Betreff
Datum
Anwender
Anzeige
evtl. lösungsansatz...
16.08.2002 15:44:59
Ingo
Hallo Markus,
ginge das nicht mit einer art

PasteSpecial Paste:=xlValues

???

Gruß
Ingo

Re: evtl. lösungsansatz...
16.08.2002 15:48:35
Markus Fischer
Hallo Ingo,

das ganze vor dem
blatt.Copy before:=Workbooks(datei).Sheets(1)
als Parameterangabe?

Oder wie muß ich das eingeben?

DANKE!
Gruß
Markus

Re: evtl. lösungsansatz...
16.08.2002 15:58:59
Ingo
Hallo Markus,
wie genau weiß ich auch net, daher evtl..
so klappts jedenfalls bei "copy und paste"
vielleicht gehts in verbindung mit with oder so...
dachte nen versuch isses wert
gruß
ingo
Re: Formel ersetzen durch berechneten Wert
16.08.2002 15:59:38
L.Vira
wenn dein kopiertes Blatt aktiv ist:
Cells = Cells.Value
Re: evtl. lösungsansatz...
16.08.2002 16:00:03
Markus Fischer
Ich habs noch mal nachgeschlagen, das
PasteSpecial Paste:=xlValues
geht nur, wenn ich auf eine Range kopiere, nicht als Parameter beim Kopieren des ganzen Blattes.

Also noch keine Lösung... ;-)

Gruß
Markus

Anzeige
doch kein lösungsansatz...
16.08.2002 16:02:05
Ingo
schade, viel glück noch
Cells = Cells.Value lässt den Rechner stürzen
16.08.2002 16:39:50
Markus Fischer
Hallo L.Vira,

wenn ich "Cells = Cells.Value" einsetze, dann fängt mein Rechner gewaltig an zu arbeiten, arbeiten in anderen Appliaktionen wird auch geblockt und er tut miunutenlang so, als würde er was machen.
Ist das evtl ne Endlosschleife? oder läuft alle möglichen Kombinationen von zelle und Spalte durch?

Dann scheint mir die Selektion der formelbasierten Zellen vorab aber auf jeden Fall performanceoptimaler.

DANKE trotzdem.
Gruß
Markus

Re: Cells = Cells.Value lässt den Rechner stürzen
16.08.2002 18:14:14
L.Vira
Zugegeben, das ist etwas kühn. Warum nutzt du nicht PasteSpecial?
Re: PasteSpecial
17.08.2002 03:27:19
Markus Fischer
weil ich das ganze Arbeitsblatt kopiere, um das gesamte Format zu erhalten (Spaltenbreiten, Farben, Linien, Schrift, etc) und nicht nur einen per Range definierten Bereich.

Und wegen dem Kopieren muß ich danach die Formeln durch die errechneten Werte ersetzen.

Gruß
Markus

Anzeige
Re: Formel ersetzen durch berechneten Wert
17.08.2002 11:46:16
Martin Beck
Hallo Markus,

hier noch zwei Alternativen:

Gruß
Martin Beck

Re: Formel ersetzen durch berechneten Wert
17.08.2002 16:25:34
L.Vira
ich weiß nicht, wie groß dein Zellbereich ist, aber mit einigen tausend Zellen ist das hier ok:
Option Explicit
Sub Werte()
Dim UR As Range
Set UR = ActiveSheet.UsedRange
UR = UR.Value
End Sub
Re: Formel ersetzen durch berechneten Wert
20.08.2002 00:14:52
Markus Fischer
Hallo Martin,
hallo L.Vira,

Option Explicit
Sub Werte()
Dim UR As Range
Set UR = ActiveSheet.UsedRange
UR = UR.Value
End Sub

funktioniert nicht performant genug, da im Exce-Blatt immer mal wieder sporadisch Zellen gefüllt sein können...

Sub Formeln_weg2()
Cells.Copy
Cells.PasteSpecial Paste:=xlValues
Range("A1").Select
Application.CutCopyMode = False
End Sub

setzt meinen Testrechner in Daueraktivität - anscheinend initialisiert und belegt mein Template wirklich die gesamte Zellenreichweite des Blattes.

Aber der Ansatz

FUNKTIONIERT!! Yep!

DANKE schön!!

Gruß
Markus

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige