Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?
Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?
Hallo,
ich benutze Excel 2016 unter WIN10. Wenn ich in einem Makro in einer Zelle A1 den Wert Trim(Str(1)) als Standard, also ohne bestimmtes Zahlenformat, ablege und hinterher mit
If Range("A1").Value = Trim(Str(1)) Then
danach abfrage, ist das Ergebnis false. Frage ich hingegen mit
If Range("A1").Value = "1" Then
ab, ist das Ergebnis true. Obwohl Trim(Str(1)) und "1" dasselbe ist. Aber doch wohl nur scheinbar dasselbe.
Was ist der tiefere Sinn dieser Unterscheidung? Warum wird bei der Value-Abfrage zwischen dem Literal und dem Funktionsergebnis unterschieden? Weiß das jemand?
Danke und Grüße
Euer Nachbar
ich benutze Excel 2016 unter WIN10. Wenn ich in einem Makro in einer Zelle A1 den Wert Trim(Str(1)) als Standard, also ohne bestimmtes Zahlenformat, ablege und hinterher mit
If Range("A1").Value = Trim(Str(1)) Then
danach abfrage, ist das Ergebnis false. Frage ich hingegen mit
If Range("A1").Value = "1" Then
ab, ist das Ergebnis true. Obwohl Trim(Str(1)) und "1" dasselbe ist. Aber doch wohl nur scheinbar dasselbe.
Was ist der tiefere Sinn dieser Unterscheidung? Warum wird bei der Value-Abfrage zwischen dem Literal und dem Funktionsergebnis unterschieden? Weiß das jemand?
Danke und Grüße
Euer Nachbar
-
- Legende
- Beiträge: 8912
- Registriert: 20.07.2014, 12:25
- Hat sich bedankt: 51 Mal
- Danke erhalten: 38 Mal
Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?
Möglicherweise findet bei den Excel-Makros eine interne Umkonvertierung des Datentyps statt, da könnte Trim(Str(1)) eine Zeichenkette und "1" eine Zahl liefern.
Aber ich kenne mich mit den Unterschieden der Makros bei Exel-Versionen nicht aus.
Aber ich kenne mich mit den Unterschieden der Makros bei Exel-Versionen nicht aus.
Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?
Das hatte ich ursprünglich auch vermutet. Aber tatsächlich liefert
If Trim(Str(1)) = "1" Then
das Ergebnis true. Daran liegt es also nicht. Aber irgendwas in der Richtung scheint es zu sein.
Am sure it's not a bug, it's a feature.
Bloß was ist hier der tiefere Zweck?
If Trim(Str(1)) = "1" Then
das Ergebnis true. Daran liegt es also nicht. Aber irgendwas in der Richtung scheint es zu sein.
Am sure it's not a bug, it's a feature.

Bloß was ist hier der tiefere Zweck?
-
- Legende
- Beiträge: 8912
- Registriert: 20.07.2014, 12:25
- Hat sich bedankt: 51 Mal
- Danke erhalten: 38 Mal
Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?
Ich habe nie behauptet dass der Vergleich so nicht klappt.Nachbar hat geschrieben: 08.11.2017, 13:13Aber tatsächlich liefert
If Trim(Str(1)) = "1" Then
das Ergebnis true.
Ich behauptete, dass es implizite Typkonvertierugen geben könnte.
Basic hat eine grausame Syntax.
Weil Microsoft Excel-Programmierende für Dummköpfe hält oder das irgendein seit Excel-Jahrzehnten mitgeschlepptes Feature ist.Nachbar hat geschrieben: 08.11.2017, 13:13Am sure it's not a bug, it's a feature.
Bloß was ist hier der tiefere Zweck?
Irgendein VBasic-Krampf wird es schon sein.
Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?
OK, danke, GwenDragon!
Schönen Abend!
Schönen Abend!
-
- Legende
- Beiträge: 8912
- Registriert: 20.07.2014, 12:25
- Hat sich bedankt: 51 Mal
- Danke erhalten: 38 Mal
Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?
Ich glaube, dass deine Frage auch sehr Excel-intern- bzw. makro-spezifisch ist, besser in ein Excel-Programmierforum passt. Ist nicht bös’ gemeint, aber nicht alle hier haben so viel Hintergrundwissen.
Oder ich eben zu unwissend bei den MS-Excel-Makros, weil ich viel LibreOffice mache und auch anderes programmiere.
Schönen Abend noch.
Oder ich eben zu unwissend bei den MS-Excel-Makros, weil ich viel LibreOffice mache und auch anderes programmiere.
Schönen Abend noch.