Vba 从“受保护视图”编辑Excel会导致“运行时错误5”

Vba 从“受保护视图”编辑Excel会导致“运行时错误5”,vba,excel,Vba,Excel,我有一个支持宏的Excel 2010电子表格,它运行良好,除非您通过互联网将其发送给某人。如果发送,收件人必须在受保护视图中“启用编辑”,然后抛出错误 运行时错误5 所以我的代码很简单,我正在为世界杯制作一个办公室支架。我所要做的就是让用户在一个匹配中单击一个国家的名称,并在下一个单元格中填充该名称。它是有效的,除非像我说的,我是通过电子邮件发送的 这是我的密码。有人知道我有什么方法可以禁用受保护的视图吗 Private Sub Worksheet_SelectionChange(ByVal T

我有一个支持宏的Excel 2010电子表格,它运行良好,除非您通过互联网将其发送给某人。如果发送,收件人必须在受保护视图中“启用编辑”,然后抛出错误

运行时错误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

看起来宏是在选择预期单元格之前运行的。你可以加一行

如果LenActiveCell<1,则退出sub


到代码的开头。这样,如果未选择所需的单元格,则不会出错,并且在用户选择有效单元格之前不会运行。

是!就这样。谢谢在下面的函数中,我说如果range1为空,则在顶部退出函数。