代码从Workbook_Open-event中止,并打开两个相同工作簿的副本

时间:2016-11-04 06:16:10

标签: excel vba excel-vba

我有一个宏,它在我打开工作簿时运行,直到最近才运行良好。整个事情是相当大的,我不确定是宏本身导致了什么问题,但它在下面的代码块中的Set ovn3 = Range(startpunkt, sluttpunkt)行中止:

If fra <= aktivtområde.Cells(aktivtområde.Rows.Count, 1) Then
    Set startpunkt = aktivtområde.Find(What:=DateValue(fra), LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=False, After:=aktivtområde.Cells(aktivtområde.Rows.Count, 1))
    If startpunkt Is Nothing Then
      Set startpunkt = aktivtområde.Cells(1, 1)
    End If
    Set sluttpunkt = aktivtområde.Find(What:=DateValue(til), LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=False, After:=aktivtområde.Cells(aktivtområde.Rows.Count, 1))
    If sluttpunkt Is Nothing Then
      Set sluttpunkt = aktivtområde.Cells(aktivtområde.Rows.Count, 1)
    End If
    Set ovn3 = Range(startpunkt, sluttpunkt)
  End If

尝试打印代码块中使用的一些变量,我可以验证start-和sluttpunkt是有效的单个单元格范围,但在尝试引用从一个到另一个的范围时会得到相同的错误:

enter image description here

此外,当我单击任务栏中的Excel符号以在codeview /工作簿之间切换时,似乎有两个相同工作簿的实例打开 - 一个在protected中,一个在“常规”视图中:

enter image description here

我怀疑这可能是我遇到问题的原因,但我不确定如何规避它。

我的公司最近从Office 2013升级到Office 2016,这时我怀疑问题出现了。

这里的任何人都可以提供有关如何让代码再次正常运行的任何见解吗?

1 个答案:

答案 0 :(得分:0)

您应该限定您所指的表格,即

Set ovn3 = aktivtområde.Range(startpunkt, sluttpunkt).

如果没有资格,它可能会尝试在两张单元格之间的一张纸上访问一个范围。