Anzeige
Archiv - Navigation
1236to1240
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

Ereignis bei Listbox-Auswahl

Ereignis bei Listbox-Auswahl
dave
Hallo zusammen.
Ich habe eine Zelle mit einer Gültigkeitsliste. Je nach Auswahl werden in den Zeilen darunter verschiedene Werte aus verschiedenen Spalten einer anderen Tabelle geholt. Dabei können aber verschiedene Formate kommen, die nicht austauschbar sind, z. Bsp. Text, Zahlen, Datum.
Ich hatte die Idee, per Worksheet-Change-Makro die Formatierung der Quell-Zelle auf die Zielzellen zu übertragen. Dieses Ereignis wird aber in der Tabelle so oft ausgelöst, dass es zu Performance-Problemen führt.
Gibt es einen Weg, das der Code nur ausgeführt wird, wenn ich eine bestimmte Zelle "anfasse" und wenn ich mich im Rest der Tabelle bewege, das nix passiert?
Danke vorab.
Gruß
David
AW: Ereignis bei Listbox-Auswahl
31.10.2011 17:38:37
Hajo_Zi
Hsllo David,
Ja die Möglichkeit gibt es, damit ist die Frage beantwortet.
(benutze Target.Address)

AW: Ereignis bei Listbox-Auswahl
31.10.2011 17:42:09
dave
Das tue ich ja schon:
Private Sub Worksheet_Change3(ByVal Target As Excel.Range)
If Target.Address = "$K$3" Then
Dim SB As String
Dim Treffer
Dim Blatt As String
SB = Worksheets("Overview").Range("K3").Value
Blatt = Format(Worksheets("Overview").Range("D1"), "YYYY-MM")
Set Treffer = Worksheets("Listen").Range("A1:A26").Find(SB)
If Not Treffer Is Nothing Then
Worksheets("Overview").Range("K5:K1000").NumberFormat = Worksheets("Listen").Range(" _
B" & Treffer.Row).NumberFormat
Worksheets("Overview").Columns("K:K").AutoFit
End If
End If
End Sub
Wenn ich nun aber irgendeine andere Zelle ändere, werden in der Tabelle einige hundert Formeln neu berechnet. Jede einzelne Berechnung löst aber nun ein Change-Ereignis aus, so dass die Neu-Berechnung sehr lange dauert.
Wie mache ich es besser?
Gruß
David
Anzeige
AW: Ereignis bei Listbox-Auswahl
31.10.2011 17:42:30
dave
offen
AW: Ereignis bei Listbox-Auswahl
31.10.2011 17:45:40
Hajo_Zi
Hallo Dave,
das ist der Vorteil, wenn man seinen Code postest. Dann bekommt man auch eine Anwort auf seinen Code. Nur wenige schauen auf Deinen Rechner. Die Berechnung wird grundsätzlich ausgelöst bei Eingabe, das hat nichts mit Deinem Code zu tun.
Gruß Hajo
AW: Ereignis bei Listbox-Auswahl
31.10.2011 17:50:15
dave
Das beantwortet leider meine letzte Frage nicht.
Mir ging es auch nicht darum, meinen Code zu interpretieren, sondern ein Ereignis zu benennen, dass ich für meine Zwecke verwenden kann. Die dazu notwendigen Details hatte ich meiner Meinung nach genannt. Deine Antwort soll mich sicherlich zu einer genauerer Fragestellung "erziehen". Nun gut - jeder wie er will.
Gruß
David
Anzeige
AW: Ereignis bei Listbox-Auswahl
31.10.2011 17:53:37
Hajo_Zi
Hallo David,
Die Antwort auf Deine Frage habe ich Dir im ersten Beitrag schon im ersten Beiitrag gegeben.
Gruß Hajo
AW: Ereignis bei Listbox-Auswahl
31.10.2011 17:55:05
dave
Ich habe Target.Adress benutzt, aber nicht das gewünschte Ergebnis erzielt, wie auch schon geschrieben.
Wie mache ich es besser?
Gruß
David
AW: Ereignis bei Listbox-Auswahl
31.10.2011 17:56:57
Hajo_Zi
Hallo David,
der relavante Code wird nur ausgeführt falls die entsprechende Zelle geändert wurde. Und das woltest Du in Deinem ersten Beitrag. Das Change Ereignis löst nicht die Berechnung aus.
Gruß Hajo
Anzeige
AW: Ereignis bei Listbox-Auswahl
31.10.2011 18:01:37
dave

Das Change Ereignis löst nicht die Berechnung aus
Trotzdem wird der Code außerhalb des IF-Ausdrucks zig Mal durchlaufen und das kostet Performance.
Drücke ich mich so unklar aus oder machst du dir einen "Spass" daraus, meine Beiträge so wortwörtlich zu interpretieren? Ich halte dich eigentlich für so intelligent, dass du weißt, was mein Problem ist.
Gruß
David
AW: Ereignis bei Listbox-Auswahl
02.11.2011 15:28:06
Kasimir
Hallo David!
Ärgere Dich nicht über Hajo, dem scheint es Spaß zu machen Antworten zu "sezieren" und dann darauf rumzureiten anstelle sich mit dem Beheben des eigentlichen Problems weiter zu beschäftigen. Was das soll, weiß Hajo sicherlich nur alleine.
Zu Deinem Problem: Ich glaube, dass man das mit Application..EnableEvents in den Griff bekommen könnte. Dein Makro sähe dann so aus:
Private Sub Worksheet_Change3(ByVal Target As Excel.Range)
On Error GoTo ERROR
Application.EnableEvents = False
If Target.Address = "$K$3" Then
Dim SB As String
Dim Treffer
Dim Blatt As String
SB = Worksheets("Overview").Range("K3").Value
Blatt = Format(Worksheets("Overview").Range("D1"), "YYYY-MM")
Set Treffer = Worksheets("Listen").Range("A1:A26").Find(SB)
If Not Treffer Is Nothing Then
Worksheets("Overview").Range("K5:K1000").NumberFormat = _
Worksheets("Listen").Range("B" & Treffer.Row).NumberFormat
Worksheets("Overview").Columns("K:K").AutoFit
End If
End If
ERROR:
Application.EnableEvents = True
End Sub
Teste das einfach mal,
Kasimir
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige