Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: anewka am Oktober 23, 2015, 09:53:41 Vormittag
-
Hallo an Alle,
ich habe hier ja schon viele hilfreiche Tips gefunden, danke schonmal dafür.
Bei einem Problem komme ich jetzt nicht weiter.
in einer Tabelle werden Preise errechnet, die Basisdaten werden aus anderen Tabellen gezogen.
Nun sollen nachträglich die zwischenergebnisse gerundet werden, ohne in jeden Formel gehen zu müssen und die Rundungsformel einzugeben.
mit VBA habe ich das soweit hinbekommen, scheitere aber an den externen Bezügen durch das Hochkomma.
Sub runde_auf_2()
Dim Zelle As Range
On Error Resume Next
For Each Zelle In Selection.Cells
'Gleichheitszeichen entfernen
Zelle.FormulaLocal = Replace(Zelle.FormulaLocal, "=", "")
'Formel vor und nach der Formel anhängen
Zelle.FormulaLocal = "=runden(" & Zelle.FormulaLocal & ";2)"
Next Zelle
On Error GoTo 0
End Sub
Ich habe schon mit mehreren replace-Befehlen versucht, das Hochkomma durch andere Zeichen zu ersetzen und nach der Formelergänzung wieder zurück, bin aber bisher immer gescheitert.
Besten Dank schonmal für hilfreiche Hinweise.
Gruß
Anewka
-
Moin Anewka,
eigentlich schade, dass du bei den "vielen hilfreichen Tipps" nicht auch gelesen hast, dass es meistens mehr als sinnvoll ist, eine (anonymisierte) Muster-Mappe (xls, xlsm) mit anzuhängen.
-
Hallo Günther,
hole ich hiermit gerne nach, siehe Anhang.
Habe die Szenerie mal kurz nachgestellt.
Danke und Gruß Anewka
-
Moin Anewka,
probiere es mal so:
Sub GMG()
Dim Data As Range, c As Range
Set Data = ActiveSheet.Range("A3:A6") 'anpassen
For Each c In Data
c.Formula = "=ROUND('Basis 1'!C" & c.Row & ",2)"
Next c
End Sub
-
Hallo Günther,
vielen Dank für deine Antwort.
Nun ist das ja nur eine Beispieltabelle.
Der Bereich der um die Rundungsformel zu ergänzenden Zellen wird unterschiedlich groß sein.
In den Zellen stehen Verweise auf unterschiedliche Tabellen/Blätter.
Ich suche nun die Möglichkeit, unabhängig von der eigentlichen Verknüpfung die Rundenformel zu ergänzen.
Dazu habe ich versucht, das Hochkomma zu ersetzen und danach zurückzuersetzen. Funktioniert nur leider nicht wie gewünscht. Hier einer meiner Versuche:
Sub runde_auf_2()
Dim Zelle As Range
On Error Resume Next
For Each Zelle In Selection.Cells
'Hochkomma durch Raute ersetzen
' Zelle.FormulaLocal = Replace(Zelle.FormulaLocal, Chr(39), "#")
Zelle.Value = Replace(Zelle.Value, "'", "#")
'Gleichheitszeichen entfernen
Zelle.FormulaLocal = Replace(Zelle.FormulaLocal, "=", "")
'Formel vor und nach der Formel anhängen
Zelle.FormulaLocal = "=runden(" & Zelle.FormulaLocal & ";2)"
'Raute wieder durch Hochkomma ersetzen
' Zelle.FormulaLocal = Replace(Zelle.FormulaLocal, "#", Chr(39))
Zelle.Value = Replace(Zelle.Value, "#", "'")
Next Zelle
On Error GoTo 0
End Sub
Wie bekomme ich das nun hin?
Danke und Gruß
Anewka
-
OK, ich bin in einem Punkt von deiner "Vorgabe" abgewichen, dafür gerne die Korrektur:
Set Data = Range(Selection.Address(0, 0))
Ansonsten mag ich es nicht, wenn "Nachschlag" gefordert wird, weil die Beschreibung des Problems unzulänglich, unvollständig oder unverständlich war. Gewiss wird sich jemand andere in die Thematik einarbeiten, eigentlich solltest du es aber auch selber können. So schwer ist es nicht ...