/
//From/: gooly <gooly@gmx.at <mailto:gooly%40gmx.at>>
Hallo,
Ich habe eine Zelle (Analyse:B4), der ich, wenn ich sie ändere, einen anderen Spaltenbuchstaben (zB 'n') einer anderen Tabelle (Tests) eintrage. Jetzt möchte ich gerne ein Makro schreiben, dass die 'andere Tabelle' insgesamt nach dieser Spalte sortiert wird. Leider finde ich nicht (mehr?):
a) die Option, Maus- und Tasten-'Dings' als Makro aufzuzeichnen - das würde alles etwas leichter machen und
Makros aufzeichnen ist meistens keine saubere Lösung.
b) wie ich dann dieses Makro einer Veränderung einer bestimmten (dieser) Zelle zuordne?
Das geht nur über eine Funktion.
Ich meinte b) noch gerade gefunden zu haben (Menu => ..(?).. => Änderungen => Zelle) - aber jetzt ist der Weg weg? Unter Extras=> Anpassen .. sehe ich nur entweder einzelnen Tasten- (F2,F3,..) oder Gesamtdokument-Änderungen (Sicher, Öffnen, ..?
LG, Gooly
Hier eine Lösung von mir:
Kopiere diesen Code in ein neues Modul,
und passe die Platzhalter "TabellenName" und " nColumn, nRow, nColumn1, nRow1 " deinen Bedürfnissen an.
Function sortByCoulumn (ByVal nSortCoulumn AS Integer, ByVal bAscending As Boolean)
Dim oSheet1 As Object
' "nSortCoulumn" ist die Spaltennummer, nach der Sortiert werden sooll. Spalte A = 0
oSheet1 = ThisComponent.Sheets.GetByName("TabellenName")
'" nColumn, nRow, nColumn1, nRow1 " Mußt du deinen bedürftnissen anpassen (Zu Sortierender Bereich)
oSortRange = oSheet1.getCellRangeByPosition(nColumn, nRow, nColumn1, nRow1)
'nColumn, nRow, nColumn1, nRow1 fangen bei 0! an zu zählen. (0 ,0 ,2 , 4)=(A1:C5)
aSortFields(0).Field = nSortCoulumn - oColumn
aSortFields(0).SortAscending = bAscending '1 entspricht "True" für aufsteigend und 0 entspricht "False" für absteigend
aSortDesc(0).Name = "SortFields"
aSortDesc(0).Value = aSortFields()
oSortRange.Sort(aSortDesc())
End Function
Anschließend Schreibst du Folgende Funktion in eine Zeile Deiner Tabelle:
=SORTBYCOULUMN("Deine Zelle";1) ' "Deine Zelle" ist z.B. D7 hier muss die Spaltennummer (Zahl von 0 bis ...),
nach der du Sortieren möchtest Stehen. Die 1 steht für Aufsteigend. wenn du 0 schreibst, wird absteigend sortiert.
Sobald der Wert in "Deine Zelle" verändert wird, wird die entsprechende Tabelle Sortiert.
LG Frieder
PS: habe deinen Beitrag erst jetzt gelesen, deshalb antworte ich erst jetzt.