文本框日期格式Excel VBA

用户名

我有一个代码,可以让我在textbox1中手动输入日期,然后在useform的日历中选择日期。第二个文本框允许我添加或减去日期。该代码运行完美。

用户表单代码-

Option Explicit 
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    If IsDate(Me.TextBox1.Value) Then Me.Calendar1.Value = Me.TextBox1.Value 
End Sub 
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) 
    Dim dt As Date 
    With Me 
        If IsDate(.TextBox1.Value) Then 
            dt = CDate(.TextBox1.Value) + Val(.TextBox2.Value)
            .TextBox1.Value = dt 
            .Calendar1.Value = dt
        End If 
    End With 
End Sub 

我想以特定格式在textbox1中手动输入日期。

格式为-

dd

ddmmm

ddmmmyyy

我不确定如何编写执行此操作的代码。

想法是使用textbox1中上面指定的3种格式之一输入日期,然后在用户窗体的日历上选择日期。

用户名

在op明确允许格式后进行了编辑

您可以基于以下代码

Option Explicit

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim txt As String, dayStr As String, monthStr As String, yearStr As String
    Dim okTxt As Boolean

    txt = Me.TextBox1.Value
    Select Case Len(txt)
        Case 2
            dayStr = txt
            okTxt = okDay(dayStr)
            monthStr = month(Now)
            yearStr = year(Now)
        Case 5
            dayStr = Mid(txt, 3, 3)
            monthStr = Mid(txt, 3, 3)
            okTxt = okDay(Left(txt, 2)) And okMonth(monthStr)
            yearStr = year(Now)
        Case 7
            dayStr = Mid(txt, 3, 3)
            monthStr = Mid(txt, 3, 3)
            yearStr = Mid(txt, 6, 2)
            okTxt = okDay(Left(txt, 2)) And okMonth(monthStr) And okYear(yearStr)
    End Select
    If Not okTxt Then
        MsgBox "Invalid date" _
               & vbCrLf & vbCrLf & "Date must be input in one of the following formats:" _
               & vbCrLf & vbTab & "dd" _
               & vbCrLf & vbTab & "ddmmm" _
               & vbCrLf & vbTab & "ddmmmyy" _
               & vbCrLf & vbCrLf & "Please try again", vbCritical

        Cancel = True
    Else
        Me.Calendar1.Value = CDate(Left(txt, 2) & " " & monthStr & " " & yearStr)
    End If
End Sub

Function okDay(txt As String) As Boolean
    okDay = CInt(txt) > 0 And CInt(txt) < 31
End Function

Function okMonth(txt As String) As Boolean
    Const months As String = "JANFEBMARAPRMAJJUNJULAUGSEPOCTNOVDEC"
    okMonth = InStr(months, UCase(txt)) > 0
End Function

Function okYear(txt As String) As Boolean
    okYear = CInt(txt) > 0 And CInt(txt) < 200 '<--| set your "limit" years
End Function

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA在文本框中更改日期格式

来自分类Dev

Excel VBA验证文本框中的特定格式

来自分类Dev

在VBA Excel中格式化文本框

来自分类Dev

在ActiveX文本框VBA中将日期格式设置为dd-mmm-yyyy

来自分类Dev

文本框限制错误Excel VBA

来自分类Dev

VBA Excel-文本框验证

来自分类Dev

出现msg框后清除VBA Excel文本框

来自分类Dev

用于填充组合框的 Excel VBA 文本框

来自分类Dev

VBA:查找日期并输入UserForm文本框

来自分类Dev

基于文本框输入的VBA Excel If语句

来自分类Dev

Excel VBA麻烦填写Web文本框

来自分类Dev

Excel VBA:如何使旋转按钮控制多个文本框?

来自分类Dev

Excel VBA,空文本框和CInt

来自分类Dev

Excel VBA文本框时间验证为[h]:mm

来自分类Dev

在图VBA Excel中的节点下方添加文本框

来自分类Dev

基于文本框输入的VBA Excel If语句

来自分类Dev

Excel VBA-检查文本框组

来自分类Dev

Excel VBA获取完整的文本框值

来自分类Dev

使用Excel VBA在文本框中创建公式

来自分类Dev

Excel VBA-使“文本框”输入为可选

来自分类Dev

验证用户表单上的文本框条目(Excel VBA)

来自分类Dev

VBA文本框列

来自分类Dev

Excel VBA日期格式

来自分类Dev

Excel VBA中的日期格式

来自分类Dev

Excel VBA:根据文本框中设置的值在列表框中搜索值

来自分类Dev

Excel VBA:根据文本框中设置的值在列表框中搜索值

来自分类Dev

VBA用户格式文件选择的省略号文本框

来自分类Dev

如何在Excel中使用VBA将文本插入(工作表)文本框?

来自分类Dev

VBA Excel:通过用户表单上的文本框指定导入文本文件的路径