将月份名称转换为数字
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将月份名称转换为数字相关的知识,希望对你有一定的参考价值。
我有一个用户表单,询问数据输入适用于哪个月。我使用了一个带有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)
答案
i = Monthbox.Listindex + 2
应该这样做,因为listindex从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))
另一答案
您可以使用DateValue function返回虚拟日期并从中拉出整数月份数:
Dim dt as Date, i as Long
dt = DateValue(Maandbox.Value & " 1," & Format(Now(),"YYYY"))
i = Format(dt, "M") + 1
我通常只将日期设置为本月的第一天。格式(Now(),“YYYY”)只是将当前日期的日期变为一年,以完成DateValue函数参数。我发现这种方法很灵活,因为它创建了一个日期,您现在可以格式化,但是您需要它。例如,如果您需要完整的月份描述,您现在可以选择:
RunMonth = Format(dt, "MMMM")
因为它已保存在您的变量中。
以上是关于将月份名称转换为数字的主要内容,如果未能解决你的问题,请参考以下文章