Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: Anzahlen der möglichen Dezimalstellen in einer Zelle definieren
#1
Hallo zusammen,
 
in einer Zelle soll die Round-Funktion mit Hilfe von VBA dauerhaft hinterlegt werden, aber ohne eine Procedure über
einen Button oder so etwas aufzurufen. Wie kann ich so etwas umsetzten?
 
Um folgende Bedingungen zu erfüllen:
-ein Benutzer träger in Zelle A1 z.B. 4,3567 ein es soll aber 4,36 dort reingeschrieben werden.
-beim nächsten Verwenden der Zelle trägt der Benutzer 4,3 ein und es soll 4,30 angezeigt werden.
 
Viele Grüße
Antworten Top
#2
Format 0,00 oder #.##0,00
Antworten Top
#3
Hallo A...,

das geht über eine Ereignisprozedur "Worksheet_Change". In der Anlage ein Beispiel:


Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count = 1 And Not (Intersect(Target, Range("C4:C6")) Is Nothing) Then
    If IsNumeric(Target.Value) Then
        Application.EnableEvents = False
        Target.Value = Round(Target.Value, 2)
        Application.EnableEvents = True
    End If
End If
End Sub


Angehängte Dateien
.xlsm   EingabeRunden.xlsm (Größe: 14,03 KB / Downloads: 2)
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#4
Moin!
LCohens Variante rundet "nur" die Anzeige, der Wert bleibt jedoch wie er eingegeben wurde.
Helmuts Variante ist überflüssig!
Dafür gibt es in den erweiterten Optionen die Einstellung "Genauigkeit wie angezeigt festlegen" (wovon ich aber abrate!).

Wenns denn unbedingt VBA sein soll, dann so:
Sub TwoDigits()
Tabelle1.Cells.NumberFormat = "#,##0.00"
ThisWorkbook.PrecisionAsDisplayed = True
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
(02.04.2018, 21:45)Arious87 schrieb: Um folgende Bedingungen zu erfüllen:
-ein Benutzer träger in Zelle A1 z.B. 4,3567 ein es soll aber 4,36 dort reingeschrieben werden.
-beim nächsten Verwenden der Zelle trägt der Benutzer 4,3 ein und es soll 4,30 angezeigt werden.
Der TE lässt dem Antworter hier einen gewissen Interpretationsfreiraum ;), wenn man denn annimmt, dass das Fettgedruckte in beiden Fällen das Gleiche sein soll.
Statt mit "Genauigkeit wie angezeigt" könnte man auch mit =RUNDEN(A1;2) statt =A1 weiter machen. Dann entsteht kein Info-Verlust.
Ich habe "Genauigkeit wie angezeigt" fast noch nie verwendet. Ist aber im buchhalterischen Zusammenhang gar nicht so schlecht.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste