Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
952to956
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
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

SelectionChange - Change - Reihenfolge?

SelectionChange - Change - Reihenfolge?
22.02.2008 13:41:00
oxe
Hallo zusammen!
Habe mal wieder ein blödes Problem:
Wenn in Spalte 5 des Tabellenblattes etwas geändert wird, dann wir nach den Werten in dieser Tabelle sortiert. Das funktioniert auch ohne Probleme über einen Worksheet_Change-Aufruf. Jetzt kann die Tabelle die dann sortiert wird aber sehr lang werden und damit die gerade bearbeitet Zeile nicht aus dem Blickfeld verschwindet (was wohl zu Verwirrungen führt) soll die Zelle die verändert wurde nach dem sortieren wieder ausgewählt sein. Das wollte ich über die Worksheet_SelectionChange-Methode machen indem ich jedes mal wenn man eine andere Zelle wählt in eine Merker-Variable die zuletzt gewählte Zelle schreibe und dann am Anfang der sortieren-Funktion in dieser Zeile am Ende eine "1" setze, diese mitsortiere, die Zelle in Spalte 5 und der Zeile mit der "1" am Ende auswählen lasse und dann die "1" wieder entferne.
Das Problem ist jetzt, dass, obwohl im Tabellenblatt (also da wo man auch das CommandButton1_Click einträgt) zuerst die SelectionChange-Funktion und dann die Change-Funktion steht zuerst die Change-Funktion aufgerufen wird und diese dann einen veralteten "vorige-Zelle"-Wert erhält, womit das Danze natürlich nicht funktioniert.
Was mache ich da? Kann ich da eine Priorität festlegen?
Zur Verdeutlichung noch ein paar Code-Auszüge:


Im Tabellenblatt:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If aktuell = "" Then aktuell = "0000"
merker = Format(Right(aktuell, Len(aktuell) - 3), "0")
aktuell = Target.Address
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then
Call sortieren(merker)
End If
End Sub


Im Modul1:


Global aktuell As String
Global merker As Integer

und:


Sub sortieren(merker)
Application.EnableEvents = False
Application.ScreenUpdating = False
Dim wks_00_LOP As Worksheet
Set wks_00_LOP = ThisWorkbook.Worksheets("00_LOP")
Dim i As Integer
Dim merkerFund As Integer
wks_00_LOP.Unprotect (ThisWorkbook.Worksheets("Passwort").Cells(1, 1).Value)
wks_00_LOP.Cells(merker, 11).Value = "1"
Dim anzahlZeilen As Integer
anzahlZeilen = wks_00_LOP.Cells(wks_00_LOP.Rows.Count, 1).End(xlUp).Row
wks_00_LOP.Range("B7:K" & anzahlZeilen).Sort Key1:=wks_00_LOP.Range("D7"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
For i = 7 To anzahlZeilen
If wks_00_LOP.Cells(i, 11).Value = "1" Then
merkerFund = i
wks_00_LOP.Cells(i, 11).Value = ""
End If
Next i
wks_00_LOP.Cells(merkerFund, 5).Select
wks_00_LOP.Protect (ThisWorkbook.Worksheets("Passwort").Cells(1, 1).Value)
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SelectionChange - Change - Reihenfolge?
22.02.2008 14:44:54
fcs
Hallo oxe,
passe die Change-Prozedur wie folgt an, dann kannst du die Selection-Prozedur fortschmeissen. Die Deklaration der Gloabal Variablen ist dann auch nicht mehr erforderlich.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 5 Then
Call sortieren(Target.row)
End If
End Sub


AW: SelectionChange - Change - Reihenfolge?
22.02.2008 14:55:00
oxe
Genial, vielen Dank, es funktioniert!!
Da wollte ichs komplizierter machen als nötig, echt feine Lösung so, danke!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige