Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Runden des Zellinhaltes

VBA Runden des Zellinhaltes
07.11.2018 15:11:20
Nicole
Hallo zusammen,
wir müssen für unsere Planung tausende von Zeilen bearbeiten mit Formeln und Fixen Zahlen. Jedoch sollen alle am Schluss auf volle tausender gerundet werden.
Durch aufnehmen habe ich folgenden Code :
Sub Makro2()
ActiveCell.FormulaR1C1 = "=ROUND(595,-3)"
End Sub

Wie kann ich den Wert 595 nun auf die aktive Zelle umschreiben.
Als Beispiel in meiner Zelle steht =A1 nach der Formel soll drin stehen
=Runden(A1;-3)
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Runden des Zellinhaltes
07.11.2018 15:23:41
PeterK
Hallo
Formatier deine Zellen mit 0."000" (dann bleiben die Werte erhalten, Du siehst aber nur runde Zahlen)
AW: VBA Runden des Zellinhaltes
07.11.2018 15:26:56
Daniel
Hi
naja so wird das nix.
Runden von vielen Zahlen auf 1000er geht am schnellsten wahrscheinlich so:
1. lege für die Zahlen, die gerundet werden sollen folgendes Zahlenformat fest: "0,."
damit werden dir die Tausender angezeigt.
2. aktiviere in den Optionen - Erweitert - Beim Berechnen dieser Arbeitsmappe das Häkchen "Genauigkeit wie angezeigt"
3. nachdem du die Meldung bestätigt hast, kannst du das Häkchen wieder rausnehmen und im Tabellenblatt das Zahlenformat für die Zellen wieder auf den ursprünglichen Wert setzen.
Gruß Daniel
Anzeige
AW: VBA Runden des Zellinhaltes
07.11.2018 15:33:42
Nicole
Hallo Daniel,
ich arbeite in mehreren Dateien mit mehreren Tabellenreiter und Zeilen.
Da finde ich das eigentlich zu umständlich. Außerdem kann es immer sein dass nachträglich was geändert werden muss und dann muss man des jedes mal wieder neu machen.
Wir arbeiten hier alle mit der Runden Formel und wollen diese nur per Kurzwahl zu unseren Formeln und Zahlen einfügen.
Dennoch danke für den Tipp.
Anzeige
AW: VBA Runden des Zellinhaltes
07.11.2018 15:45:12
Daniel
Hi
naja meinetwegen per Code, muss einmal auf jede Datei angewendet werden.
der Code fügt jeder Zahl und jeder Formel, die noch kein Runden enthält, die Rundungsfunktion hinzu

dim Zelle as range
dim sh as worksheet
for each sh in activeworkbook.worksheets
for each Zelle in sh.UsedRange.specialCells(xlcelltypeconstants, 1)
Zelle.Formlua = "=Round(" & Zelle.Value & ",-3)"
Next
for each Zelle in ActiveSheet.usedrange.SpecialCells(xlcelltypeformulas, 1)
if Instr(Zelle.Formula, "=ROUND")  1 then
Zelle.Formula = "=" & Round(" & mid(zelle.formula, 2) & ",-3)"
end if
Next
nextg
wenn ihr die Rundung nachträglich noch beeinflussen wollt, dann legt ihr euch einen Namen mit dem Wert -3 an und schreibt in die Formel satt dem -3 diesen Namen.
wenn ihr dann wieder die richtigen Zahlen haben wollt, dann ändert ihr einfach den Wert zu diesem Namen.
Gruß Daniel
Anzeige
AW: VBA Runden des Zellinhaltes
07.11.2018 15:49:08
Nicole
Danke Daniel für den Code. Leider brauch ich es nur in einzelnen Spalten und nicht im ganzen Worksheet.
Jedoch habe ich schon eine Lösung. Dennoch danke für deine Hilfe.
AW: VBA Runden des Zellinhaltes
07.11.2018 15:56:09
Daniel
ja schön für dich
wie sieht denn deine Lösung aus und wo hast du sie her?
allerdings verstehe ich deinen Einwand nicht
zuerst sagst du mir dass du viele Worksheets in vielen Dateien bearbeiten musst und jetzt doch nur einzelne Spalten, naja, musst ja wissen was du willst.
Wenn du VBA-Programmierung einsetzt solltest du aber selbstständig in der Lage sein, den Code entsprechend anzupassne und das UsedRange durch den dir genehmen Zellbereich anzupassen.
wenn du dazu aber Hilfe brauchst, solltest du die Finger von dem Projekt lassen und es jemanden übegeben der sich damit auskennt.
Gruß Daniel
Anzeige
AW: VBA Runden des Zellinhaltes
07.11.2018 15:59:00
Nicole
Danke Daniel für deinen ach so netten Einwand. Das "Projekt" sollte uns nur auf die schnelle helfen. Und da mehrere Worksheets dennoch aus mehreren Spalten bestehen kann es sehr wohl sein dass ich nicht alles gerundet haben will. Meine Anforderung war ja das die Aktive Zelle umgeschrieben werden soll. Und da ich ja eine Lösung gefunden habe, werde ich wohl kaum zu blöd dafür gewesen sein. Vielen Dank für deine Hilfe.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellinhalte mit VBA auf volle Tausender runden


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Neues Modul einfügen: Klicke mit der rechten Maustaste auf VBAProject (DeineDatei) und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden VBA-Code und füge ihn in das Modul ein:

    Sub RundenAufTausender()
        Dim Zelle As Range
        For Each Zelle In Selection
            If IsNumeric(Zelle.Value) Then
                Zelle.Value = Application.WorksheetFunction.Round(Zelle.Value, -3)
            End If
        Next Zelle
    End Sub
  4. Makro ausführen: Wähle die Zellen aus, die du runden möchtest, und führe das Makro RundenAufTausender aus.

Mit diesem einfachen VBA-Skript kannst du die Werte in den ausgewählten Zellen auf volle Tausender runden.


Häufige Fehler und Lösungen

  • Fehler: "Typen unverträglich" beim Ausführen des Makros.

    • Lösung: Stelle sicher, dass die ausgewählten Zellen tatsächlich numerische Werte enthalten. Du kannst dies überprüfen, indem du die Zellen markierst und den Wert in der Bearbeitungsleiste ansiehst.
  • Fehler: Das Makro ändert die Formatierung der Zellen.

    • Lösung: Stelle sicher, dass du die Zellen vorher nicht mit einem speziellen Zahlenformat (z.B. 0.000) formatiert hast. Setze die Formatierung zurück, bevor du das Makro ausführst.

Alternative Methoden

  1. Excel-Funktion nutzen: Statt VBA kannst du die Funktion =ROUND(A1, -3) direkt in die Zelle eingeben.
  2. Bedingte Formatierung: Du kannst die bedingte Formatierung verwenden, um visuell anzuzeigen, wenn Zahlen nicht auf volle Tausender gerundet sind, aber das wird die Werte nicht verändern.
  3. Tausenderformat: Setze das Format der Zellen auf "0," um die Zahlen ohne Dezimalstellen anzuzeigen.

Praktische Beispiele

  • Beispiel 1: Wenn in Zelle A1 der Wert 3456 steht, wird nach Ausführung des Makros der Wert auf 3000 gerundet.
  • Beispiel 2: Wenn du eine ganze Spalte von Werten runden möchtest, markiere die gesamte Spalte und führe das Makro aus.

Tipps für Profis

  • Variablen anpassen: Überlege, ob du eine Konstante für den Wert -3 nutzen willst, um die Lesbarkeit deines Codes zu erhöhen.
  • Aufrunden oder Abrunden: Du kannst die Funktion Application.WorksheetFunction.RoundUp oder Application.WorksheetFunction.RoundDown nutzen, um die Werte nach Bedarf aufzurunden oder abzurunden.
  • Fehlerbehandlung einfügen: Überlege, eine Fehlerbehandlung in deinen Code einzufügen, um unerwartete Eingaben besser zu handhaben.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Zahlen immer auf volle Tausender gerundet werden?
Du kannst das oben angegebene VBA-Skript verwenden, um die Werte in den Zellen zu runden.

2. Funktioniert dieser VBA-Code in allen Excel-Versionen?
Ja, der Code sollte in den meisten Excel-Versionen ab Excel 2007 funktionieren.

3. Was passiert, wenn ich versuche, nicht-numerische Werte zu runden?
Das Skript ignoriert nicht-numerische Werte, sodass keine Fehlermeldung angezeigt wird, und es bleibt beim ursprünglichen Wert.

4. Ist es möglich, die Zellen nach dem Runden wieder in das ursprüngliche Format zu bringen?
Ja, du kannst die Formatierung der Zellen jederzeit zurücksetzen, um sie im ursprünglichen Format anzuzeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige