将月份名称转换为数字

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")

因为它已保存在您的变量中。

以上是关于将月份名称转换为数字的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中将数字转换为月份名称

将月份名称转换为香草javascript中多种语言的数字

将 Pandas 系列日期时间“月份”数字转换为月份文本 [重复]

尝试将月份编号转换为日期集中的月份名称

在python pandas df中将月份数转换为名称

月份编号到月份名称