我正在尝试在单词中创建一个倒数计时器。
在运行代码时,我收到“运行时错误'70':权限被拒绝”代码中的一行:modtimer模块中的time = time + TimeValue("00:00:01")
。
我创建了一个userform和一个名为modtimer的独立模块,代码如下:
单词文档代码:(ThisDocument)在word文档打开时显示计时器
Sub Document_Open()
UserForm1.time_left.Visible = False
UserForm1.Label1.Visible = False
UserForm1.Show
End Sub
userform中给出的代码如下:
Dim g_start As Variant
Dim start As Variant
Dim timeEnd As Variant
Dim g_time As Variant
Dim time As Variant
Dim g_timeEnd As Variant
Dim time_duration As Variant
Dim g_time_duration As Variant
Dim g_End As Boolean
Private Sub btnStart_Click()
start = Now
g_start = Format(start, "hh:mm:ss")
timeEnd = Now + TimeValue("00:30:00")
g_timeEnd = Format(timeEnd, "hh:mm:ss")
time_duration = timeEnd - start
g_time_duration = Format(time_duration, "hh:mm:ss")
Label1.Visible = True
time_left.Caption = g_time_duration
time_left.Visible = True
btnStart.Visible = False
time = start + TimeValue("00:00:01")
time_duration = timeEnd - time
g_time_duration = Format(time_duration, "hh:mm:ss")
time_left.Caption = g_time_duration
modtimer.time_count
End Sub
模块代码如下:
Sub time_count()
If time_duration = TimeValue("00:05:00") Then
MsgBox "Only 5 minutes remaining", vbInformation
End If
time = time + TimeValue("00:00:01")
time_duration = timeEnd - time
If time_duration = TimeValue("00:00:00") Then
g_End = True
End_Exam
End If
'If g_End = True Then
' End_Exam
'End If
g_time_duration = Format(time_duration, "hh:mm:ss")
time_left.Caption = g_time_duration
Call time_count
End Sub
Sub End_Exam()
MsgBox "Examination Time has Expired, Click Ok to Submit", vbCritical
'Documents.Save False, wdOriginalDocumentFormat
Documents.Close wdPromptToSaveChanges, wdPromptUser
End Sub
背后的原因是什么?有人可以帮忙吗?
答案 0 :(得分:1)
Time是一个vba函数(and also a vba statement btw)。
定义具有相同名称的变量不是一个好主意。
在你的userform中,你正在用你的变量重载函数,但是每次使用Time
时你都会在模块中引用标准函数(或语句),而不是userform中的变量。
顺便说一下,默认情况下,userforms中的变量是私有的,因此您无法从模块访问userform中的time
变量,您需要指定Public
而不是Dim
。
变量为Public
后,您就可以访问该变量,但您需要使用Userform1.time
而不是time
。
但是将它命名为time
补充说明:
在模块中,在行
中time = time + TimeValue("00:00:01")
第一次是时间陈述(改变系统时间)
第二次是时间函数(返回当前时间)
所以你试图将系统时间设置为当前时间+ 1秒。
只有拥有提升权限才能执行此操作,因此您获得Runtime error '70': permission denied
。
答案 1 :(得分:0)
Time
是一个VBA属性,它是只读的(它给出了实际时间的简单)。如果您需要变量,请使用其他名称。