使用日期输入宏时,下标超出范围

时间:2018-04-18 05:38:22

标签: excel vba

不可否认,这里有一位新手/新手,但过去曾成功修改过一些代码。运行一个宏来调出UI框以输入日期和客户端预订字段,该文件的先前版本没有问题,但是由于将宏等移植到2016 excel文件中,我现在甚至在以前工作的副本上都会出现此错误。已测试和以前的文件在我自己以外的所有其他登录/计算机上正常工作。

接收错误9,下标超出范围指向以下代码,该代码读取隐藏工作表上生成的日历;

代码是;

'~~> Ok Button
Private Sub CommandButton53_Click()
   BookedInDate = Me.TextBox1.Text

   Dim Day As String
   Dim Month As String
   Dim Year As String

   Day = Split(Me.TextBox1.Text, "/")(0)
    Month = Split(Me.TextBox1.Text, "/")(1)
     Year = Split(Me.TextBox1.Text, "/")(2)

   BookedDate = DateSerial(Year, Month, Day)

'   ActiveSheet.Range("BE" & cell.row).Value = Me.txtTimeIn.Text

   varTimeIn = Replace(Me.txtTimeIn.Text, ".", ":")



   'BookedDate = dateserial(me.TextBox1.
   'WSLoc2.Close


 '  WSLoc2.Delete


   Unload Me
   End Sub

绝对惹恼了我的大脑,试图弄清楚为什么我现在在以前的功能工作簿上收到这个错误,任何建议都会非常感激。调试工具指向我

Month = Split(Me.TextBox1.Text, "/")(1)

split函数引用的代码:

Private Sub UserForm_Activate()
 Dim dat As Date
    dat = DateAdd("m", 1, DateSerial(Val(Format(CommandButton45.Caption, "YYYY")), Val(Format(CommandButton45.Caption, "MM")), 1))
'    GenerateCal Format(Now(), "dd/mm/yyyy")
    CommandButton45.Caption = Format(Now(), "mmm - yyyy")
    Me.TextBox1.Text = Format(Now(), "d/mm/yyyy")

1 个答案:

答案 0 :(得分:0)

Format Function (Visual Basic for Applications)州的文档:

  

用户定义的日期/时间格式(格式函数)下表   标识可用于创建用户定义的日期/时间的字符   格式:

     

(/)日期分隔符。在某些区域设置中,其他字符   可用于表示日期分隔符。日期分隔符   分隔日期值格式化的日,月和年。该   在格式化输出中用作日期分隔符的实际字符是   由您的系统设置决定。

这意味着日期格式字符串中的/依赖于语言环境。例如:

Dim s As String
s = Format(Now(), "d/mm/yyyy")
MsgBox s

在我的德语Excel中今天导致s = 18.04.2018,因为在我的德语区域设置中,点.是日期分隔符。

如果你总是希望斜杠是日期字符串中日月和年之间的分隔符,那么请使用:

Dim s As String
s = Format(Now(), "d\/mm\/yyyy")
MsgBox s

反斜杠掩盖了斜线没有特殊含义的"日期分隔符"