Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1152to1156
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

Array sortieren; Problem mit Function Aufruf

Array sortieren; Problem mit Function Aufruf
Andreas
Hallo Herber Fans,
ich habe ein kleines Problem mit dem Sortieren und Duplikate entfernen in Arrays. Ich habe viel im Forum gelesen und dort auch gute Routinen gefunden, die ich einsetze.
In einer Routine, in der Duplikate entfernt und das Array sortiert wird, muß ich das Array, welches aufgearbeitet werden soll immer an ein Array zuweisen, welches ich global (Public) deklariert habe. (arrDuplicateRemoveAndSort).
Also im aufrufenden Code, arrTEST soll bearbeitet werden: arrDuplicateRemoveAndSort = arrTEST
Dann erkennt der sortierende Code „sein“ arrDuplicateRemoveAndSort, sortiert und im aufrufenden Code lese ich dann das Ergebnis über „For i = 0 To UBound(arrDuplicateRemoveAndSort)“ aus.
Ich würde gern die globale Deklaration von „arrDuplicateRemoveAndSort“ sparen.
Also: arrTEST = ArrySortTest(arrTEST)
D.h. Ich muß vermutlich über eine Function arbeiten. Das habe ich versucht und bin grandios gescheitert.
Im Modul „modCALLING“ erfolgt das Füllen des Testarrays, welches durch eine Prozedur (od. Function?) im Modul „modSORTARRAY“ sortiert werden soll.
https://www.herber.de/bbs/user/69250.xls
Ich würde mich freuen, wenn jemand mal einen Blick darauf werfen und mir den Hinweis geben kann, woran es hakt. Ich werde währenddessen noch mehr zum Thema „Function“ lesen.
Vielen Dank und Grüße, Andreas Hanisch

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Array sortieren; Problem mit Function Aufruf
26.04.2010 19:44:10
ransi
HAllo Andreas
Sieht doch schon gut aus.
Du musst deiner Funktion allerdings auch irgendwo etwas zum ausgeben zuweisen.
Versuchs mal so:
With objArrLst
.Sort
ArrySortTest = .ToArray
End With
ransi
AW: Array sortieren; Problem mit Function Aufruf
26.04.2010 20:12:53
Andreas
WOW!
Hi Ransi,
Hammer! Vielen Dank für Deine beiden Posts. So läuft der Code nun. Und Dein Link zum Thema ist sehr wertvoll. Macht einen sehr ausführlichen und profunden Eindruck. Ich werde jetzt noch weiterlesen und mir Deine Beispieldatei ansehen.
Nochmals vielen Dank für Deine Mühe. Hat mir echt den Abend sehr aufgewertet. Ich kann jetzt weitermachen und noch viel lernen!
Habe nen guten Abend, Grüße aus Berlin,
Andreas Hanisch
Anzeige
AW: Array sortieren; Problem mit Function Aufruf
26.04.2010 20:18:01
fcs
Hallo Andreas,
du muss in der Function das Ergebnis dem Funktionsnamen zuweisen, damit dieses in der aufrufenden Prozedur der Variablen zugewiesen wird.
Außerdem ist ggf. die Übergabe der Variablen als ByVal sinnvoll, damit der Wert der Variablen in der Hauptprozedur nicht überschrieben wird.
Gruß
Franz
' ###   T E S T  -  P R O Z E D U R   ###
Sub ArrayTest()
Dim arrTEST As Variant
Dim arrNeu As Variant
Dim i As Long
arrTEST = Array(1, 5, 6, 6, 7, 3, 9, 9, 4, 2, 2)
arrNeu = ArraySortTest(arrTEST) 'arrTEST bleibt erhalten
'arrTEST = ArraySortTest(arrTEST) 'arrTEST wird durch Ergebnis-Array ersetzt
'  GoTo Weiter01
For i = LBound(arrNeu) To UBound(arrNeu)
Debug.Print arrNeu(i)
Next i
Weiter01:
For i = LBound(arrTEST) To UBound(arrTEST)
Debug.Print arrTEST(i)
Next i
End Sub
'###   F U N C T I O N   ###
Public Function ArraySortTest(arrDuplicateRemoveAndSort) As Variant
Dim objArrLst As Object, L As Long
Set objArrLst = CreateObject("System.collections.arraylist")
For L = LBound(arrDuplicateRemoveAndSort) To UBound(arrDuplicateRemoveAndSort)
If objArrLst.Contains(arrDuplicateRemoveAndSort(L)) = False Then
objArrLst.Add arrDuplicateRemoveAndSort(L)
End If
Next
With objArrLst
.Sort
ArraySortTest = .ToArray
End With
Set objArrLst = Nothing
End Function

Anzeige
AW: Array sortieren; Problem mit Function Aufruf
27.04.2010 09:07:00
Andreas
Hallo Franz,
vielen Dank für Deinen Hinweis bezüglich der Lösung, als auch der "ByVal" Übergabe. Ich habe das schon des Öfteren gesehen, mich aber damit noch nicht beschäftigt. Ich habe ein wenig gesucht und eine gute Seite gefunden, auf der es auch ein Kapitel zu "ByVal" und "ByRef" gibt.
http://de.wikibooks.org/wiki/VBA_in_Excel_-_Grundlagen
Es ist sehr fundiert, so daß mir etwas dämmerte... Wer ist der Autor? Hans W. Herber!
Ich werde durch Deinen Hinweis heute noch eine Menge lesen. Habe einen guten Tag!
Grüße aus dem derzeit sonnigen Berlin, Andreas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige