Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Listbox zeigt fehler

Forumthread: Listbox zeigt fehler

Listbox zeigt fehler
08.02.2025 14:35:32
Karl b
Hallo zusammen,
ich habe folgendes Makro:
'----- namen ändern -------------

Public Sub CommandButton2_Click()
Dim lZeile As Long
If TextBox1.value = "" Then
MsgBox "Sie müssen einen Namen eingeben - danke.", _
48, " Hinweis für " & Application.Username
TextBox1.SetFocus
Exit Sub
End If

Application.ScreenUpdating = False
lZeile = ListBoxNeu1.List(ListBoxNeu1.ListIndex, 1)

With Worksheets("Start")
.Unprotect (getStrPassWort)
.Range("A" & lZeile).value = WorksheetFunction.Proper(TextBox1.value)
Call Sortieren
TextBox1.value = ""
End With
Application.ScreenUpdating = True
CommandButton1.Enabled = True ' den Übernehmen-Button entsperren
CommandButton4.Enabled = False ' den Lösch-Button sperren
End Sub


Die Listbox ist auf einer Userform, der Name der Listbox ist korrekt.
hier bleibt das Makro stehen:
lZeile = ListBoxNeu1.List(ListBoxNeu1.ListIndex, 1)
Fehler: Laufzeitfehler -2147024809 (80070057)
Eigenschaft List konnte nicht abgerufen werden. Ungültiges Argument.

In einer ander Datei läuft es.

mfg karl b

Anzeige

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox zeigt fehler
08.02.2025 14:50:22
Mullit
Hallo,

hm entweder ist kein Elem ausgewählt und Listindex= -1, oder die Box ist einspaltig.....

Gruß, Mullit
AW: Listbox zeigt fehler
08.02.2025 20:03:10
Piet
Hallo Karl

ich denke dein Ecel läuft einwandfrei. Schau dir deinen Code bitte noch mal genau an! Beachte DIM lZeile as Long
Du schreibst, es wird ein Name angezeigt. Das ist aber Text, keine Zahl! Sonst lade es so: -> lZeile = ListBoxNeu1.ListIndex

mfg Piet
Anzeige
AW: Listbox zeigt fehler
09.02.2025 10:23:50
GerdL
Hallo Karl,

ich frage mich, weshalb du sortieren willst.
Eventuell bekommst du den Knaller, weil die Listbox mittels der Eigenschaft Rowsource gefüllt wird?
Gruß Gerd
AW: Listbox zeigt fehler
09.02.2025 11:49:08
Oberschlumpf
Hi Karl,

und ich frage mich, wieso du uns per Upload nicht mal bitte eine Bsp-Datei mit Bsp-Daten mit Userform mit Listbox und deinem Code zeigst?
Bis jetzt hast du mehrere Antworten, die mehr geraten sind, als dass sie wirklich getestete Lösungsideen darstellen.
Mit ner Bsp-Datei, in der man dein Problem auch sehen kann, kann bestimmt besser geholfen werden, denk ich.

Ciao
Thorsten
Anzeige
AW: Listbox zeigt fehler
09.02.2025 16:06:52
Piet
Hallo karl

Fehler sind leicht zu finden wenn man die Beispieldatei hat. Dann erkennt man sie auf Anhieb!

Mein Verdacht mit lZeile war korrekt, muss aber um die Zahl 7 erweitert werden. Verstehst du warum?
Die ListBox beginnt mit Index 0 bis n. Wenn deine Daten ab Zeile 7 beginnen musst du 7 dazuzählen!
Zur Vorsicht hole ich mir den ListBox Namen und vergleiche ihn mit dem Namen in der Tabelle!

Du hast einen weiteren Fehler im Code für --> Namen löschen. Da kommt Laufzeitfehler bei Fundzeile!
Die ist weder als Dim deklariert, noch wird hier der ListIndex gesetzt. Die Variable steht somit auf Null!
Ein zweites Problem in dem Code sind OptionsButton, die es auf der UserForm nicht gibt!
Und der letzte Befehl - ActiveSheet.Protect - ergibt einen Laufzeitfehler, den ich nicht verstehe.

Ich habe dir beide Codes so geändert das beide funtkionieren. Teste sie bitte selbst.
Sie Sortierroutine habe ich nach oben verschoben, sortiert wird sofort nach dem löschen.
Würde mich freuen wenn damit dein Anliegn zufriedenstellend gelöst ist.
Ich bin gespannt. Herzliche Grüsse aus Izmir an die Heimat.

mfg Piet



Public Sub CommandButton2_Click()

Dim lZeile As Long, MName As String

If TextBox1.Value = "" Then
MsgBox "Sie müssen einen Namen eingeben - danke.", _
48, " Hinweis für " & Application.Username
TextBox1.SetFocus
Exit Sub
End If

Application.ScreenUpdating = False

' lZeile = ListBoxNeu1.List(ListBoxNeu1.ListIndex, 0)
lZeile = ListBoxNeu1.ListIndex + 7
MName = ListBoxNeu1.List(ListBoxNeu1.ListIndex)

With Worksheets("Start")
.Unprotect (getStrPassWort)
If .Range("A" & lZeile) = MName Then _
.Range("A" & lZeile) = WorksheetFunction.Proper(TextBox1.Value)

Call Sortieren
TextBox1.Value = ""

End With

Dim vTemp As Variant
With ThisWorkbook.Worksheets("Start") ' den Tabellenblattnamen ggf. anpassen!
vTemp = .Range("A7:A25" & .Cells(Rows.Count, 1).End(xlUp).Row)
ListBoxNeu1.List = vTemp
End With

Application.ScreenUpdating = True

