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
Top
#2
Format 0,00 oder #.##0,00
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
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.





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)
Top
#5
(02.04.2018, 22: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.
WIN/MSO schicken angeblich alle 5 Sekunden Deinen Screen heim zu Papa (recall-Klausel). 
Top


Gehe zu:


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