2016-08-22 2 views
1

Я работаю через ниже сценарий, чтобы в конечном итоге вытащить диапазон данных из запроса данных на отдельный лист на основе значения, введенном в inputbox, однако я продолжаю сталкиваться с 424 error - требуется объект.424 объекта Необходимой ошибка VBA ВПР

Чтобы проверить это работает, я пытаюсь отобразить окно сообщения, так что я могу начать следующий этап, однако сценарий держит неудачу в Vlookup

Private Sub Workbook_Open() 


Dim NextRelease As String 

If MsgBox("Would you like to promote the next release in batch?", vbQuestion + vbYesNo, "Promote the next release?") = vbYes Then 
NextRelease = InputBox("Please enter the date of the next release", "Next Release", "DD/MM/YYYY") 
ReleaseDate = Application.WorksheetFunction.VLookup(NextRelease, TRELINFO.Range("A2:B4"), 1, False) 
If NextRelease = ReleaseDate Then 
MsgBox ("Working") 

Пожалуйста, может кто-то дать ответ на вопрос, почему это происходит и, надеюсь, решить эту проблему. Спасибо заранее!

+0

какая строка ошибка? –

+0

'TRELINFO' это ошибка. У вас есть листок с кодовым именем 'TRELINFO' или у вас есть переменная типа рабочего листа, которая настроена на любой рабочий лист? – cyboashu

+0

@cyboashu - Название листа - TRELINFO, а запрос данных также называется TRELINFO. Чтобы избежать путаницы, я теперь временно переименовал лист в TRELINFO2, но при этом возвращается одна и та же ошибка. – Paul

ответ

0

Попробуйте добавить прежде, чем вы обратитесь к рабочему листу. Замена «Sheet1» на имя вашего листа TRELINFO.

Редактировать: VLOOKUP вернет ошибку, если в первой строке таблицы нет значения, которое соответствует пользовательскому вводу. Ниже работает для меня после тестирования на столе (с форматированием даты) в excel.

Private Sub Workbook_Open() 

Set trelinfo = Sheets("TRELINFO") 
Dim NextRelease As Long 

If MsgBox("Would you like to promote the next release in batch?", vbQuestion + vbYesNo, "Promote the next release?") = vbYes Then _ 
NextRelease = CLng(CDate(InputBox("Please enter the date of the next release", "Next Release", "DD/MM/YYYY"))) 

checkblank = WorksheetFunction.CountIf(trelinfo.Range("A2:A4"), NextRelease) 

If checkblank <> 0 Then 
    ReleaseDate = Application.WorksheetFunction.VLookup(NextRelease, trelinfo.Range("A2:B4"), 1, False) 
    If NextRelease = ReleaseDate Then _ 
    MsgBox "Working" 

Else 
    MsgBox "Release not found" 

End If 

End Sub 
+0

Я попытался добавить 'Set TRELINFO = Worksheets (" TRELINFO ")', но та же ошибка возвращается. – Paul

+0

Я только что заметил, добавив выше, сообщение об ошибке, которое возвращается, теперь является ошибкой 1004 - Определено приложение или ошибка с определением объекта – Paul

+0

Ошибка 1004, вероятно, из-за того, что ваш VLOOKUP не сможет вернуть значение. Вы пробовали представить значение, которое определенно находится в A2 до A4? – Rory

0

Убедитесь, что лист TRELINFO существует или назван правильно. Кажется, что функция не может найти этот лист.

+0

Я проверил тройную проверку имени листа и могу подтвердить, что все правильно. – Paul

+0

Заметил 1004 ошибку в других комментариях, убедитесь, что это значение существует в диапазоне поиска. VLookup выдаст ошибку 1004, если значение будет возвращать #NA или #Value при ее использовании в электронной таблице. – Kevin

1

NextRelease является строкой, вы не можете посмотреть, что в таблице даты без первого преобразования его в Double.

Поскольку вы не возвращаете значение из своего VLOOKUP, вы можете просто использовать MATCH.

Устранение ошибки WorksheetFunction позволяет вам проверить возвращаемое значение ошибки вместо повышения ошибки во время выполнения, если нет совпадения.

Private Sub Workbook_Open() 

Dim NextRelease As String 

If MsgBox("Would you like to promote the next release in batch?", _ 
      vbQuestion + vbYesNo, "Promote the next release?") = vbYes Then 

    NextRelease = InputBox("Please enter the date of the next release", _ 
          "Next Release", "DD/MM/YYYY") 

    If not IsError(Application.Match(CDbl(DateValue(NextRelease), _ 
        TRELINFO.Range("A2:B4"), 0) Then 

     MsgBox ("Working") 
0

Просто используйте это вместо

ReleaseDate = Application.VLookup(NextRelease, Worksheets("trelinfo").Range("A2:B4"), 1, False) 

Я столкнулся с этой ошибки перед при использовании функции ВПР. Я просто удаляю WorksheetFunction, тогда он работает

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