Was ist der Unterschied zwischen .Text, .Value und .Value2?
Es gibt drei Möglichkeiten, den Wert aus einer Zelle mit VBA in Excel mithilfe des Range-Objekts zu lesen. Dies kann über die Eigenschaften erfolgen .Wert, .Wert2 und .Text. Es gibt jedoch einige Unterschiede zwischen diesen Eigenschaften, die jeweils ihre eigenen Vor- und Nachteile haben.
Bereich.Wert
Die Eigenschaft .Wert
ist die Standardeigenschaft der Funktion Reichweite
. Wenn Sie also nach der Funktion keine Eigenschaft einfügen, wird standardmäßig die Eigenschaft verwendet .Wert
angewandt.
Zusamenfassend: Bereich("A1").Wert = Bereich("B1").Wert
ist das gleiche wie Bereich("A1") = Bereich("B1")
.
Benutzen Bereich.Wert
Sie können im Allgemeinen den ursprünglichen Wert aus einer Zelle abrufen. Wenn eine Zelle formatiert ist als Währungen
es erfolgt eine Abrundung. Dies liegt am Datentyp Währungen
hat einen Bereich von -922.337.203.685.477,5808 bis 922.337.203.685.477,5807. Wie Sie sehen, hat dieser Datentyp eine Genauigkeit von 4 Dezimalstellen.
Angenommen: In Zelle A1 haben wir den Wert 1,23456789 mit dem Zahlenformat „Währung“. Wenn wir mit Bereich.Wert
Wenn Sie den ursprünglichen Wert aus der entsprechenden Zelle abrufen, wird dieser in einen Währungswert umgewandelt. Der ursprüngliche Wert von 1,23456789 wird auf 1,2346 gerundet. Wenn wir damit arbeiten, kann es zu Rundungsfehlern kommen.
Sub Value() Dim varCurrency As Currency varCurrency = Range("A1").Value Debug.Print "A1: " & Range("A1").Value Debug.Print "Double precesion: " & CDbl(Range("A1" ).Value) varCurrency = CCur(varCurrency) Debug.Print "Currency: " & varCurrency Range("B1").Value = varCurrency Debug.Print "B1: " & Range("B1").Value End Sub
Der obige Code liefert das folgende Ergebnis:
A1: 123,4568 Doppelte Genauigkeit: 123,4568 Währung: 123,4568 B1: 123,46
Wie Sie sehen, wird der ursprüngliche Wert bei Verwendung von Range.Value gerundet.
Bereich.Text
Im Gegensatz zu Range.Value gibt Range.Text unabhängig von der Zellformatierung den genauen Textwert einer Zelle zurück. Das heißt, wenn Sie Range.Text verwenden, um den Wert aus Zelle A1 abzurufen, erhalten Sie den ursprünglichen unveränderten Wert „1,23456789“ ohne Rundung.
Sub Text() Dim cellText As String cellText = Range("A1").Text Debug.Print "A1 Text: " & cellText End Sub
Der obige VBA-Code liefert das folgende Ergebnis:
A1-Text: 1.23456789
Die Verwendung von Range.Text ist nützlich, wenn Sie den genauen Textwert einer Zelle ohne Formatierungs- oder Konvertierungsvorgänge benötigen.
Bereich.Wert2
Range.Value2 ähnelt Range.Value, weist jedoch einen wichtigen Unterschied auf. Range.Value2 befasst sich nicht mit der Formatierung einer Zelle und gibt immer den rohen numerischen Wert einer Zelle ohne Rundung zurück. Es ist schneller als Range.Value und wird empfohlen, wenn Ihre Präzision wichtig ist und Sie keine Formatierungsänderungen sehen möchten.
Sub Value2() Dim value2 As Variant value2 = Range("A1").Value2 Debug.Print "A1 Value2: " & value2 End Sub
Der obige VBA-Code liefert das folgende Ergebnis:
A1 Wert2: 1,23456789
Range.Value2 ist eine gute Wahl, wenn Sie Daten manipulieren und Präzision wichtig ist.
Abschluss
Die Wahl zwischen .Value, .Value2 und .Text in VBA für Excel hängt von Ihren spezifischen Anforderungen ab. Wenn Sie den rohen numerischen Wert ohne Formatierung oder Rundung wünschen, ist Range.Value2 die beste Option. Wenn Sie den genauen Textwert ohne Formatierung benötigen, verwenden Sie Range.Text. Seien Sie jedoch vorsichtig mit Range.Value, da es Zellformatierungen und Rundungen enthalten kann.
Wenn Sie diese Eigenschaften verstehen und wissen, wann Sie sie anwenden müssen, können Sie Excel-Daten in Ihren VBA-Projekten effektiver verarbeiten. Wählen Sie die Funktion, die am besten zu Ihrer spezifischen Situation und Ihren Anforderungen passt.
Teilen mit:
- Klick, um über Twitter zu teilen (Wird in neuem Fenster geöffnet)
- Klick, um auf Facebook zu teilen (Wird in neuem Fenster geöffnet)
- Mehr
- Klicken, um einem Freund einen Link per E-Mail zu senden (Wird in neuem Fenster geöffnet)
- Klick, um auf LinkedIn zu teilen (Wird in neuem Fenster geöffnet)
- Klick, um auf Reddit zu teilen (Wird in neuem Fenster geöffnet)
- Klick, um auf Tumblr zu teilen (Wird in neuem Fenster geöffnet)
- Klicken, um auf Telegram zu teilen (Wird in neuem Fenster geöffnet)
- Klicken, um auf WhatsApp zu teilen (Wird in neuem Fenster geöffnet)