Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1932to1936
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

Listbox-Fehler bei Eintrag Änderung

Listbox-Fehler bei Eintrag Änderung
12.06.2023 10:07:01
Marcus

Guten Morgen zusammen,

wenn ich in der Datei auf einen Button klicke, öffnet sich die Listbox. Wenn ich dann direkt und nur "einen" Punkt doppelt anklicke, erscheint in dieser Text dann unten in der Textbox. Wenn ich diesen Punkt dann bearbeite und auf den Button "Änderung in LB schreiben" klicke, kommt eine Fehlermeldung. Wenn ich einen Punkt nur einmal anklicke und einen zweiten Punkt doppelt anklicke und den Text bearbeite und auf den Button "Änderung in LB schreiben" klicke, funktioniert alles wie es soll. Könnt ihr mir weiterhelfen?
Hier die Datei. https://www.herber.de/bbs/user/159545.xlsm

Vielen lieben Dank.

Viele Grüße Marcus

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox-Fehler bei Eintrag Änderung
12.06.2023 13:23:03
Marcus
Vielen Dank für die schnelle Antwort. Also das Programm, so wie es ist, funktioniert es genauso wie ich das auch haben will, allerdings ist nur diese eine Sache, wenn ich nur einen Punkt mit doppelklick auswähle, bearbeite und hinzufüge, kommt diese Fehlermeldung. Wenn ich mehrere Auswähle und einen Text bearbeite, kommt die Fehlermeldung nicht.

Viele Grüße Marcus


Anzeige
AW: Listbox-Fehler bei Eintrag Änderung
12.06.2023 13:51:47
Daniel
Hi
der Fehler ist, das du das Array arrSelected nicht fertig dimensionierst, wenn du du nur eine Zeile markiert hast und diese dann auch doppeltklickst.
beim Click auf den Button2 verhindert das diese Zeile (iZeile ist die Zeile, die Doppeltgeklickt wurde):
      If i > iZeile Then
damit bleibt dann die variable arrSelected auf ihrem unbestimmten Zustand.
die Frage ist, brauchst du diese Einschränkung?

ansonsten würde ich arrSelected grundsätzlich auf die Anzahl der Listboxeinträge dimensionieren um dir für jede Zeile zu merken, ob sie selektiert ist oder nicht.
dh du merkst dir nicht
1 und 3 selektiert
sondern
1: selektiert, 2: nicht selektiert, 3: selektiert, 4: nicht selektiert usw
denn damit hast du immer ein definiertes Array, auch wenn nichts selektiert ist, was du bei deiner vorgehensweise nicht hast und als sonderfall betrachten müsstest.
Gruß Daniel


Anzeige
AW: Listbox-Fehler bei Eintrag Änderung
12.06.2023 14:06:49
Marcus
Hey Daniel,

ich bin nicht so ganz fit in dem ganzen Thema, aber so wie das Programm funktioniert, so möchte das auch gerne haben. Sobald ich mehrere Punkte anklicke, funktioniert alles so wie es soll. Nur halt nicht so richtig, wenn ich nur einen Punkt anklicke. Was meinst du, wie würde das mit deiner Methode aussehen?

Viele Grüße Marcus


AW: Listbox-Fehler bei Eintrag Änderung
12.06.2023 14:58:28
Daniel
so in den entsprechenden Makros:

Private Sub CommandButton2_Click()
    Dim i&, j&
    ReDim arrSelected(ListBox1.ListCount - 1)
    For i = 0 To ListBox1.ListCount - 1
        arrSelected(i) = ListBox1.Selected(i)
    Next i
    If MsgBox("Soll der Wert zusätzlich in die Listbox eingefügt werden", vbQuestion + vbYesNo, "Abfrage wie in Listbox übernehmen") = vbYes Then
        WertHintenRan
    Else
        WertAendern
    End If
End Sub
Private Sub WertHintenRan()
    Dim arrNr
    Dim r&, i&, j&
    
    With ListBox1
        .AddItem
        .List(.ListCount - 1, 1) = TextBox1
    End With
    With TabFürListe
        .ListRows.Add
        r = .ListRows.Count
        .DataBodyRange.Columns(1).Cells(.DataBodyRange.Columns(1).Cells.Count) = ListBox1.List(ListBox1.ListCount - 1, 0)
        .DataBodyRange.Columns(2).Cells(.DataBodyRange.Columns(1).Cells.Count) = ListBox1.List(ListBox1.ListCount - 1, 1)
        
        With .DataBodyRange
             .Cells(r, 1) = .Cells(1, 1)
             .Cells(r, 2) = TextBox1
             ListBox1.List = .Value
        End With
    End With
    
    ReDim Preserve arrSelected(UBound(arrSelected) + 1)
    arrSelected(UBound(arrSelected)) = True
    
    TextBox1 = ""
    For i = 0 To ListBox1.ListCount - 1
        ListBox1.Selected(i) = arrSelected(i)
    Next i
End Sub
wie du siehst, wird es damit deutlich einfacher.
Gruß Daniel


