Clever-Excel-Forum

Normale Version: Laufzeitfehler 380
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Code:
Private Sub Txt_Ort_Change()
   If Lst_ESB.Tag = "" Then
       Dim LoI As Long                             ' Schleifenvariable
       Dim LoJ As Long                             ' Schleifenvariable
       Dim LoZeile As Long                         ' Variable für Zeile in Listbox
       Dim RaFound As Range                        ' Variable für das Suchergebnis
       
       Application.ScreenUpdating = False          ' Bildschirmaktualisierung aus
       If Txt_Ort = "" Then                        ' keine Eingabe in der Textbox
           Lst_ESB.ColumnHeads = True   ' Überschrift anzeigen
           ' gesamte Liste zuweisen
           Lst_ESB.RowSource = "A" & LoStart & ":" & StSpalte & LoLetzte
       Else
           Lst_ESB.ColumnHeads = False  ' Überschrift nicht anzeigen
           Lst_ESB.RowSource = ""       ' Adressbreich für Listbox löschen
           With Worksheets(StTabelle)
               ' erste Zeile Suchen
               ' Wert suchen
               Set RaFound = .Range(.Range(StSpalte & LoStart), _
                   .Range(StSpalte & LoLetzte)).Find(Txt_Ort & "*", _
                   .Cells(LoLetzte, InSpalte), , xlWhole, , xlNext)
               ' Begriff wurde gefunden
               If Not RaFound Is Nothing Then
                   ' letzte Spalte in der Überschriftenzeile
                   InSpalte1 = IIf(IsEmpty(.Cells(LoStart - 1, .Columns.Count)), _
                       .Cells(LoStart - 1, _
                       .Columns.Count).End(xlToLeft).Column, .Columns.Count)
                   ' ID eintragen 1. Spalte
                   Lst_ESB.AddItem .Cells(LoStart - 1, 1)
                   If InSpalte1 > 0 Then
                       For LoJ = 1 To InSpalte1
                           ' weitere Spalten eintragen
                   Lst_ESB.List(LoZeile, LoJ - 1) _
                        .Cells(LoStart - 1, LoJ)
                       Next
                   End If
                   LoZeile = LoZeile + 1
                   ' Schleife von gefundener Stelle bis zu letzten Zeile
                   For LoI = RaFound.Row To LoLetzte
                       ' Prüfen ob Ort noch mit dem Inhalt aus
                       ' der Textbox beginnt
                       If UCase(Left(.Cells(LoI, InSpalte), Len(Txt_Ort))) _
                           = UCase(Txt_Ort) Then
                           ' Ort eintragen 1. Spalte
                           Lst_ESB.AddItem .Cells(LoI, 1)
                           If InSpalte1 > 1 Then
                               For LoJ = 2 To InSpalte1
                                   ' weitere Spalten eintragen
                                   Lst_ESB.List(LoZeile, LoJ - 1) _
                                       = .Cells(LoI, LoJ)
                              Next
                           End If
                           
                           LoZeile = LoZeile + 1   ' Zeilennummer um 1 erhöhen
                       ' auskommentiert wegen Umlaute
                       'Else
                           ' Schleife verlasen
                           'Exit For
                       Else
                           If UCase(Left(.Cells(LoI, InSpalte), 1)) _
                               <> UCase(Left(Txt_Ort, 1)) Then
                               Exit For
                           End If
                       End If
                   Next
               End If
           End With
       End If
       Set RaFound = Nothing                       ' Variable leeren
       Application.ScreenUpdating = True           ' Bildschirmaktualiserung ein
   End If
End Sub
ich habe mir mal die Userform 18 aus dem Downloadbereich (http://hajo-excel.de/vba_userform_auswahlliste.htm) heruntergeladen. wenn ich die Userform starte erstellt Sie die Überschriften als Optionsbutton, wenn ich diese aber anklicke und ein Suchkriterium angebe bleibt er immer in der Rot gekennzeichneten Zeile mit Laufzeitfehler 380 stehen ????

Lst_ESB.List(LoZeile, LoJ - 1) _
=.Cells(LoStart - 1, LoJ)

Die Istwerte im Fehlerfall
LOJ = 11 (12 Spalten gibt es ?)
LoZeile = 0
LoStart = 4 (In Zeile 3 stehen die Überschriften)

Brauche da mal eure Hilfe.

Gruß Arni49
Hallo Arni,

kann ich bei mir nicht nachvollziehen. Hast Du einfach nur das userform gestartet oder zuvor noch was anderes gemacht?
Hallo,

Excel geöffnet und in der Tabelle mit dem Suchen Button die Userform gestartet.
Dann den Options Button z.B  Bereich angeklickt und oben ein G für Grün eingegeben dann kommt der Fehler 380.

????

Gruß
Hallöchen,

ok, dann bekomme ich den auch. Was sagt denn Hajo dazu?
Hallo,

das kommt daher, weil per AddItem versucht wird, mehr als 10 Spalten zuzuweisen. Listboxes sind auf maximal 10 Spalten beschränkt,
wenn diese Art des Hinzufügens verwendet wird. Der Code müsste z.B. umgeschrieben werden, sodass Arrays verwendet werden.
Oder halt max 10 Spalten verwenden.

Gruß
Hallo Arni, :19:

wie Mourad schon schrieb - und wie du auch auf der HP, von der du das hast, lesen kannst - "Es können max. 10 Spalten angezeigt werden". :21:

Es gibt verschiedene Möglichkeiten - hier was zum spielen: :21:
[attachment=23018]
Hallo,
na Klasse ich Hong, wer lesen kann ist klar im Vorteil   Dodgy 

ich wollte einfach eine Combobox mit den Überschriften füllen und eine 2. mit den dazugehörigen Einträgen in der Liste zur Auswahl.
Dann sollen in der Listbox alle Ergebnisse der Auswahl erscheinen.

Wie kann ich das in deiner Bsp.Datei umsetzen ? bin jetzt völlig konfus  :16: 

Gruß Arni
Hallo,

nur zur Info, habe es über Arrays gelöst.

:23: 

Danke.