将用户表单集成到多个工作表中

时间:2016-04-22 13:16:30

标签: excel vba excel-vba

我有点卡住了。我创建了一个用户表单,它将在名为" Main"还有另一张纸,取决于用户为仓库选择的内容。目前代码正在运行,但它只会添加到" Main"和" Elkhart East"当我选择另一个仓库时,这将不起作用。

实施例。添加---部分#qwerty ---添加到主要和北卡罗来纳州

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

1 个答案:

答案 0 :(得分:0)

有一件事在我前面突出。 您正在使用以下行设置所选仓库的索引:actWarehouse = Me.MonthComboBox.ListIndex + 1,但您引用的是MonthComboBox。在初始化代码中,您将其称为warehouseComboBox

这是一种类型吗?