Anzeige
AW: Listbox-Fehler bei Eintrag Änderung
12.06.2023 16:28:03
Marcus
Jetzt ist das Problem, dass der Punkt, den ich doppelt ausgewählt habe, aktiviert bleibt. Wenn ich einen Punkt mit Doppelklick auswähle, bearbeite und hinzufüge, soll der wie vorher unten angefügt werden und der Punkt aus den Stammdaten soll nicht mehr aktiviert sein, weil ich ja diesen Punkt bearbeitet habe.

Gruß Marcus


AW: Listbox-Fehler bei Eintrag Änderung
12.06.2023 18:34:36
Daniel
Hi
naja, die Nummer des bearbeiteten Eintrags hast du ja in iZeile
dann setzt du einfach für diesen den Eintrag auf false:

arrSelected(iZeile) = False
bevor zu die Schleife zum zurückschreiben des Arrays arrSelected in die Listbox ausführst.
das kannst du da machen, wo du auch den neu hinzugefügten Eintrag automatisch auf WAHR setzt, damit dieser jetzt markiert ist.
Gruß Daniel


Anzeige
AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 10:08:02
Marcus
Guten Morgen Daniel,

wenn ich auf False setze, ist zwar die Fehlermeldung weg, was mich sehr freut, allerdings bleibt das Häkchen bei dem Eintrag der ausgewählt wurde. Das Häkchen muss dann direkt auf den neuen bearbeiteten und hinzugefügten Text springen. Ist das irgendwie möglich?
Vielen Dank.

Viele Grüße Marcus


AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 12:51:59
Daniel
Dafür hatte ich in meiner Lösung diese Zeile eingefügt:
ReDim Preserve arrSelected(UBound(arrSelected) + 1)
arrSelected(UBound(arrSelected)) = True
Hast du diese auch in dein Makro übernommen?
ich vermute nicht.
Wenn was nicht funktioniert, solltest du immer deinen Code dazu zeigen, damit man sieht, was du machst, denn nur wenn ich weiß was du machst, kann ich dir sagen was falsch ist.
Gruß Daniel


Anzeige
AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 16:43:26
Marcus
Ich habe deinen Code so in die Userform übertragen, aber wie meinst du das mit ins Makro aufnehmen?


AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 16:54:55
Daniel
ZEIGE einfach deinen Code, den du verwendest.
am besten Datei hochladen.
Wenn du alles so gemacht hast, wie ich mir das vorgestellt habe, sollte es funktionieren.


AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 18:08:23
Daniel
naja du hast geschrieben, dass du den Code, so wie ich ihn dir gezeigt habe, übernommen hast.
das stimmt leider nicht, weil du eine Änderung durchgeführt hast, du hast im Makro Private Sub WertHintenRan()
diese Zeile (so von mir gezeigt)
arrSelected(UBound(arrSelected)) = True
so abgeändert:
arrSelected(UBound(arrSelected)) = False
wenn du solche Veränderungen vornimmst, dann ist doch klar, dass der Code nicht so funktioniert.
außerdem solltest du dann nicht behaupten, dass du den Code von mir unverändert übernommen hast.
das mit dem False hast du dir selber ausgedacht.
das solltest du schon schreiben, wenn du sowas machst.
Sowas ist ärgerlich.
Warum machst du das?
was soll das?


Anzeige
AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 18:41:20
Marcus
Entschuldige bitte. Wenn ich den Code so übernehme, bleibt trotzdem noch der Stammdatensatz den ich doppelt angeklickt habe, markiert. Es soll nur der der bearbeitete Text den ich hinzugefügt habe, markiert sein und das Häkchen automatisch vom Stammdatensatz entfernt werden. Kannst du mir dabei helfen?
Vielen Dank.

Gruß Marcus


AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 18:59:46
Daniel
ja aber das hatten wir doch hier schon:

https://www.herber.de/forum/messages/1933572.html

beachte:
- iZeile ist der Index des doppelt angeklickten Listeneintrags (das iZeile wird ja im BeforeDoubleClick-Event befüllt)
- Ubound(arrSelected) ist der Index des letzten Elements des Array, an der stelle als der Eintrag, den du über das Makro neu hinzugefügt hast.
also brauchst du
arrSelected(iZeile) = False
um den doppelt angeklickten Eintrag abzuwählen und
arrSelected(ubound(arrSelected)) = True
um den neu hinzugefügten Eintrag anzuwählen.

Das hatte ich aber alles schon erklärt.
Warum muss ich das jetzt nochmal schreiben?
Liest du die Antworten nicht? Man darf die auch ein zweites mal Lesen, wenn man sie nicht sofort versteht.
Ab wann darf ich Gebühren verlangen?


Anzeige
AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 19:18:40
Marcus
Kannst du mir nicht helfen und das passende Glied einsetzen? Ich weiß jetzt gar nicht mehr weiter.


AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 19:28:51
Daniel
du hast also überhaupt keinen Plan, was dein Code so macht und wie er funktioniert?
wo kommt der Code dann her?


AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 19:30:03
Marcus
Vielen Dank für deine Unterstützung


AW: Listbox-Fehler bei Eintrag Änderung
13.06.2023 19:35:15
Daniel
Bitte Gerne
ich habe dir alles gezeigt, was du wissen musst.
Wenn mal ein bisschen mitdenkst und nicht nur wartest, dass dir jemand fertigen Code zur Verfügung stellt, dann bekommst du auch ein Problem gelöst.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige