2015-02-09 5 views
0

Я полностью озадачен ... этот макрос смотрит на Range, рисует номер с Rnd, затем создает vlookup, чтобы вернуть цитату и автора каждый раз, когда я открываю книгу (если необходимо).Ошибка выполнения 424: Новая версия и старая версия

Эта ошибка началась только сегодня вечером, но только на сегодняшних версиях. Я могу открыть старые версии и запустить код так, как ожидалось.

Ниже «Сегодня» последняя копия и выдает ошибку времени выполнения, с перерывом происходит на линии определения строки quote:

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 

    '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 работает просто отлично:

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 и помещаю ее в «Сегодня», я продолжаю получать ошибку. Помоги пожалуйста.

+0

«Диапазон», который вы выбираете во втором примере ('' A1 "'), похоже, не существует на этом листе. – meatspace

+1

Вы уверены, что не изменили кодовое имя листа Sheet3? Или объявлена ​​переменная под названием «Приложение»? – Rory

+0

Спасибо @Rory, это был 'Sheet3', в попытке организовать я изменил его на' Sheet03'. Это одна из основных проблем, с которыми я сталкиваюсь, делая слишком много изменений и не всегда помню, что я сделал. Какие-либо предложения? – PlainsWind

ответ

0

Это было решено компанией @Rory; Я небрежно изменил имя листа, но не в коде.

Смежные вопросы