运行时错误'70':权限被拒绝的VBA字

时间:2018-04-20 07:34:30

标签: vba ms-word word-vba permission-denied

我正在尝试在单词中创建一个倒数计时器。

在运行代码时,我收到“运行时错误'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

背后的原因是什么?有人可以帮忙吗?

2 个答案:

答案 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属性,它是只读的(它给出了实际时间的简单)。如果您需要变量,请使用其他名称。