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

Listenauswahl erzeugt Makro-Abbruch

Listenauswahl erzeugt Makro-Abbruch
Rainer
Hallo,
verwende ein Excel-Formular (xlt-Datei), welches ich unter Excel 2003 erstellt habe und funktionierte. Unter Excel 2010 funktioniert die Auswahl über Dropdown (Liste aus Daten-Überprüfung-Gültigkeit) nicht mehr.
Funktion:
Wenn ich im Blatt „Formular“ im Feld C7 über Dropdown ein Produkt auswähle, soll im nebenstehenden Feld C8 die dazugehörige Kostenstelle eingetragen werden.
Die Liste, die C7 befüllt, steht im Blatt „Listen“, Zellen A30 bis A48. Dazu stehen in diesem Blatt auch die dazugehörigen Kostenstellen in den Zellen B30 bis B48.
Fehlermeldung in Excel 2010, wenn ich aus der Liste ein Produkt auswähle:
Laufzeitfehler ‚424‘ Objekt erforderlich
Nun bin ich mit meinen Kenntnissen etwas überfordert. Vielleicht könnt Ihr mir einen Tip geben, der die Funktion wiederherstellt.
Danke und Gruß
Rainer
VBA:
• Im Arbeitsblatt:

Private Sub Worksheet_Change(ByVal Target As Range)
Call KostenstelleEintragen
End Sub

• Im Modul:
Sub KostenstelleEintragen()
Set ws1 = Worksheets("Formular")
Set ws2 = Worksheets("Listen")
adresse = ActiveCell.Address
wert = ActiveCell.Value
For k = 1 To 18
If wert = ws2.Cells(30 + k, 1).Value Then ActiveCell.Offset(0, 1).Value = ws2.Cells(30 + k, 2).Value
Next k
End Sub

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

Betreff
Benutzer
Anzeige
AW: Listenauswahl erzeugt Makro-Abbruch
26.04.2012 16:37:35
fcs
Hallo Rainer,
die Funktionen als solches sind ok, Sie führen bei mir aber zum sofortigen Excelabsturz da das Makro in eine Endlosschleife gerät. Denn das Changeereignis wird durch das Eintragen der Werte immer wieder neu gestartet.
Mit folgender Anpassung, die die Ereignismakros vorübergehend deaktiviert, sollte es funktionieren.
Sub KostenstelleEintragen()
Application.EnableEvents = False
Set ws1 = Worksheets("Formular")
Set ws2 = Worksheets("Listen")
adresse = ActiveCell.Address
wert = ActiveCell.Value
For k = 1 To 18
If wert = ws2.Cells(30 + k, 1).Value Then _
ActiveCell.Offset(0, 1).Value = ws2.Cells(30 + k, 2).Value
Next k
Application.EnableEvents = True
End Sub

Allerdings sollte man hier für Target noch eine Prüfung einfügen, ob die geänderte Zelle im gewünschten Eingabebereich liegt. Da das Makro sonst bei jeder Änderung nach der KstNr. sucht.
Ich würde das Makro zum Einlesen der Werte komplett in das Ereignismakro einbauen. Es sind ja eh nur 3 bis 4 Zeilen.
Eine externe Prozedur in einem allgemeinen Modul ist dann sinnvoll, wenn man das gleiche Makro für mehrere Tabellenblätter anwenden möchte.
Gruß
Franz
'Code im Tabellenblatt "Formular"
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
'"C7:C7" ggf. an den tatsächlichen Bereich mit Eingaben per Dropdownauswahl anpassen.
If Not Intersect(Target, Range("C7:C7")) Is Nothing And Target.Cells.Count = 1 Then
'"Produkt" durch den Bereichsnamen ersetzen, der in der Gültigkeitsprüfung verwendet  _
wird.
For Each Zelle In Worksheets("Listen").Range("Produkt").Cells
If Zelle.Value = Target.Value Then
Target.Offset(0, 1).Value = Zelle.Offset(0, 1).Value
Exit For
End If
Next
End If
End Sub

Anzeige
AW: Listenauswahl erzeugt Makro-Abbruch
27.04.2012 10:42:51
Rainer
Hallo Franz,
vielen Dank für die Hilfe. Es funktioniert.
Ich habe zwischenzeitlich noch eine andere Lösung - ohne VBA - gefunden. In die Felder mit den Kostenstellen im Blatt Formular habe ich SVERWEIS-Formeln eingefügt, z. Bsp.:
=WENN(C7="";"";SVERWEIS(C7;Listen!$A$31:$B$48;2;FALSCH)).
Deine VBA-Lösung habe ich, mit Hinweis auf dieses Forum, nun in Nutzung.
Viele Grüße
Rainer

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige