无法选项卡到用户表单上的下一个字段

时间:2016-05-04 17:24:18

标签: excel vba excel-vba

我创建了一个包含四个字段的用户表单1.Part#2.Month(drop down)3。添加4.Warehouse(下拉列表)。输入数据时,我可以选项卡(键盘)到下一个字段,但是一旦到达最后一个部分仓库,它就会跳下来。所以从3.添加我单击选项卡它将下拉到关闭cmd(按钮)。为什么不去仓库?

**如果需要,我提供了用户格式代码

Private Sub cmdAdd_Click()
    If TrialVersion Then Exit Sub

    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.warehousecombobox.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

0 个答案:

没有答案