You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

点击CommandButton7弹出日历并将选中日期填入TextBox13的实现方案

解决CommandButton7点击弹出日历并填入TextBox13的问题

核心思路

之前双击单元格的逻辑是给单元格赋值,现在要改成给TextBox13赋值,关键是让日历窗体frm_Cal正确传递选中的日期,再把值写入目标文本框。

步骤1:修改日历窗体frm_Cal的代码

假设你的日历窗体里有一个确认按钮(比如CommandButton1)用来确认选中日期,添加以下代码:

Private Sub CommandButton1_Click()
    ' 这里假设用的是MonthView控件,换成你实际的日历控件(比如DTPicker)
    Me.Tag = Me.MonthView1.Value ' 把选中日期暂存在窗体的Tag属性
    Me.Hide ' 隐藏窗体,不要直接卸载,否则值会丢失
End Sub

' 处理用户直接关闭窗体的情况
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = vbFormControlMenu Then
        Me.Tag = "" ' 清空Tag,标记未选择日期
        Me.Hide
        Cancel = True ' 取消默认卸载操作
    End If
End Sub

步骤2:编写CommandButton7的点击事件代码

根据TextBox13的位置,分两种情况:

情况1:CommandButton7和TextBox13在同一个用户窗体上

Private Sub CommandButton7_Click()
    ' 模态显示日历窗体,确保用户操作完再继续执行
    frm_Cal.Show vbModal
    
    ' 检查是否有选中的有效日期
    If IsDate(frm_Cal.Tag) Then
        ' 格式化日期后填入TextBox13,格式可按需修改(比如"mm/dd/yyyy")
        Me.TextBox13.Value = Format(frm_Cal.Tag, "yyyy-mm-dd")
    End If
    
    ' 最后卸载窗体释放资源
    Unload frm_Cal
End Sub

情况2:CommandButton7和TextBox13在工作表上(ActiveX控件)

Private Sub CommandButton7_Click()
    frm_Cal.Show vbModal
    
    If IsDate(frm_Cal.Tag) Then
        ' 替换Sheet1为你的实际工作表名称
        Sheet1.TextBox13.Value = Format(frm_Cal.Tag, "yyyy-mm-dd")
    End If
    
    Unload frm_Cal
End Sub

常见问题排查

  • 控件名称错误:检查TextBox13、CommandButton7、frm_Cal的名称是否和实际一致,避免拼写错误。
  • 日历控件类型不匹配:如果你的日历不是MonthView,比如用的是DTPicker,把Me.MonthView1.Value换成Me.DTPicker1.Value。
  • 窗体未正确传递值:不要在日历窗体的确认按钮里用Unload Me,要用Me.Hide,否则窗体卸载后Tag属性的值会丢失。

内容的提问来源于stack exchange,提问作者Spark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 21:03:28