2017-08-18 2 views
0

Ich richte ein Kombinationsfeld ein, das eine Pivot-Tabelle aktualisieren wird, wenn ausgewählt. Aber ich brauche den Wert, den das Kombinationsfeld einen anderen Wert vom ausgewählten Text zurückgibt.Excel VBA Wert des Kombinationsfelds unterscheidet sich von dem Text

ex. Sie wählen einen Produktnamen in der Dropdown-Box "Cheerios". Aber es hat eine SKU-Nummer von 1234. Ich brauche das Kombinationsfeld, um das 1234 zurückzugeben, und nicht das Wort "Cheerios".

Ist das möglich?

Edit:

Unten ist ein Bild, wo ich meine Liste von bevölkert bin immer. Spalte B wird angezeigt, was in der Dropdown-Liste angezeigt wird. Spalte A ist das, was ich benötige, wenn das Produkt ausgewählt wird.

enter image description here

Edit 2:

Private Sub cmb_SkuSelect_Click() 
    Dim xlSheetSort As Worksheet 
    Dim lastRow As Long 
    Dim skuValue As Integer 

    Set xlSheetSort = ActiveWorkbook.Worksheets("Sort") 
    lastRow = xlSheetSort.Range("A1").End(xlDown).Row 

    With xlSheetSort.Range("B1:B" & lastRow) 
     Set c = .Find(cmb_SkuSelect.Value, LookIn:=xlValues) 
     If Not c Is Nothing Then 
      skuValue = xlSheetSort.Range("A" & c.Row).Value 
     End If 
    End With 

    cmb_SkuSelect.Value = "" 
    ActiveWorkbook.ActiveSheet.Range("A4").Value = skuValue 

    updatePivot skuValue 
End Sub 

updatePivot:

Public Sub updatePivot(ByVal sku As Integer) 
    Dim xlSheet As Worksheet 
    Dim xlPTable As PivotTable 

    Set xlSheet = ActiveWorkbook.Worksheets("Sku Inventory") 

    For Each xlPTable In xlSheet.PivotTables 
     With xlPTable 
      .PivotFields("Sku Number").CurrentPage = sku 
     End With 
    Next 
End Sub 
+0

Was Sie bisher versucht haben? Was genau meinst du mit 1234 zurück? – sourceCode

+0

'Wenn ComboBox.Value =" Cheerios "Dann' myvalue = "1234" usw. usw. – dwirony

+0

Ich habe noch nichts versucht, weil ich nicht weiß, wie ich das anstellen soll. Eine If-Anweisung funktioniert nicht, da ich mehr als 15.000 verschiedene Elemente in der Dropdown-Liste habe. – Caveman42

Antwort

1

Versuchen Sie das mal:

Private Sub ComboBox1_Change() 
    Dim valueToLook As String 
    valueToLook = ComboBox1.Value 
    Dim sku, i As Integer 
    Dim LastRow As Long 
    With ActiveSheet 
     LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row 
    End With 
    For i = 1 To LastRow 
     If Cells(i, 2).Value = valueToLook Then 
      sku = Cells(i, 1).Value 
      MsgBox sku 
      Exit For 
     End If 
    Next i 
End Sub 
+0

Eine If-Anweisung funktioniert nicht, da ich mehr als 15.000 verschiedene Elemente in der Dropdown-Liste habe. – Caveman42

+0

Warum würde es nicht funktionieren, Sie wählen nur ein Element aus dem Dropdown und wenn dieses Element ausgewählt ist, überprüft es, ob dieser Wert "Cherrios" ist. –

+0

Obwohl ich die SKU # s neben der Liste für das Kombinationsfeld hinzufügen könnte, und dann eine Art Such-Offset um 1 Spalte durchführen, um den SKU-Wert zu erhalten? hmm .. – Caveman42

Verwandte Themen