2016-04-22 11 views
0

Ich bin ein bisschen fest. Ich habe ein Benutzerformular erstellt, das einen Teil auf einem Blatt mit dem Namen "Main" hinzufügt und ein weiteres Blatt abhängig davon, was der Benutzer für ein Warehouse auswählt. Momentan funktioniert der Code, aber es wird nur zu "Main" und "Elkhart East" hinzugefügt, dies funktioniert nicht, wenn ich ein anderes Warehouse auswähle.Benutzerformular in mehrere Arbeitsblätter integrieren

Beispiel. Hinzufügen --- Teil # qwerty --- Hinzufügen zu Main und North Carolina

Private Sub cmdAdd_Click() 

    Dim irow As Long 
    Dim lastRow As Long 
    Dim iCol As String 
    Dim C As Range 
    Dim ws As Worksheet 
    Dim value As Long 
    Dim NewPart As Boolean 
    Dim ws_warehouse(7) As Worksheet '7 is total warehouse tab you have 

    Set ws = Worksheets("Main") 

    Set ws_warehouse(1) = Worksheets("Elkhart East") 
    Set ws_warehouse(2) = Worksheets("Tennessee") 
    Set ws_warehouse(3) = Worksheets("Alabama") 
    Set ws_warehouse(4) = Worksheets("North Carolina") 
    Set ws_warehouse(5) = Worksheets("Pennsylvania") 
    Set ws_warehouse(6) = Worksheets("Texas") 
    Set ws_warehouse(7) = Worksheets("West Coast") 

    Set C = ws.Range("A7:A1048576").Find(What:=Me.PartTextBox.value, SearchOrder:=xlRows, _ 
      SearchDirection:=xlPrevious, LookIn:=xlValues, LookAt:=xlWhole) 
    If C Is Nothing Then 
    'find first empty row in database 
     lastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count 
     irow = lastRow + 1 
     NewPart = True 
    Else 
    'find row where the part is 
     irow = ws.Cells.Find(What:=Me.PartTextBox.value, SearchOrder:=xlRows, _ 
      SearchDirection:=xlPrevious, LookIn:=xlValues).Row 
     NewPart = False 
    End If 

    'check for a part number 
    If Trim(Me.PartTextBox.value) = "" Then 
     Me.PartTextBox.SetFocus 
     MsgBox "Please Enter A Part Number" 
     Exit Sub 
    End If 

    If Trim(Me.MonthComboBox.value) = "" Then 
     Me.MonthComboBox.SetFocus 
     MsgBox "Please Enter A Month" 
     Exit Sub 
    End If 

    If Trim(Me.AddTextBox.value) = "" Then 
     Me.AddTextBox.SetFocus 
     MsgBox "Please Enter A Value To Add Or Substract" 
     Exit Sub 
    End If 

    Select Case MonthComboBox.value 
     Case "Current Month" 
      iCol = "C" 

     Case "Current Month +1" 
      iCol = "N" 

     Case "Current Month +2" 
      iCol = "O" 

     Case "Current Month +3" 
      iCol = "P" 

     Case "Current Month +4" 
      iCol = "Q" 
    End Select 

    actWarehouse = Me.MonthComboBox.ListIndex + 1 

    With ws 
     .Cells(irow, "A").value = Me.PartTextBox.value 
     .Cells(irow, iCol).value = .Cells(irow, iCol).value + CLng(Me.AddTextBox.value) 
    End With 

    With ws_warehouse(actWarehouse) 
     'find part number 
     l_row = .Range("A" & .Rows.Count).End(xlUp).Row 

     NewPart = True 
     For r = 7 To l_row 
      If Trim(.Range("A" & r)) = "" Then Exit For 
      If LCase(.Range("A" & r)) = LCase(Me.PartTextBox.Text) Then 
       irow = r 
       Exit For 
       NewPart = False 
      End If 
     Next r 
     If NewPart Then irow = r 

     .Cells(irow, "A").value = Me.PartTextBox.value 
     .Cells(irow, iCol).value = .Cells(irow, iCol).value + CLng(Me.AddTextBox.value) 
    End With 

    'clear the data 
    Me.PartTextBox.value = "" 
    Me.MonthComboBox.value = "" 
    Me.AddTextBox.value = "" 
    Me.PartTextBox.SetFocus 
    Me.warehousecombobox.value = "" 

End Sub 

Private Sub cmdClose_Click() 
    Unload Me 
End Sub 

Private Sub UserForm_Initialize() 

    'Empty NameTextBox 
    PartTextBox.value = "" 

    'Empty PhoneTextBox 
    AddTextBox.value = "" 

    'Empty DinnerComboBox 

    'Fill DinnerComboBox 
    With MonthComboBox 
     .AddItem "Current Month" 
     .AddItem "Current Month +1" 
     .AddItem "Current Month +2" 
     .AddItem "Current Month +3" 
     .AddItem "Current Month +4" 

    End With 

    With warehousecombobox 
     .AddItem "Elkhart East" 
     .AddItem "Tennessee" 
     .AddItem "Alabama" 
     .AddItem "North Carolina" 
     .AddItem "Pennsylvania" 
     .AddItem "Texas" 
     .AddItem "West Coast" 
    End With 

End Sub 

Antwort

0

Eine Sache fiel mir im Voraus. Sie legen den Index des ausgewählten Warenlagers mit dieser Zeile fest: actWarehouse = Me.MonthComboBox.ListIndex + 1, aber Sie beziehen sich auf die MonthComboBox. In Ihrem Initialisierungscode nennen Sie es warehouseComboBox

Ist das ein Typ?

Verwandte Themen