Seite 1 von 1

Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?

Verfasst: 08.11.2017, 11:16
von Nachbar
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

Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?

Verfasst: 08.11.2017, 11:24
von GwenDragon
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.

Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?

Verfasst: 08.11.2017, 13:13
von Nachbar
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?

Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?

Verfasst: 08.11.2017, 13:31
von GwenDragon
Nachbar hat geschrieben: 08.11.2017, 13:13Aber tatsächlich liefert
If Trim(Str(1)) = "1" Then
das Ergebnis true.
Ich habe nie behauptet dass der Vergleich so nicht klappt.
Ich behauptete, dass es implizite Typkonvertierugen geben könnte.
Basic hat eine grausame Syntax.
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?
Weil Microsoft Excel-Programmierende für Dummköpfe hält oder das irgendein seit Excel-Jahrzehnten mitgeschlepptes Feature ist.
Irgendein VBasic-Krampf wird es schon sein.

Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?

Verfasst: 08.11.2017, 17:47
von Nachbar
OK, danke, GwenDragon!
Schönen Abend!

Re: Weshalb wird in Excel Trim(Str(1)) nicht als solches erkannt?

Verfasst: 08.11.2017, 18:01
von GwenDragon
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.