【问题标题】:UserForm adding DatePicker to Monthview and populating ActiveCell with dataUserForm 将 DatePicker 添加到 Monthview 并用数据填充 ActiveCell
【发布时间】:2014-07-03 16:25:06
【问题描述】:

我在 VBA 中使用 MonthView 表单,它允许用户右键单击并选择 InsertDate,然后从表单中选择日期,然后将其填充到活动单元格中。这段代码工作正常。问题是我还需要添加日期(即 2014 年 4 月 23 日 18:11)之后的时间(军事)。

我在 VBA 中使用 DateTimePicker 表单并将其添加到表单中。现在我有一个月视图和一个自定义格式为 HH:mm 的 DT Picker。下面列出了整个用户表单的代码。代码的另一部分在“ThisWorkbook”中,它只是构建上下文菜单按钮“插入日期”并附加日历和显示日历的模块。我的问题在 Sub DTPicker 中。我希望 MonthView 和 DTPicker 的值都使用上述格式填充活动单元格。有什么建议吗?

提前致谢!!

`Private Sub CommandButton1_Click()
Unload Me
End Sub


Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
On Error Resume Next

??????


End Sub


Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
On Error Resume Next
    ActiveCell.value = DateClicked
    Unload Me
End Sub

Private Sub UserForm_Click()

End Sub


Private Sub UserForm_Initialize1()
    If IsDate(ActiveCell.value) Then
        Me.MonthView1.value = ActiveCell
    Else
        Me.MonthView1.value = Now
    End If
End Sub



Private Sub UserForm_Activate()
    With frmCalendar
        .Top = Application.Top + 340
        .Left = Application.Left + 345
    End With
End Sub`

【问题讨论】:

    标签: vba excel datepicker monthcalendar


    【解决方案1】:

    我不确定日期和时间选择器将插入值的确切位置以及它们返回的值的确切外观,但您可以尝试以下方式格式化为您需要的 waat:

    将DT Picker返回的值设置为a变量,然后

    b = Format(a, "m/d/yyyy HH:mm")

    现在根据需要将b 的值写入单元格。

    希望对您有所帮助:)

    编辑:

    这个呢:

    a = Worksheets("Sheet1").Range("A1") ' value from MonthView
    b = Worksheets("Sheet1").Range("B1") ' value from Date Picker
    
    c = Format(a + b, "m/d/yyyy HH:mm") ' combined value in the requested format.
    
    Worksheets("Sheet1").Range("D5").Value = c
    

    Screen http://im68.gulfup.com/b01sVD.png

    编辑 2:

    我已经浏览了您在 cmets 中发布的链接中的视频,假设您想要插入当前时间以及所选日期,您可以更新代码的以下部分:

    Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
    On Error Resume Next   
    a = DateClicked
    b = Time
    c = Format(a + b, "m/d/yyyy HH:mm") ' combined value in the requested format.
    ActiveCell.value = c
    Unload Me
    End Sub
    

    这样,当用户选择一个日期时,当前时间也会以 m/d/yyyy HH:mm 格式添加到该日期。

    如果这对你有用,请告诉我。

    【讨论】:

    • 我无法将 DT 选择器设置为该格式,因为 DT 选择器仅用于该时间。我正在使用 MonthView 作为日期。我正在尝试定义和初始化 DTPicker 以获取用户输入的值,然后本质上将 MonthView 值与 DTPicker 值连接到活动单元格中。有意义吗?
    • 给我几分钟,我想我明白了。我将编辑我的答案。
    • @SinisterSwan 答案已编辑!
    • 这是正确的逻辑。我不能在 A1 或 B1 中有其他值。值 (m/d/yyyy HH:mm) 需要放在“H8”中,或者我设置为 ActiveCell 的值——这是代码中唯一可以存在的值。问题仍然在于用户表单。我现在有表单设置,您右键单击以访问表单,但它仅适用于 MonthView——如果您单击任何日期,它将插入到 ActiveCell 中。时间计数器位于底部,需要添加到日期中。当这两个都输入时,也许我需要在底部有一个 Ok Command 按钮。
    • 以上只是一个示例,您可以将MonthView返回的值设置为a和DT Picker返回的值b然后使用上面的合并到c您可以将c 的值写入您喜欢的任何单元格中。它不工作吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多