CommandButton1.Enabled = True ' den Übernehmen-Button entsperren
CommandButton4.Enabled = False ' den Lösch-Button sperren

' Me.Label9.Caption = ActiveSheet.Range("A1").Value

End Sub




Public Sub CommandButton4_Click()
Dim Fundzeile As Long, MName As String

With Worksheets("Start")
.Unprotect (getStrPassWort)
Fundzeile = ListBoxNeu1.ListIndex + 7
MName = ListBoxNeu1.List(ListBoxNeu1.ListIndex)
If Fundzeile > 0 Then
If MsgBox("Wollen Sie den/die """ & TextBox1.Value & """ wirklich löschen?", _
vbYesNo + vbQuestion, " Löschabfrage, nur zur Sicherheit.") = vbYes Then
.Unprotect (getStrPassWort)
' .Range("A" & Fundzeile).Delete Shift:=xlUp

If .Range("A" & Fundzeile) = MName Then _
.Range("A" & Fundzeile).ClearContents

Call Sortieren

Dim vTemp As Variant

With ThisWorkbook.Worksheets("Start") ' den Tabellenblattnamen ggf. anpassen!
vTemp = .Range("A7:A25" & .Cells(Rows.Count, 1).End(xlUp).Row)
ListBoxNeu1.List = vTemp
End With

' With ListBoxNeu1
' Call Array_fuellen_I
' .Clear
' .Column = aTmp
' End With
' Unload UserForm1
End If
End If
.Protect (getStrPassWort)
End With

TextBox1.Value = ""
CommandButton1.Enabled = True ' den Übernehmen-Button entsperren
UserForm_Initialize
Unload Me
'** ab hier Luafzeitfehler incl. Protect!!
' Me.OptionButton1.Visible = True
' Me.OptionButton2.Visible = True
' Me.OptionButton1.Enabled = True
' Me.OptionButton2.Enabled = True
' ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios _
:=True, Password:=getStrPassWort
End Sub





Anzeige
Hallo Piet, alles bestens DANKE -)
09.02.2025 18:14:33
karl b
Hallo Piet,
danke für den NEUBAU der Makros !
Funktioniert alles, schönen Restsonntag noch !

mfg karl b
Nur ein Tipp am Rande -...
09.02.2025 18:32:47
Case
Moin, :-)

... schreibe es nicht so: ;-)
vTemp = .Range("A7:A25" & .Cells(Rows.Count, 1).End(xlUp).Row)

Das ist kontraproduktiv - schreibe es so: ;-)
vTemp = .Range("A7:A" & .Cells(Rows.Count, 1).End(xlUp).Row)

Servus
Case
Anzeige
AW: Nur ein Tipp am Rande -...
09.02.2025 19:11:18
karl b
Danke Case für den Tipp !

Mit freundlichen Grüßen karl b
Guten Morgen, ich erstelle eine Mustertabelle
09.02.2025 12:22:19
karl b
Anbei Muster
09.02.2025 12:43:58
karl b
Guten Morgen zusammen,
ich habe eine Mustertabelle erstellt. Zu meiner Entschuldigung, da ich mich nicht so gut
auskenne hatte mir ein Freund die Datei erstellt.
Kommischerweise klappte mal alles in einer Datei, auf einmal nichts mehr.
Würde mich freuen wenn es eine Lösung gibt,
danke im Voraus

mfg karl b
https://www.herber.de/bbs/user/175581.xlsm
Anzeige
AW: Listbox zeigt fehler
08.02.2025 22:21:11
karl b
Guten Abend Piet,
habe eingesetzt, keine Fehlermeldung.
Aber hier:
 With Worksheets("Start")

.Unprotect (getStrPassWort)
.Range("A" & lZeile).value = WorksheetFunction.Proper(TextBox1.value)
Call Sortieren
TextBox1.value = ""
End With


.Range("A" & lZeile).value = WorksheetFunction.Proper(TextBox1.value)
Laufzeitfehler 1004
Anwendungs- oder objectdefinierter Fehler


mfg karl b
Anzeige
AW: Listbox zeigt fehler
09.02.2025 00:27:24
Piet
Hallo Karl

bitte baue in deinen Code zum Testen mal - .Range("A" & lZeile).Select - ein und schaue welche Zelle angesprochen wird??
Ich weiß nicht was die Funktion Proper macht?? Habe nie damit gearbeitet. Vielleicht liegst du genau um 1 Zelle daneben??
Dann musst du ggf. die lZeile Variable um +1 erhöhen, weil Listindex bei 0 anfängst. -- Ist aber nur geraten!

mfg Piet
Anzeige
AW: Listbox zeigt fehler
09.02.2025 12:20:32
karl b
Guten Morgen Piet,
keine Fehlermeldung und auch keine Änderung vom Namen.


mfg karl b
Die Box ist einspaltig
08.02.2025 15:00:08
karl b
Hallo Mullit,
die Listbox ist einspaltig.

mfg karl b
AW: Die Box ist einspaltig
08.02.2025 17:46:47
Crazy Tom
moin

lZeile = ListBoxNeu1.List(ListBoxNeu1.ListIndex, 1)

die 1 am Ende spricht die zweite Spalte der Listbox an
die erste Spalte einer Listbox ist 0
es sei denn ganz oben im Modul steht was von: Option Base 1

mfg Tom
Anzeige
Laufzeitfehler 13
08.02.2025 18:36:15
karl b
Hallo Tom,
habe so geändert:
   lZeile = ListBoxNeu1.List(ListBoxNeu1.ListIndex, 0)

es kommt Laufzeitfehler 13
Typen unverträglich.

ListBoxNeu1.List angeklickt ist der ausgewählte Name sichtbar.

mfg karl b
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18