Получение ошибки 91 «Переменная объекта или переменная блока не установлена» при использовании .Find (Что: - - PullRequest
0 голосов
/ 10 октября 2019

Я получаю сообщение об ошибке 91 «Переменная объекта или переменная блока не установлена» при использовании .Find (Что: -.

Я хочу найти индексный номер столбца на листе «Обзор» путем поискадля значения в ячейках (2,2) из ​​"dailysheet".

Я получаю сообщение об ошибке в строке lnCol =. Я думаю, что это как-то связано с форматированием или установкой переменной "checkdate".

Любая помощь будет принята с благодарностью!

Sub checkingdate_Click()

Dim overview As Worksheet
Dim dailysheet As Worksheet
Dim datecheck As Range
Dim checkdate As Date
Dim lnRow As Long
Dim lnCol As Long

Set overview = ThisWorkbook.Worksheets("overview")
Set dailysheet = ThisWorkbook.Worksheets("dailysheet")
Set datecheck = dailysheet.Cells(2, 2)

lnRow = 5

overview.Rows("5").EntireRow.Hidden = False 'Adjust potentially

With datecheck
    .NumberFormat = "dd/mm/yyyy"
    '.NumberFormat = "@"
End With

With overview.Rows("5")
    .NumberFormat = "dd/mm/yyyy"
    '.NumberFormat = "@"
End With

checkdate = dailysheet.Cells(2, 2).Value

MsgBox datecheck.Value
MsgBox checkdate

lnCol = overview.Cells(lnRow, 1).EntireRow.Find(What:=checkdate, LookIn:=xlValues, LookAt:=xlWhole,        SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column

MsgBox lnCol

'=====
' END
'=====
overview.Rows("5").EntireRow.Hidden = True 'Adjust potentially

With overview.Rows("5")
    .NumberFormat = "dd"
End With

With overview.Columns("B:ABO")
    .ColumnWidth = 4.57
End With

End Sub

РЕДАКТИРОВАТЬ: Нашел решение, изменив переменную checkdate на dailysheet.Cells (2,2). Скорее, чем. Значения и изменились на LookIn: = xlFormulas, а не LookIn: = xlValues. Я также изменил .NumberFormat Overview.Rows («5»), чтобы даты стали серийными номерами, что позволило выполнять поиск по серийному номеру из «checkdate».

Отредактированная часть кода приведена ниже:

With overview.Rows("5")
    '.NumberFormat = "dd/mm/yyyy"
    .NumberFormat = "@"
End With

checkdate = dailysheet.Cells(2, 2).Formula

MsgBox datecheck.Value
MsgBox checkdate

lnCol = overview.Cells(lnRow, 1).EntireRow.Find(What:=checkdate,      LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column

1 Ответ

0 голосов
/ 10 октября 2019

Нашел решение, изменив переменную checkdate на dailysheet.Cells (2,2) .Formula вместо .Values ​​и изменив ее на LookIn: = xlFormulas вместо LookIn: = xlValues. Я также изменил .NumberFormat Overview.Rows («5»), чтобы даты стали серийными номерами, что позволило выполнять поиск по серийному номеру из «checkdate».

Отредактированная часть кода приведена ниже:

With overview.Rows("5")
    '.NumberFormat = "dd/mm/yyyy"
    .NumberFormat = "@"
End With

checkdate = dailysheet.Cells(2, 2).Formula

MsgBox datecheck.Value
MsgBox checkdate

lnCol = overview.Cells(lnRow, 1).EntireRow.Find(What:=checkdate,      LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False).Column
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...