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.
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
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.
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 = TrueEndSub
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)
(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.