使用自定义日历表单的输出

时间:2015-02-23 16:59:13

标签: excel vba excel-vba

我正在尝试使用this userform来获取日期,但我不知道如何将其设置为今天显示为默认值(始终是18/08/2012),我不知道如何实际获取它将所选日期传递给当前子。

我找不到在线提到的博客。

Sub Macro1()
    UserForm1.TextBox1.Text = Date
    UserForm1.Show
    ActiveCell.Value = UserForm1.TextBox1.Value
End Sub

我正在尝试使用上面的代码来测试它。

1 个答案:

答案 0 :(得分:1)

GenerateCal Sub中,在底部添加这两(2)行 这些代码行将初始化所述控件的值。

CommandButton45.Caption = Format(.Range("A1").Value, "mmm - yyyy")
TextBox1.Text = DateSerial(Val(Format(CommandButton45.Caption, "YYYY")), _
    Val(Format(CommandButton45.Caption, "MM")), 1)

然后改变这一行:

.Range("a1").Value = Application.Text(dt, "mmmm yyyy")

到这一行:

.Range("a1").Value = Application.Text(StartDay, "mmmm yyyy")

dt的类型为字符串,因此会产生不同的结果。

我也相信明确的总是更好所以我建议你在GenerateCal Sub。

之上添加这个声明。
Dim StartDay As Date, FinalDay As Date
Dim DayOfWeek As Integer, CurYear As Integer, CurMonth As Integer, x As Integer
Dim Cell As Range
Dim RowCell As Long, ColCell As Long

下一个问题是删除UserForm_Initialize Sub生成的临时表。看来你不能删除不可见的表格(我使用XL2013,我不确定它是否适用于其他版本)。所以你需要改变它:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
'    On Error Resume Next
    Application.DisplayAlerts = False
    With ws
        .Visible = xlSheetVisible
        .Delete
    End With
    Application.DisplayAlerts = True
'    On Error GoTo 0
End Sub

请注意,我删除了 OERN OEG0 ,因为我觉得不需要这样做。

最后,要清除它,您需要在属性窗口中清除CommandButton45TextBox1的手动输入标题。在正确合并所有更改后,您应该在Userform1中获得正确的日期。

其他

您正在正确访问TextBox1的值。但如果你想传递某个地方,我建议编辑这段代码。

'~~> Ok Button
Private Sub CommandButton53_Click()
    MsgBox TextBox1.Text
End Sub

<强>示例:

Private Sub CommandButton53_Click()
    ActiveCell.Value = TextBox1.Value
End Sub