Vba 运行时错误424:新版本和旧版本

Vba 运行时错误424:新版本和旧版本,vba,excel,runtime-error,Vba,Excel,Runtime Error,我完全困惑了…这个宏查看一个范围,用Rnd绘制一个数字,然后创建一个vlookup,在每次打开工作簿时带回一个引用和作者(如果适用) 这个错误今天晚上才开始,但只在今天的版本上出现。我能够打开旧版本并按预期运行代码 下面是今天的最新副本,并生成运行时错误,中断发生在定义字符串引号的行上: 虽然2/6版本运行良好: Private Sub Workbook_Open() Dim sht As Object Dim RandNumb As Integer Dim quote As String D

我完全困惑了…这个宏查看一个范围,用Rnd绘制一个数字,然后创建一个vlookup,在每次打开工作簿时带回一个引用和作者(如果适用)

这个错误今天晚上才开始,但只在今天的版本上出现。我能够打开旧版本并按预期运行代码

下面是今天的最新副本,并生成运行时错误,中断发生在定义字符串引号的行上:

虽然2/6版本运行良好:

Private Sub Workbook_Open()

Dim sht As Object
Dim RandNumb As Integer
Dim quote As String
Dim author As String
Dim ws As Worksheet

Set ws = Worksheets("Home")

  'Make "Home" Sheet visible and select
ws.Visible = True
ws.Select
Range("A1").Select

  'Search for all sheets not named "Home" and hide them
For Each sht In Worksheets
    If sht.Name <> "Home" Then
    sht.Visible = xlSheetHidden
    End If
Next sht

  'Create random number, then vlookup based off number

RandNumb = Int((56 - 1 + 1) * Rnd + 1)
quote = Application.WorksheetFunction.VLookup(RandNumb, Sheet3.Range("ba101:bc465"), 2, False)
author = Application.WorksheetFunction.VLookup(RandNumb, Sheet3.Range("ba101:bc465"), 3, False)

If quote <> Empty Then
    MsgBox quote & vbNewLine & vbNewLine & " - " & author, vbOKOnly, "Quote of the day"
End If

End Sub

这些代码在我看来没有什么不同。即使我从2/6复制版本并将其放入今天的版本中,我仍然会收到错误。请帮忙。

这一问题由@Rory解决;我不小心更改了工作表的名称,但没有更改代码

您在第二个示例A1中选择的范围似乎不存在于该工作表中。您确定没有更改工作表3工作表的代号吗?或者声明了一个名为Application的变量?谢谢@Rory,它是Sheet3,为了组织,我将它改为Sheet03。这是我遇到的主要问题之一,我做了太多的改变,并且不总是记得我做了什么。有什么建议吗?你的意思是除了更小心之外;我建议在开始编写代码之前使用更有意义的代码名。如果在此之后确实需要更改它们,请使用“查找/替换”对话框更新代码。
Private Sub Workbook_Open()

Dim sht As Object
Dim RandNumb As Integer
Dim quote As String
Dim author As String
Dim ws As Worksheet

Set ws = Worksheets("Home")

  'Make "Home" Sheet visible and select
ws.Visible = True
ws.Select
Range("A1").Select

  'Search for all sheets not named "Home" and hide them
For Each sht In Worksheets
    If sht.Name <> "Home" Then
    sht.Visible = xlSheetHidden
    End If
Next sht

  'Create random number, then vlookup based off number

RandNumb = Int((56 - 1 + 1) * Rnd + 1)
quote = Application.WorksheetFunction.VLookup(RandNumb, Sheet3.Range("ba101:bc465"), 2, False)
author = Application.WorksheetFunction.VLookup(RandNumb, Sheet3.Range("ba101:bc465"), 3, False)

If quote <> Empty Then
    MsgBox quote & vbNewLine & vbNewLine & " - " & author, vbOKOnly, "Quote of the day"
End If

End Sub