使用excel vba为动态构建的文本框名称赋值

时间:2016-09-30 05:30:06

标签: excel vba excel-vba

我将月视图控件用作名为 dateform 的单独用户窗体中的压缩程序。

我在excel vba用户窗体上有多个日期字段,名为 Update_Entries_New ,因此我无法直接引用点击月视图的日期,如下所示(尽管下面的直接引用效果非常好)。

Update_Entries_New.Invoice_date.Value = DateClicked

要解决此问题,我将动态生成Update_Entries_New.Invoice_date.Value以访问项目中所有用户表单中所有日期字段中的monthview calander。

当我使用动态创建的文本框名称(从Excel工作表单元格中选取)时,单击月视图日期时,calander的文本框值不会更新。任何线索,为什么会这样。

我当前的代码

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
    Dim test
       'dynamically referencing of "Update_Entries_New.Invoice_date.Value" picked from 'Sheets("Data").Range("m2").Value' doesn't update the value on userform textbox
       controlname = Sheets("Data").Range("m2").Value
       controlname = DateClicked

       'using textbox name directly works fine with below code
       Update_Entries_New.Invoice_date.Value = DateClicked

      Unload dateform
End Sub

1 个答案:

答案 0 :(得分:0)

我使用以下代码完成了这项工作:

Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
    test = Sheets("Data").Range("m1").Value
    CB = Sheets("Data").Range("m2").Value
    CBVal = DateClicked

    If test = "Update_Entries_New" Then
        For Each contr In Update_Entries_New.Controls
                If contr.Name = CB Then
                    contr.Value = CBVal
                End If
        Next
    End If

    Unload dateform
End Sub