【问题标题】:Excel editing from 'Protected View' causes 'run-time error 5'从“受保护的视图”编辑 Excel 会导致“运行时错误 5”
【发布时间】:2014-07-25 17:27:18
【问题描述】:

我有一个启用宏的电子表格 (Excel 2010),它可以正常工作,除非您通过 Internet 将其发送给某人。如果发送它,收件人必须在受保护的视图中“启用编辑”,然后它会引发错误。

“运行时错误 5”

所以我的代码很简单,我正在为世界杯制作一个办公室支架。我要做的就是让用户在比赛中单击一个国家/地区名称,然后将该名称填充到下一个单元格中。它有效,除非像我说的那样,我通过电子邮件发送。

这是我的代码。有谁知道我可以通过什么方式禁用受保护的视图?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r, c, n As Integer
If InRange(ActiveCell, Range("B2:B37")) Or InRange(ActiveCell, Range("F2:F37")) _
Or InRange(ActiveCell, Range("J2:J37")) Or InRange(ActiveCell, Range("N2:N37")) _
Or InRange(ActiveCell, Range("R2:R37")) Or InRange(ActiveCell, Range("V2:V37")) Then
   r = ActiveCell.Row
   c = ActiveCell.Column
   If r Mod 2 = 1 Then
       Cells(r - 1, c + 1).Value = Cells(r, c).Value
   Else
       Cells(r, c + 1).Value = Cells(r, c).Value
   End If
End If
End Sub

然后是我的函数:

Private Function InRange(range1 As Range, range2 As Range) As Boolean
Set intersectrange = Application.Intersect(range1, range2)
InRange = Not intersectrange Is Nothing
Set intersectrange = Nothing
End Function

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    看起来宏在选择预期的单元格之前正在运行。您可以添加该行

    如果 Len(ActiveCell)

    到代码的开头。这样,如果未选择预期的单元格,它就不会出现错误,并且在用户选择有效的单元格之前不会运行。

    【讨论】:

    • 是的!就是这样。谢谢。在下面的函数中,我在顶部说“If range1 Is Nothing Then Exit Function”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    相关资源
    最近更新 更多