Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Finde den Fehler nicht!!! ;(
#1
Hallo liebes Excelforum,


bin seit ein paar Stunden am verzweifeln denn ich finde den Fehler nicht ;(

Mit diesem Code filtere ich meine Tabelle nach bestimmten Werten die ich über eine Userform eingebe und auf Filtern(CommandButton1_Click) klicke:

Code:
Option Explicit
Private Sub CommandButton1_Click()
'    filtern
    Dim loletzte As Long
    Dim i As Integer, j As Integer
    With Sheets("Filter")
        .Cells.Clear
        j = 1
        For i = 1 To 58
            If Me.Controls("Textbox" & i) <> "" Then
                .Cells(1, j) = Me.Controls("Label" & i).Caption
                If IsNumeric(Me.Controls("Textbox" & i)) Then
                    If i = 30 Or i = 31 Or i = 32 Or i = 34 Or i = 52 Or i = 53 Or i = 54 Or i = 55 Then
                        If Me.Controls("ComboBox" & i) <> "" Then
                            .Cells(2, j) = Me.Controls("ComboBox" & i) & Replace(Me.Controls("Textbox" & i), ",", ".")
                            j = j + 1
                        Else
                            .Cells(2, j) = CDbl(Me.Controls("Textbox" & i))
                            j = j + 1
                        End If
                    Else
                        .Cells(2, j) = CDbl(Me.Controls("Textbox" & i))
                        j = j + 1
                    End If
                Else
                    .Cells(2, j) = "*" & Me.Controls("Textbox" & i).Text & "*"
                    j = j + 1
                End If
            End If
        Next i
        If j > 1 Then
            Sheets("produkte").Rows(1).Copy .Range("A4")
            Sheets("produkte").Range("C1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=.Range(.Cells(1, 1), .Cells(2, j - 1)), CopyToRange:=.Range(.Cells(4, 1), .Cells(4, 58)), Unique:=False
            
            loletzte = .Cells(Rows.Count, 3).End(xlUp).Row
            If loletzte <= 4 Then
                Me.ListBox2.RowSource = ""
                MsgBox "Keine Suchergebnisse!" & vbLf & vbLf _
                    & "Eingabe überprüfen oder andere Optionen für die Suche wählen."
            Else
                Me.ListBox2.RowSource = ""
                Me.ListBox2.ColumnCount = 58
                Me.ListBox2.ColumnHeads = True
                Me.ListBox2.RowSource = "Filter!" & .Range(.Cells(5, 1), .Cells(loletzte, 58)).Address
            End If
        Else
            MsgBox "Keine Filterkriterien angegeben!"
        End If
    End With
End Sub


Es werden z.B mehrere Einträge gefunden und beim Doppelklick auf einer bestimmten Zeile in der Listbox soll die Artikelnummer die sich in der Listbox in der 3. Spalte und auch im Tabellenblatt in Spalte C befindet an den "sSearch" im nächsten Code übergeben werden:


Code:
Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim i As Long
    Dim sSearch As String
    Dim rngID As Range
    sSearch = Me.ListBox2  'Eintrag an die Variable übergeben
    Set rngID = ThisWorkbook.Sheets("produkte").Columns("C:C").Find(What:=sSearch, LookAt:=xlWhole, LookIn:=xlValues) 'In Spalte A nach dem Wert in der Variable suchen und festhalten
    i = rngID.Row
  
       frmArtSuch.Hide
       ArtikelDB.Show
       With ThisWorkbook.Sheets("produkte")
       ArtikelDB.TextBox3.Text = .Cells(i, 3).Value
       End With
       ArtikelDB.cmdArtikelSuchen_Click
End Sub


Nun klappt es wunderbar solange die Artikelnummer in der Spalte A steht dann wird an den sSearch die Artikelnummer aus der Spalte A übergeben aber ich möchte das die Artikelnummer aus der Spalte C übergeben wird!


Hat jemand eine Idee?


Vielen Dank
VG
Alexandra
Antwortento top
#2
Hallo,

wenn die Artikelnummer eine Zahl ist, wirst Du nie was finden, denn die Textbox gibt, wie der Name schon sagt, einen Text zurück.
Da ich weder Deine Tabelle noch sonst was kenne, hier mal ein ungetesteter Vorschlag:

Code:
Private Sub ListBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Dim i As Long
    Dim sSearch As Double
    Dim rngID As Range
    sSearch = cdbl(Me.ListBox2)  'Eintrag an die Variable übergeben
    Set rngID = ThisWorkbook.Sheets("produkte").Columns("C:C").Find(What:=sSearch, LookAt:=xlWhole, LookIn:=xlValues) 'In Spalte C nach dem Wert in der Variable suchen und festhalten
    i = rngID.Row
  
       frmArtSuch.Hide
       ArtikelDB.Show
       With ThisWorkbook.Sheets("produkte")
       ArtikelDB.TextBox3.Text = .Cells(i, 3).Value
       End With
       ArtikelDB.cmdArtikelSuchen_Click
End Sub
Gruß
Opa Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antwortento top
#3
Hallo zusammen

Edgar, Alexandra schreibt, dass sie den Wert aus der dritten Spalte einer Listbox an die
Variable übergeben möchte. Also, keine Textbox, aber hier ist auch der Denkfehler.

Mit sSearch = Me.ListBox2 wird der Wert aus der ersten Spalte der Listbox wiedergegeben.
Den Wert aus der dritten Spalte erhält man so:

ListBox2.List(ListBox2.ListIndex, 2)

Also:
sSearch =ListBox2.List(ListBox2.ListIndex, 2)

Da der Filtercode wahrscheinlich aus einer meiner Beispielmappen ist, gehe ich davon aus, dass
hier eine mehrspaltige und auch so eingestellte Listbox vorliegt.
Gruß Atilla
[-] Folgende(r) 1 Benutzer sagt Danke an atilla für diesen Beitrag:
  • cysu11
Antwortento top
#4
Hallo Atilla,


vielen Dank so funktioniert es auch:

sSearch = Me.ListBox2.Column(2)

19

Schönen Abend noch
LG
Alexandra
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste