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

Ich hab ne Frage zum Datentyp String

Forumthread: Ich hab ne Frage zum Datentyp String

Ich hab ne Frage zum Datentyp String
31.07.2024 09:32:48
Oberschlumpf
Guten Morgen,

ich verstehe nicht, wieso eine als String deklarierte einfache Variable ein anderer String ist (zu sein scheint?) als eine als String deklarierte Funktion.

Hintergrund:
Ich hab eine Bsp-Datentabelle mit den Spalten Nachname, Vorname, Position.
Diese Tabelle soll nach einer benutzerdefinierten Reihenfolge, hinterlegt im Blatt "Reihenfolge", sortiert werden.

Klick auf den oberen Commandbutton, Sortierreihenfolge in Stringvariable lstrString gesammelt = Codeabbruch, Fehler 13, Typen unverträglich

Klick auf den unteren Commandbutton, Sortierreihenfolge in String-Funktion fcString gesammelt = läuft fehlerfrei durch!

Aber wieso????
Also, wieso funktioniert das Ganze nicht mit dem Code für den oberen Button?

Ich bedanke mich schon mal für eure Hilfe.

Hier die Datei:
https://www.herber.de/bbs/user/171366.xlsm

Ciao
Thorsten
Anzeige

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 09:55:33
Herbert Grom
Hi Thorsten,

ich habe mal die Sortfunktion des oberen Codes auf diese Zeile gekürzt, dann hat es geklappt:

.Sort.SortFields.Add2 Key:=Range("C2:C" & .Cells(.Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending



Servus
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 10:40:46
Oberschlumpf
Moin Herbert,

ja, mit deiner Code-Korrektur kommt es nicht zum Fehler
nein, mit deiner Code-Korrektur wird aber nicht nach meiner (Wunsch)benutzerdefinierten Reihenfolge, sondern nur von A-Z sortiert ;-)

Trotzdem danke.

Ciao
Thorsten
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 12:13:05
Herbert Grom
Hi Thorsten,

damit hat es bei mir jetzt funktioniert. Zusammengebastelt aus den div. Vorschlägen:

Private Sub cmd1_Click()

Dim lloRow As Long, lstrSort As String

With Sheets("Reihenfolge")
For lloRow = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
lstrSort = lstrSort & .Range("A" & lloRow).Value & ","
Next
lstrSort = Left(lstrSort, Len(lstrSort) - 1)
End With

With ActiveSheet
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=Range("C2:C" & .Cells(.Rows.Count, 1).End(xlUp).Row), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:=CStr(lstrSort)
With ActiveSheet.Sort
.SetRange ActiveSheet.Range("A2:C" & ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub


Servus
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 17:55:25
Oberschlumpf
Hi Herbert

noch mal danke - aber - eine Sortierlösung nach Wunsch hab ich ja schon, ich wollt wissen, wieso String nicht gleich String ist.

Ciao
Thorsten
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 18:02:50
Herbert Grom
Hi Thorsten,

alles klar. Ich habe einfach nach einer Lösung auf Basis des oberen Codes gesucht, der eben die Sortierreihenfolge nach Vorlagen zusammensetzt.

Aber dass das mit dem String wahrscheinlich ein Bug ist, ist schon krass. Aber ja leider nicht der erste und auch nicht der einzige. Allerdings muss ich sagen, dass ich in meiner langjährigen Programmiererfahreng schon selbst vielfach erlebt habe, dass du beim Programm erstellen einfach nicht an alles denken kannst. Deshalb bin ich Bugs von MS gegenüber sehr viel nachsichtiger und toleranter geworden.

Servus
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 18:21:26
Oberschlumpf
Huhu :-)

alles gut!
So lange ich selbst merke, MS will mich "ärgern"^^ :-), finde ich fast immer auch einen Workaround.

Diesmal hab ich zwar trotzdem gefragt, aber nur, weil ich neugierig war...und danke an alle: Meine Frage wurde ja beantwortet.

Ciao
Thorsten
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 10:12:53
peter
Hallo

Ist schon ein komisches Verhalten (Bug) von Excel denn
CustomOrder:=CStr(lstrSort)
funktioniert.

Peter
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 10:24:37
Alwin Weisangler
das liegt daran, dass der String so übergeben werden muss:



"""Vorsitzender"", ""Fachkraft"", ""Lehrling"", ""Beistand"", ""Aushilfe"", ""Zeitarbeit""""

Setze Diesen statt der Variable ein, dann siehst du warum.

Gruß Uwe
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 10:49:01
Oberschlumpf
Hey Peter!

Stümmt! Wo du recht hast, kann ich dir nich widersprechen! :-)

Anstelle "meine Funktion" erst "basteln" zu müssen, hab ich so gar nicht an die Konvertierung CStr() gedacht.
Aber okay...hehe...einen String in einen String zu konvertieren, ist ja eigtl auch ganz schön weit hergeholt, oder?! :-)
...da ham wa es wohl wirklich mit nem Bug zu tun...

Danke schön = beim nächsten Mal ein bisschen an Tipperei weniger...

