列表框未将所选值分配给“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
答案 0 :(得分:9)
将卸载我移至程序结束:
Private Sub cmdSubmit_Click()
' code here ...
Unload Me
End Sub
要获取所选项使用值,如果ListBox1.MultiSelect = 0 (fmMultiSelectSingle):
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
答案 1 :(得分:1)
而不是
Unload Me
尝试使用
Me.Hide
当您unload
删除表单上的所有值时。如果您使用Hide
,则会保留它们。