5

列表框未将所选值分配给“n”。无论我是否从列表框中选择值,“n”值都是 0。我正在学习,所以我可能会错过一些简单的东西......建议?谢谢!

Private Sub UserForm_Initialize()

With cbomonth
    .AddItem "January"
    .AddItem "February"
End With
With cboyear
    .AddItem "2013"
    .AddItem "2014"
End With
With cboteam
    .AddItem "Team1"
    .AddItem "Team2"
End With
With cbodocument
    .AddItem "Task1"
    .AddItem "Task2"
End With
With ListBox1
.AddItem "Name"
.AddItem "Name"
End With
cboteam.ListIndex = 0
cboyear.ListIndex = 4
cbomonth.ListIndex = 6
cbodocument.ListIndex = 1

End Sub

Private Sub cmdSubmit_Click()

    Dim year As String
    Dim month As String
    Dim days As Integer
    Dim team As String
    Dim n as Long
    Dim tallboxynames As Variant
    Dim tallynewfile As String

    Unload Me

    year = cboyear.Value
    month = cbomonth.Value
    team = cboteam.Value
    document = cbodocument.Value

    TallyPath = "\\network path\Tally of orders\Master Template\"
    TallyPath1 = "\\network path\Tally of orders\" & year & "\"
    TallyPath2 = "\\network path\Tally of orders\" & year & "\" & month & "\"
    TallyTemplate = "Tally_Template_ver1.xls"

If document = "Tally Sheets" Then
    For n = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(n) Then
            tallynewfile = ListBox1.Selected(n) & ".xls"
        Else
            MsgBox "No data from listbox"
        End If
If Len(Dir(TallyPath1, vbDirectory)) = 0 Then
    MkDir TallyPath1
End If
If Len(Dir(TallyPath2, vbDirectory)) = 0 Then
    MkDir TallyPath2
    FileCopy TallyPath & TallyTemplate, TallyPath2 & tallynewfile
End If
    Next n
End If
Exit Sub
End Sub
4

2 回答 2

11

Unload Me 移至程序的末尾

Private Sub cmdSubmit_Click()
    ' code here ...
    Unload Me
End Sub

如果 ListBox1.MultiSelect = 0 (fmMultiSelectSingle) ,则使用 Value获取选定项目:

Me.ListBox1.Value

如果MultiSelect > 0 则使用 Selected 属性,例如:

Private Function GetSelectedItems() As String
    Dim text As String
    Dim i As Integer
    For i = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(i) Then
            text = text & Me.ListBox1.List(i) & vbNewLine
        End If
    Next i
    MsgBox "Selected items are: " & text
    GetSelectedItemsText = text
End Function
于 2013-03-18T20:16:48.267 回答
1

代替

Unload Me

尝试使用

Me.Hide

当您unload删除表单上的所有值时。如果您使用它们,它们将被保留Hide

于 2013-03-18T18:15:39.790 回答