VBA Zahl wird einmal mit und einmal ohne Anführungszeichen zurückgegeben
Hallo,
schon wieder eine VBA frage :)
Hab ein Problem mit dem Zahlenformat. Bei einer Variablen wird die Zahl in Anführungszeichen zurückgegeben, bei der anderen ohne Anführungszeichen.
Sub Testsub1()
Test1 = Tabelle1.Cells(1326, 1)
'Hier kommt "101" zurück
Test2 = Tabelle2.Cells(34, 3)
'Hier kommt 101 zurück
End Sub
Beide Zellen ("A1326" und "C34") sind als Text formatiert.
Bei "A1326" ist dieses kleine grüne Dreieck in der linken oberen Ecke. Da kann ich den Text in eine Zahl umwandeln und dann komm auch bei beiden Zellen 101 ohne Anführungszeichen zurück. Das ist für mich aber keine Option, da das ein Export aus einem anderen Programm ist und deshalb jedes mal wieder neu Eingefügt wird.
Folglich muss die Zelle "C34" irgendiwe verändert werden, dass "101" mit Anführungszeichen zurück kommt. Oder kann ich das auch im Code hinbekommen?
Vielen Dank im Voraus für eure Hilfe!
Gruß
dandi46


3 Antworten
Hallo dandi46,
Zuerst einmal: Benutze bitte nur im absoluten Notfall Variant. Das ist typsicherer, compilerfreundlicher und schlichtweg einfacher zu handhaben:
Option Excplicit
Sub Testsub1()
Dim Test1$, Test2$
Test1 = Tabelle1.Cells(1326, 1).Text
Test2 = Tabelle2.Cells(34, 3).Text
End Sub
".Test" gibt evtl. nicht den Wert als String, sondern den gesamten Zellinhalt(mit Formatierung) zurück. Bei Bedarf einfach weglassen...
Grüsse
Higlav
als zahl dürfen keine Zeichen verwendet werden nur zahlen (integer) du musst text benutzen(string)
Der Befehl Test1 = Tabelle1.Cells(1326, 1)
gibt eigentlich einen Range zurück. Ich würde den Wert mit .Value
oder .Value2
abfangen. Eine Konvertierung kannst du mit CInt
(wenn ich mich recht erinnere) vornehmen. Anführungszeichen kannst du mit Replace
durch leere Zeichenketten ersetzen.
Du kannst aber auch vor dem Import die Spalten schon als Zahl formatieren.
Mit .value hats nicht geklappt, nur mit .text aber danke für deine Hilfe :) Ich vergesse .value nämlich wirklich oft!
Value brauchst du auch nicht da das der Defaultwert ist. Du kannst ja in eine Variable keinen Bereich schreiben. sondern nur den Inhalt eines Bereiches. Wenn ich sage "Ich ess noch einen Teller", esse ich ja auch den Inhalt und nicht das Geschirr. So schlau ist Excel dann schon. ;-)
Mit .Text hats geklappt! Vielen Dank! (schon wieder) ;)