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

Forumthread: Wert aus Zelle per VBA in Double einlesen

Wert aus Zelle per VBA in Double einlesen
Peter
Hallo zusammen,
mal wieder eine kleine Frage zu einem Excel-Verhalten ... dass ich so nicht erwartet habe.
Mittels dem VBA-Code
Tabelle5.Cells(lngRGBuchZeile, 36).Value = CDbl(Tabelle9.Cells(lngTarifZeile1, 12).Value)
lese ich einen Wert aus Tabelle9 und schreibe ihn in Tabelle5.
Soweit so gut.
In der Tabelle aus der ich lese steht ein Währungsbetrag mit 5 Nachkommastellen.
Nachdem der Wert in die Tabelle5 geschrieben wird, sind es nur noch vier Nachkommastellen.
Und auch wenn ich im VBA-Direktbereich mir den ursprünglichen Zellwert ansehen will mit ?CDbl(Tabelle9.Cells(lngTarifZeile1, 12).Value), dann fehlt diese letzte Nachkommastelle.
Habt Ihr eine Idee, was ich da falsch mache?
Danke für jede Idee und jede Hilfe
Viele Grüße
Peter
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Wert aus Zelle per VBA in Double einlesen
04.05.2012 13:39:25
Rudi
Hallo,
dem Währungsbetrag wird automatisch der Datentyp Currency zugewiesen. Der kann nur 4 Nachkommastellen.
Gruß
Rudi
AW: Wert aus Zelle per VBA in Double einlesen
04.05.2012 13:50:41
Peter
Hallo Rudi,
vielen Dank für Deine Antwort ... auch wenn die inhaltlich nicht so richtig schön ist :-)
Hast Du auch eine Idee, wie ich mit fünfstelligen Nachkommastellen umgehen kann? Ich hab' gerade mal versucht, die Zelle benutzerdefiniert als Zahl zu formatieren mit dem Format #.##0,00000 "€" ... das mag er auch nicht :-(
Gruß
Peter
Anzeige
AW: Wert aus Zelle per VBA in Double einlesen
05.05.2012 06:41:09
Ass
Hallo Peter
in der Value2-Eigenschaft sind noch alle Nachkommastellen vorhanden.
'müsste also so gehen:
Tabelle5.Cells(lngRGBuchZeile, 36) = Tabelle9.Cells(lngTarifZeile1, 12).Value2
Gruß
Rudi
AW: Wert aus Zelle per VBA in Double einlesen
06.05.2012 10:22:04
Peter
Hallo Rudi,
ganz großen Dank für Deinen Tipp mit Value2.
Es klappt genauso wie es sein soll.
Herzliche Grüße
Peter
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Wert aus Zelle per VBA in Double einlesen


Schritt-für-Schritt-Anleitung

Um einen Wert aus einer Zelle mittels VBA in einen Double-Datentyp einzulesen, folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (ALT + F11).

  2. Wähle das gewünschte Arbeitsblatt und füge einen neuen VBA-Code ein.

  3. Verwende den folgenden Code, um einen Wert aus einer Zelle zu lesen und in eine andere Zelle zu schreiben:

    Dim lngRGBuchZeile As Long
    Dim lngTarifZeile1 As Long
    lngRGBuchZeile = 1 ' Beispielzeile für Ziel
    lngTarifZeile1 = 1 ' Beispielzeile für Quelle
    
    Tabelle5.Cells(lngRGBuchZeile, 36).Value = CDbl(Tabelle9.Cells(lngTarifZeile1, 12).Value)
  4. Stelle sicher, dass der Wert in der Quellzelle tatsächlich als Double behandelt werden kann. Das bedeutet, dass der Wert keine unzulässigen Zeichen enthalten darf.


Häufige Fehler und Lösungen

Fehler: Der Wert wird nur mit vier Nachkommastellen angezeigt.

Lösung: Wenn Du einen Währungsbetrag mit fünf Nachkommastellen einliest, kann es sein, dass Excel automatisch den Datentyp Currency zuweist, der nur vier Nachkommastellen unterstützt. Um dies zu umgehen, kannst Du die Value2-Eigenschaft verwenden:

Tabelle5.Cells(lngRGBuchZeile, 36).Value = Tabelle9.Cells(lngTarifZeile1, 12).Value2

Alternative Methoden

Eine weitere Methode, um sicherzustellen, dass alle Nachkommastellen korrekt übernommen werden, ist die Verwendung von CDbl oder CDBL in Kombination mit der Value2-Eigenschaft. Hier ein Beispiel:

Dim doubleWert As Double
doubleWert = CDbl(Tabelle9.Cells(lngTarifZeile1, 12).Value2)
Tabelle5.Cells(lngRGBuchZeile, 36).Value = doubleWert

Diese Methode stellt sicher, dass der Wert als Double behandelt wird.


Praktische Beispiele

  1. Währungsbetrag einlesen:

    Wenn Du einen Währungsbetrag aus einer Zelle mit fünf Nachkommastellen einlesen möchtest, verwende:

    Tabelle5.Cells(1, 36).Value = Tabelle9.Cells(1, 12).Value2
  2. Umwandlung von String zu Double:

    Wenn der Wert als String vorliegt, kannst Du ihn so umwandeln:

    Dim stringWert As String
    stringWert = Tabelle9.Cells(1, 12).Value
    Dim doubleWert As Double
    doubleWert = CDbl(stringWert)
    Tabelle5.Cells(1, 36).Value = doubleWert

Tipps für Profis

  • Nutze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler frühzeitig zu erkennen.
  • Teste Deinen Code stets im Debugger, um sicherzustellen, dass die Werte korrekt konvertiert werden.
  • Achte darauf, die richtigen Datentypen zu verwenden; As Double ist wichtig, um sicherzustellen, dass Du mit Fließkommazahlen arbeitest.

FAQ: Häufige Fragen

1. Warum wird mein Währungsbetrag nicht korrekt angezeigt?
Der Datentyp Currency hat eine Beschränkung auf vier Nachkommastellen. Verwende die Value2-Eigenschaft, um alle Nachkommastellen zu erhalten.

2. Was ist der Unterschied zwischen CDbl und CDBL?
Es gibt keinen Unterschied; beide Funktionen sind identisch und dienen der Umwandlung in den Datentyp Double.

3. Wie kann ich sicherstellen, dass ein Wert als Double behandelt wird?
Verwende die CDbl-Funktion oder die Value2-Eigenschaft, um sicherzustellen, dass Excel den Wert als Double interpretiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige