09.06.2014, 12:02
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:
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:
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
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