【问题标题】:Calling a userform multiple times from within another userform - calendar date picker从另一个用户表单中多次调用用户表单 - 日历日期选择器
【发布时间】:2019-11-21 13:04:03
【问题描述】:

我正在使用由 Siddharth Rout 创建的日历:How can I create a calendar input in VBA Excel? 我有一个用户表单,它位于具有多个日期字段的基本数据库之上。

我想多次使用一个日历表单,即在用户表单上有一个 cmdbutton1 调用日历并将日期放在 label1 中,然后是一个 cmdbutton2 调用相同的日历表单来填充 label2。显然,这些日期会有不同。

我尝试对变量进行各种形式的临时绑定,但没有任何效果。任何帮助将不胜感激!

【问题讨论】:

  • 嗨,欢迎来到 SO。由于我们不是代码编写服务,您必须向我们提供您尝试过的内容(即您的代码)并提供有关您所面临问题的详细信息。然后,我们可以帮助指导您解决问题。阅读以下内容可能会有所帮助:how to ask a question
  • 嗨,扎克,感谢您的欢迎。我阅读了如何提出问题,但是 Sid 日历中的代码很难解压缩成一个简洁的问题!在我尝试学习时,我不希望有人为我编写代码,但我不明白如何在这种情况下临时设置值。而且我不知道在哪里看!我将尝试模拟我所追求的东西,但再次简单的指导会更好。
  • 我想,从头开始;你成功启动 Sid 的日历了吗?或者这就是你想要做的?
  • 您好 Zac,感谢您抽出宝贵时间,启动 Sid 的日历并将其集成到我用来编辑锁定数据库的用户表单中完全没问题。我可以使用 cmdbutton1 启动日历,并将MsgBox Label6.Caption, vbInformation, "Date selected" 编辑为userform1.label1.text=calendar.label6.text 或一些变体。问题来了,我希望有多个 cmdbuttons(1,2,3 等)来分别调用日历并填充 userform(1,2,3 等)。我正在尝试在下面梳理出 Toms 解决方案。
  • 澄清一下,我有一个 userform1 和 userform1.cmdbutton1 调用日历,结果返回到 userform1.label1,userform1.cmdbutton2 结果进入 userform1.label2等

标签: excel vba userform


【解决方案1】:

您可以创建UserForm 的实例,在需要时进行设置并在需要时显示。从这些实例中,您可以修改子用户表单

Private Sub CommandButton1_Click()
    Dim ufrm2 As UserForm2

    Set ufrm2 = New UserForm2

    ufrm2.Label1.Caption = Me.CommandButton1.Caption

    ufrm2.Show
End Sub

Private Sub CommandButton2_Click()
    Dim ufrm2 As UserForm2
    Set ufrm2 = New UserForm2

    ufrm2.Label1.Caption = Me.CommandButton2.Caption

    ufrm2.Show
End Sub

给予:

【讨论】:

  • 与其重复相同的代码,不如使用 UDF 来启动表单并显示它并从每次点击中调用 UDF
  • @Zac 同意 - 这样做更多是为了证明我可以使用相同的 UserForm 并进行不同的自定义。
  • 票价点。我确实喜欢这个演示!我必须尽快安装其中一个应用程序
  • @Zac 我使用 ScreenToGif
  • 谢谢。无法在工作机器上安装,但可以在我的笔记本电脑上安装.. 非常方便
【解决方案2】:

我在看这个问题,我想我已经找到了@Pete_B_C 正在寻找的答案。我已经在用户窗体“frmCalendar”中添加了一些代码以获得所需的结果。

'~~> Insert Selected date
Private Sub DTINSERT_Click()
    If Len(Trim(Label6.Caption)) = 0 Then
        MsgBox "Please select a date first", vbCritical, "No date selected"
        Exit Sub
    End If
    *'~~> Change the code here to insert date where ever you want
     If UserForm1.Visible = True Then
        'do something
        UserForm1.TextBox1 = Label6.Caption
    End If
    
    If UserForm3.Visible = True Then
        'do something
        UserForm3.TextBox12 = Label6.Caption
    End If*

     
     Unload Me
End Sub

我使用了隐藏和显示用户表单的选项,具体取决于正在使用的用户表单。如果有人知道如何以比我想象的更好的方式做到这一点,请告诉我

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 2015-06-20
    • 2021-10-10
    • 1970-01-01
    相关资源
    最近更新 更多