我有一个用户表单,询问数据输入适用于哪个月。我使用了一个带有jan,feb,mar等的combibox作为可能的答案。
现在我想使用这些答案来引用工作表索引编号Jan sheets(2)
,feb = sheets(3)
等。
我该怎么做?
Private Sub Userform_Initialize()
'Empty maandbox1
MultiPage1.Value = 0
Maandbox.Value = ""
With Maandbox
.AddItem "Jan"
.AddItem "Feb"
.AddItem "Mar"
'etc
End With
'Set Focus on Monthbox
Maandbox.SetFocus
End Sub
然后像:
dim ws as worksheet
dim i as integer
i = Monthbox.Value
Set ws = ActiveWorkbook.Worksheets(i + 1)
答案 0 :(得分:0)
i = Monthbox.Listindex + 2
应该这样做,因为listindex从0开始。
答案 1 :(得分:0)
您可以使用MonthName()
。它需要Long值并返回其月份。因此,1为January
,2为February
等。要获取当月的前三个字母,请使用Left(value, 3)
:
Public Sub TestMe()
Dim cnt As Long
For cnt = 1 To 12
Debug.Print MonthName(cnt)
Debug.Print Left(MonthName(cnt), 3)
Next cnt
End Sub
在你的情况下:
Dim ws As Worksheet
Dim i As Long
i = Monthbox.Value
Set ws = ActiveWorkbook.Worksheets(Left(MonthName(cnt + 1), 3))
答案 2 :(得分:0)
您可以使用DateValue function返回虚拟日期并从中拉出整数月号:
Dim dt as Date, i as Long
dt = DateValue(Maandbox.Value & " 1," & Format(Now(),"YYYY"))
i = Format(dt, "M") + 1
我通常只将日期设置为该月的第一天。格式(现在()," YYYY")只需将当前日期的日期变为一年即可完成DateValue函数参数。我发现这种方法很灵活,因为它创建了一个日期,您现在可以格式化,但是您需要它。例如,如果您需要完整的月份描述,您现在可以选择:
RunMonth = Format(dt, "MMMM")
因为它已保存在您的变量中。