Ciao
Thorsten
Anzeige
AW: Ich hab ne Frage zum Datentyp String
02.08.2024 12:00:42
Oppawinni
Ich hab ja auch ne 2016er und bin doch auch einigermaßen überrascht, dass man da irgend einen Kunstgriff braucht.
Es genügt ja, wenn man z.B. CustomOrder:="" & lstrSort dahin setzt.
Das muss aber genau da passieren. Wenn du irgendwo vorher Cstr(lstrSort) machst hilft das auch nix. => Bug!
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 10:30:19
Alwin Weisangler
Da ist mir ein Tippfehler passiert: Das letzte "" ist zu viel.
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 10:32:31
Alwin Weisangler
so jetzt korrekt (ich brauch wohl ne Pause):


"""Vorsitzender"", ""Fachkraft"", ""Lehrling"", ""Beistand"", ""Aushilfe"", ""Zeitarbeit"""

AW: Ich hab ne Frage zum Datentyp String
31.07.2024 10:57:25
Oberschlumpf
Hi Uwe,

leider auch nicht:

Ich hab diesen Teilcode...
CStr(lstrSort), _

...geändert in (dein letzter Vorschlag)...


"""Vorsitzender"", ""Fachkraft"", ""Lehrling"", ""Beistand"", ""Aushilfe"", ""Zeitarbeit""", _


Hab den geänderten Code markiert, und ihn während Ablauf des Codes (mit F8=Schritt für Schritt) überwacht.
Angezeigt im Überwachungsfenster wird mir:

https://www.herber.de/bbs/user/171370.jpg (so erscheint die Ansicht größer, als wenn ich das Bild direkt in der Antwort anzeigen lassen würde)

Aber nach Durchlauf des Codes wird meine Datentabelle in Spalte C auch "nur" nach A-Z sortiert.

Auch an dich Danke für's Helfen.

Ciao
Thorsten
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 11:10:24
Alwin Weisangler
ich hab euch nur den Hintergrund gezeigt, wie CustomOrder der String, welcher übergeben werden muss aussehen soll.
So die Zeichenfolge dazu:


.Sort.SortFields.Add2 Key:=Range("C2:C" & .Cells(.Rows.Count, 1).End(xlUp).Row), _
SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"""Vorsitzender"", ""Fachkraft"", ""Lehrling"", ""Beistand"", ""Aushilfe"", ""Zeitarbeit""", _
DataOption:=xlSortNormal
.......

Das erste " und das letzte " bilden den Stringeinschluss "CStr" ab.
https://www.herber.de/bbs/user/171371.xlsm

Gruß Uwe
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 11:26:17
Oberschlumpf
Hi Uwe,

und das hier...
https://www.herber.de/bbs/user/171372.jpg
...kommt bei mir (2016er Version) als sortierte Tabelle raus nach Klick auf den oberen Button, bzw Ausführung deines Codes.
Es handelt sich um deine Datei/deinen geänderten Code.
Die Tabelle wird auch jetzt nur nach A-Z sortiert.

Deine Vermutung "Das erste " und das letzte " bilden den Stringeinschluss "CStr" ab. ", so interpretiere ich das, ist vllt doch nicht das Gleiche, als wenn ich wirklich CStr(var) verwende.

Aber alles gut. Ich kenne nun ja 2 Lösungen....und wir bleiben MS-Besieger! :-))

Ciao
Thorsten


Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 13:26:10
BoskoBiati2
Hi,

hier mal eine andere Möglichkeit, ohne String:

Private Sub cmd1_Click()

Dim loLetzte As Long
Dim loLetzte2 As Long
With Sheets("Reihenfolge")
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
Application.AddCustomList (.Range("A1:A" & loLetzte))
End With
With Sheets("Daten")
loLetzte2 = .Cells(Rows.Count, 3).End(xlUp).Row
.Range("A2:C" & loLetzte2).Sort _
key1:=Range("C2"), _
order1:=xlAscending, _
Header:=xlYes, _
OrderCustom:=Application.CustomListCount + 1
Application.DeleteCustomList Application.CustomListCount
End With
End Sub


Es gibt da noch einige Codes im Archiv:
https://www.herber.de/vbabasics/0022.html

Gruß

Edgar
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 17:53:27
Oberschlumpf
Moin Edgar,

und auch an dich danke für deine Idee, die auch funktioniert, aber.... :-)

Ich war/bin ja nicht auf der Suche danach, wie ich die Tabelle in "Daten" nach meiner Wunschreihenfolge in "Reihenfolge" sortieren kann, da ich ja schon (m)eine Function-Lösung im unteren Button habe, sondern ich hatte nicht verstanden, wieso es vorkommen kann, dass STRING nicht gleich STRING ist - und dazu die Antwort kann wohl sein, dass es sich hier um einen Bug handeln könnte - also: meine Frage ist beantwortet.

Ciao
Thorsten
Anzeige
AW: Ich hab ne Frage zum Datentyp String
31.07.2024 13:45:46
Alwin Weisangler
Ja, jetzt sehe ich es.
Da findet sich auch kein Hinweis dazu in der MS-Hilfe.

Gruß Uwe

;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige