PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : VBA und Bubble Sort?


Fritzchen
2003-09-22, 19:06:40
Hallo,
ich habe seit kurzem Informatik in der Schule und soll nun bis morgen im Visual Basic von Excel einfach eine normale Spalte sortieren, also ein Makro schreiben, dass diesee Spalte sortiert.
Allerdings hab ich keine Ahnung wie das geht, der Lehrer hat einfach nur gesagt "macht mal, am besten mit BUBBLE SORT..."

Nunja, Google hat mir zwar einiges ausgespruckt, zB. http://www.kurt-aus-kienitz.de/knowhow/access/Beispiele/Module/ArraySortieren.html#BubbleSort

allerdings steht da was von Arrays, und ich hab keine Ahnung was das ist und wie das geht.

Kann mir da jemand helfen und diesen Code der da steht lauffähig machen bzw. mir zeigen, wie ich ein solches Array damit sortiere?

Vielen Dank!! :)

Marcel
2003-09-22, 23:51:01
Ein Array ist einfach nur eine durchnumerierte Liste von Variablen.
Ein eindimensionales Array ist nur in einer Richtung ausgedehnt (ach nee...), wie eine Spalte oder eine Zeile einer Excel-Tabelle. Ein zweidimensionales Array dementsprechend in zwei Richtungen, wie eine ganze Excel-Tabelle. Wichtiger Unterschied: Normale Arrays sind in ihrer Ausdehnung begrenzt (bei den meisten Programmiersprachen), während Du Dich bei Excel totscrollen kannst. Ein Schachbrett ist ein gutes Beispiel für ein zweidimensionales Array.
Dem tragen die Funktionen UBound und LBound Rechnung - sie ermitteln die Nummer des ersten (LBound) und des letzten (UBound) Feldes des Arrays.
Du kannst zwei Dinge tun:
a) füllst Du einfach ein Array mit den Werten der zu sortierenden Spalte und sortierst die wie im Beispiel
- oder -
b) Du sortierst direkt die Spalte, behandelst sie also etwa wie ein Array (die Funktionen UBound und LBound kannste dann wohl vergessen, denke ich (bin kein VBA-Programmierer, hab Stolz), da muss dann die Nummer des letzten bzw. des ersten Feldes hin).

Viel Spaß.

Fox
2003-09-27, 18:27:19
ist das sortierprinzip von bubblesort denn verstanden. gibt ja noch andere wie quicksort usw.