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

Problem mit Dezimalzahlen in Tabellenzellen (VBA)

Forumthread: Problem mit Dezimalzahlen in Tabellenzellen (VBA)

Problem mit Dezimalzahlen in Tabellenzellen (VBA)
17.07.2008 01:18:26
Ulf
Hallo,
Angenommen der Wert in b3 sei 38,785
Diesen Wert lese ich in eine Variable (double)
r = Tabelle1.Range("B3").Formula
Anschließend wird eine Variable (auch double) hinzuaddiert und in einer anderen Zelle ausgegeben
Tabelle1.Range("B4").Formula = r + Mindestzeit
Das ganze funktioniert nicht wie erwartet. Wenn Mindestzeit auf 2,00 festgelegt ist ist mein Ergebnis in der Ausgabezelle 38787 (also 38,785 + 2,00). Beim Auslesen wird nicht berücksichtigt, dass es sich um eine reelle Zahl handelt und der Wert als Integer interpretiert - Das Komma wird Quasi überlesen.
Was mache ich falsch?
Danke und Gruß Backflip

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Problem mit Dezimalzahlen in Tabellenzellen (VBA)
17.07.2008 01:31:00
Tino
Hallo,
veruch mal anstatt,
2,00
2.00 oder nur 2 einzugeben.
Gruß Tino

AW: .Formula oder .Value
17.07.2008 06:49:00
Erich
Hallo Ulf,
schreib doch mal eine Zeile unter
r = Tabelle1.Range("B3").Formula
die Zeile
MsgBox r
Dann siehst du, dass in der Double-Variablen r die Zahl 38785 steht. Dazu 2 addiert, ergibt 38787.
Oder teste mal dies hier:

Sub tst1()
Dim r1 As Double, r2 As Double
Dim s1 As String, s2 As String
r1 = Tabelle1.Range("B3").Formula
MsgBox "r1: " & r1
r2 = Tabelle1.Range("B3").Value
MsgBox "r2: " & r2
s1 = Tabelle1.Range("B3").Formula
MsgBox "s1: " & s1
s2 = Tabelle1.Range("B3").Value
MsgBox "s2: " & s2
End Sub

Wenn in B3 eine Formel (z. B. =10+28,785 ) steht, bekommst du einen Fehler.
Was du tatsächlich von B3 verwenden willst, ist doch gar nicht die Formel, sondern der Wert in der Zelle.
Wenn du einen WERT aus einer Zelle haben willst, dann mit
Tabelle1.Range("B3").Value
oder
Tabelle1.Range("B3") ' (Value ist die Standardeigenschaft, kann entfallen)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Probleme mit Dezimalzahlen in Tabellenzellen beheben


Schritt-für-Schritt-Anleitung

  1. Zelle auslesen: Um den Wert einer Zelle auszulesen, verwende:

    r = Tabelle1.Range("B3").Value

    Dies stellt sicher, dass der Wert als Dezimalzahl interpretiert wird.

  2. Wert hinzufügen: Füge den Wert (z.B. Mindestzeit) hinzu und schreibe das Ergebnis in eine andere Zelle:

    Tabelle1.Range("B4").Value = r + Mindestzeit
  3. Debugging: Wenn Du den Wert überprüfen möchtest, füge eine Debug-Meldung hinzu:

    MsgBox r
  4. Verwendung von Kommas: Achte darauf, dass Du in VBA Kommas verwendest, wenn Du mit Dezimalzahlen arbeitest. Also verwende 2.00 oder 2 anstelle von 2,00.


Häufige Fehler und Lösungen

  • Problem: Der Wert wird als Integer interpretiert, was zu falschen Ergebnissen führt (z.B. 38787 statt 40,785).

    • Lösung: Stelle sicher, dass Du .Value anstelle von .Formula verwendest, um den tatsächlichen Wert der Zelle auszulesen.
  • Problem: VBA gibt einen Fehler aus, wenn eine Formel in der Zelle steht.

    • Lösung: Verwende die .Value-Eigenschaft, um den aktuellen Wert der Zelle zu erhalten, der unabhängig von der Formel ist.

Alternative Methoden

Eine alternative Methode, um mit Dezimalzahlen in einer Tabelle zu arbeiten, ist die Verwendung von WorksheetFunction. Du kannst beispielsweise WorksheetFunction.Sum verwenden, um Werte in einer Tabelle zu summieren, ohne direkt mit Variablen zu arbeiten:

Dim summe As Double
summe = WorksheetFunction.Sum(Tabelle1.Range("B3:B10"))

Dies kann besonders nützlich sein, wenn Du mit vielen Dezimalzahlen in einer Tabelle arbeitest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie Du mit Dezimalzahlen in einer Tabelle arbeiten kannst:

Sub Beispiel()
    Dim r As Double
    Dim Mindestzeit As Double
    Mindestzeit = 2.00 ' oder 2
    r = Tabelle1.Range("B3").Value
    Tabelle1.Range("B4").Value = r + Mindestzeit
End Sub

In diesem Beispiel wird der Wert aus Zelle B3 als Dezimalzahl behandelt, und die Mindestzeit wird korrekt hinzugefügt.


Tipps für Profis

  • Nutze die .Value-Eigenschaft, um sicherzustellen, dass Du mit den korrekten Datentypen arbeitest.
  • Verwende Debug.Print anstelle von MsgBox, wenn Du viele Werte überprüfen möchtest, um den Codefluss nicht zu unterbrechen.
  • Achte darauf, dass die regionalen Einstellungen Deines Systems die Verwendung von Dezimalzahlen beeinflussen können. Überprüfe dies in den Excel-Optionen.

FAQ: Häufige Fragen

1. Warum wird der Wert als Integer interpretiert?
Der Wert wird als Integer interpretiert, wenn die .Formula-Eigenschaft verwendet wird. Stattdessen solltest Du die .Value-Eigenschaft verwenden.

2. Was ist der Unterschied zwischen .Formula und .Value?
.Formula gibt die Formel zurück, die in der Zelle steht, während .Value den tatsächlichen Wert in der Zelle zurückgibt.

3. Wie gehe ich mit Kommazahlen in VBA um?
In VBA sollten Dezimalzahlen mit einem Punkt (.) anstelle eines Kommas (,) eingegeben werden. Achte darauf, dass dies den regionalen Einstellungen Deines Systems entspricht.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige