首页 > 解决方案 > 当 VBA 中的组合框更改时,在多个文本框中添加月份名称

问题描述

我有一个带有月份名称列表和十二个文本框的组合框。

我想编写允许我在组合框中选择月份名称时添加月份名称的代码。

当您在组合框中选择一月时,textbox1 的值为一月,textbox2 的值为二月,依此类推...

我怎样才能完成这项任务?

标签: vba

解决方案


假设:组合框中的月份从一月开始按顺序排列(即一月索引 0,二月索引 1)。两个答案都使用 2000 年的通用日期并选择了月份,并在其中添加了一个月.. 将在 12 月之后循环回到 1 月。

此代码还假定文本框在表单上是有序的。

    Private Sub cboMonth_Change2()
        Dim TempDate As Date
        TempDate = "2000-" & cboMonth.ListIndex + 1 & "-01"

        Dim oControl As Control
        For Each oControl In UserForm1.Controls
            If TypeName(oControl) = "TextBox" Then
                oControl.Text = Format(TempDate, "MMMM")
                TempDate = DateAdd("M", 1, TempDate)
            End If
        Next
    End Sub

这是一个稍微手动的过程,但您可以指定哪个文本框得到什么。

    Private Sub cboMonth_Change()
        Dim TempDate As Date
        TempDate = "2000-" & cboMonth.ListIndex + 1 & "-01"

        TextBox1.Text = Format(DateAdd("M", 0, TempDate), "MMMM")
        TextBox2.Text = Format(DateAdd("M", 1, TempDate), "MMMM")
        TextBox3.Text = Format(DateAdd("M", 2, TempDate), "MMMM")
        ...
    End Sub

推荐阅读