Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

2d Array sortieren.

2d Array sortieren.
12.03.2024 15:15:09
Frank
Hallo an Alle,

ich habe diesen Code zum Sortieren eines 2d Arrays gefunden.

https://www.online-excel.de/excel/singsel_vba.php?f=97

Ich versuche das nun vergeblich beim "mir" einzubinden. Wenn ich genau dieses Beispiel in meiner Sub eingebe, dann erhalte ich die Fehlermeldung. Wenn ich es in einem anderen Modul so wie im Link dargestellt ausführe, dann funktioniert das Sortieren. Kann mir jemand sagen was ich falsch mache?

Userbild

Vielen Dank und viele Grüße
Frank

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: 2d Array sortieren.
12.03.2024 15:48:44
peter
Hallo

Der 2.Parameter sollt wohl VntArray sein.

Peter
2d Array sortieren - Antwort an Alle
12.03.2024 18:15:42
Frank
Mein Array FlatLevel_ges ist ein Global definiertes Array. Ich habe jetzt eben innerhalb der Sub das globale Array FlatLevel_ges nach FlatLevel2 "umgeschaufelt" und nun meckert VBA nicht mehr. Wieso funktioniert dieser Aufruf nicht mit einem global definierten Array?

Userbild
AW: 2d Array sortieren.
12.03.2024 22:27:50
Uduuh
Hallo,
die Prozedur hab ich seit Erscheinen schon in etliche Projekte eingebaut. Irgendwas machst du falsch. Ohne deine Datei kann man das aber schlecht analysieren.

Gruß aus'm Pott
Udo
Anzeige
AW: 2d Array sortieren - Antwort an Alle
12.03.2024 18:28:02
schauan
Hallöchen,

1)
Den Fehler im 1. Code hast Du selbst gefunden.
statt
Call prcSort(vntSortArray, vntArray())
stand bei Dir
Call prcSort(vntSortArray, vntSortArray())

2)
auf Deinem Bild sieht man nicht, welches Array du global dimensionieren willst.
Public vntArray(1 To 10000, 1 To 30) As Variant
läuft im Beispielcode problemlos.
AW: 2d Array sortieren - Antwort an Alle
12.03.2024 19:24:01
Frank
Guten Abend schauan,

also nochmal: Ich definiere zwei Arrays. Eins Global und eins lokal in der Sub. Wenn ich nun den Sortieralgorithmus prcSort nutzen möchte, dann
funktioniert diese Variante Call prcSort(vntSortArray, Array_lokal())
und diese funktioniert nicht Call prcSort(vntSortArray, Array_Global())

Wenn ich aber in der Sub das Array_lokal mit den Daten von Array_Global fülle, dann kann ich die Prozedur von Max Kaffl ohne Fehlermeldung aufrufen, aber ich weiß nicht warum die eine Variante funktioniert und die andere nicht.

Viele Grüße
Frank
Anzeige
AW: 2d Array sortieren - Antwort an Alle
12.03.2024 19:47:04
daniel
schwer zu sagen, vielleicht liegts auch einfach an den ()
bei Parameterübergabe byRef ist VBA manchmal etwas zickig, was die Datenübernahme angeht, da muss alles genau passen.
wenn du eine globale Variable bearbeiten willst, wäre eigentlich keine Parameterübergabe notwendig.
die Globale Variable kannst du ja in allen Makros verwenden. Allerdings wäre dann dein Sortiermakro auf diese Variable festgelegt.
AW: 2d Array sortieren - Antwort an Alle
13.03.2024 09:30:26
schauan
Hallo Frank,

wie Daniel es auch geschrieben hat - wenn Du die globalen Variable in der Funktion nutzen willst, dann musst Du das Sub und die Funktion so umbauen, dass Du sie nicht übergibst. also beim Call und bei Function(...) raus nehmen.

Anzeige
AW: 2d Array sortieren.
12.03.2024 16:13:48
Frank
Hallo Peter,

vielen Dank. Ich habe da schon so viel hin- und her kopiert... Jedenfalls wenn ich nun mein Array einsetze, dann erscheint diese Meldung. Also im Prinzip die selbe Meldung wie vorhin. Das Array ist befüllt.

Userbild
AW: 2d Array sortieren.
12.03.2024 17:34:43
Yal
Hallo Frank,

die Schreibweise ist mMn falsch.
Entweder
prcSort vntSortArray, vntSortArray

oder
Call prcSort (vntSortArray, vntSortArray)
aber "Call" ist etwa veraltet.

Aber der erste Parameter und der zweite müssen 2 verschiedenen Arrays sein.

VG
Yal
Anzeige
AW: 2d Array sortieren.
12.03.2024 17:43:50
daniel
warum ist CALL veraltet?
musste man früher CALL zwingend verwenden und es ist später weggefallen?
es gibt einige hier, die immer CALL verwenden wenn sie einen Befehl aufrufen.

ich habe mir angewöhnt es so zu verwenden dass ich CALL verwende um selbst geschriebene Makros aufzurufen und ohne CALL die originären VBA-Funktionen.
Somit habe ich auch beim schnellen drüberschhauen einen Hinweis, dass hier jetzt ein selbstgeschriebenes Makro am start ist.
Call ist nicht veraltet
12.03.2024 18:14:58
Yal
ok, erwischt. "Call" ist nicht per se veraltet, aber die Möglichkeit, eine Prozedur-Aufruf ohne "Call" aufzurufen, kam erst in einer jüngeren Version von VBA. Inzwischen kommt es selten vor. Auch alle aktuelle Microsoft-Beispiele werden ohne Call gezeigt.

Die wesentliche Unterschied ist, dass eine prozedure mit Call Klammer um die Parameter haben muss und ohne nicht. Es sei denn die Prozedure ist eine Funktion, und die Rückgabewert wird eine Variable oder einen With zugeordnet. Dann doch Klammer. Keine Ahnung was Bill sich dabei gedacht hat.

Die eigene Prozedure benenne ich auf Deutsch (ich programmiere selten international), idealerweise Objekt_aktion: Datei_öffnen, Ergebnis_suchen, Blatt_auswählenOderHerstellen. Dann ist das Selbstgeschriebenen schnell identifizierbar.

VG
Yal
Anzeige
AW: 2d Array sortieren.
12.03.2024 16:23:23
daniel
kannst du die Datei hochladen?
ist hier wie beim Arzt. Diagnose ohne Patient ist schwierig.
AW: 2d Array sortieren.
12.03.2024 18:01:37
Frank
Hallo Daniel,

mache ich in etwa einer Stunde.

Vielen Dank.
AW: 2d Array sortieren.
12.03.2024 16:41:31
peter
Hallo

PrcSort erwartet als 2. Parameter ein 2-dimensionales Array (in deinem Auschnitt gibt es nur vntArray). Ich sehe nirgends eine Defintion von FlatLevel_ges!

Peter
AW: 2d Array sortieren.
12.03.2024 18:01:02
Frank
Hallo Peter,

das Array FlatLevel_ges ist unten im Lokal Fenster zu sehen und es ist mMn ein 2 dimensionales Array.

Viele Grüße
Frank

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige