循环通过多选列表框值来创建和命名工作簿

Mik*_*ike 4 excel vba

列表框未将所选值分配给"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
Run Code Online (Sandbox Code Playgroud)

dee*_*dee 9

卸载我移动到过程的结尾:

Private Sub cmdSubmit_Click()
    ' code here ...
    Unload Me
End Sub
Run Code Online (Sandbox Code Playgroud)

要获取所选项目,请使用 List,如果ListBox1.MultiSelect = 0(fmMultiSelectSingle):

Me.ListBox1.Value
Run Code Online (Sandbox Code Playgroud)

如果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
Run Code Online (Sandbox Code Playgroud)