首页 > 解决方案 > 双击以在访问中输入当前日期/时间

问题描述

我是 VBA 新手,并且有以下代码。双击第一个日期框时,它可以工作,但会给出一个未为第二个日期框定义的错误变量。请指教?

Option Compare Database
Option Explicit
Private Sub CALL1_DATE__DblClick(Cancel As Integer)
CALL1_DATE_ = Now()
End Sub
Private Sub CALL2_DATE_DblClick(Cancel As Integer)
CALL2_DATE_ = Now()
End Sub

标签: vbams-access

解决方案


考虑几个您部分执行的 VBA 编程最佳实践:

  1. 在实际运行任何子程序或函数之前,请务必Debug \ Compile在更改代码后在 VBA IDE 的菜单栏上运行。这将迫使您处理所有语法或编译错误(即,除了运行时错误之外的所有错误)。

  2. 就像你已经做的那样,设置Option Explicit在代码模块的顶部。这迫使程序员在与调用一起使用之前声明每个变量或对象,Dim并避免代码运行时的任何副作用。

  3. 与上述相关,Dim用于每个命名对象来定义其范围和类型。

    Private Sub CALL1_DATE__DblClick(Cancel As Integer)
         Dim CALL1_DATE_ As Date
    
         CALL1_DATE_ = Now()
    End Sub
    
    Private Sub CALL2_DATE_DblClick(Cancel As Integer)
         Dim CALL2_DATE_ As Date
    
         CALL2_DATE_ = Now()
    End Sub
    

    或者,您可以将它们设置为代码模块顶部子例程之外的私有或公共变量:

    Option Compare Database
    Option Explicit
    
    Private CALL1_DATE_ As Date         ' SAME AS: Dim CALL1_DATE_ As Date
    Private CALL2_DATE_ As Date         ' SAME AS: Dim CALL2_DATE_ As Date
    
    Private Sub CALL1_DATE__DblClick(Cancel As Integer)
         CALL1_DATE_ = Now()
    End Sub
    
    Private Sub CALL2_DATE_DblClick(Cancel As Integer)
         CALL2_DATE_ = Now()
    End Sub
    

推荐阅读