Так ничего не выскакивает.
Короче, вот кусок кода:
Код |
---|
For Each Sht In WB.Sheets 'цикл по всем листам в файле
Set Rng = Sht.Cells.Find(d, , xlFormulas, xlWhole) 'xlWhole - ячейка целиком, xlPart - часть ячейки
firstAddress = Rng.Address 'запоминаем адрес первой найденной ячейки
Do
If Not Rng Is Nothing Then 'если нашли
'MsgBox "Найдено на листе " & Rng.Parent.Name & " в ячейке " & Rng.Address(0, 0), vbInformation, "Конец"
g = Rng.Row
h = Rng.Column
'MsgBox "Значение ячейки" & Workbooks(f).Sheets(TDSheet).Range(g, h - 3).Value, vbInformation, "Конец"
'MsgBox "Найдено на листе " & Rng.Parent.Name & " в ячейке " & Rng.Address(0, 0), vbInformation, "Конец"
If Workbooks(p & f).Sheets(1).Range(g, h + 5).Value <> "Да" Or Workbooks(p & f).Sheets(1).Range(g, h + 5).Value <> "ДА" Or Workbooks(p & f).Sheets(1).Range(g, h + 5).Value <> "да" Then
For i = 1 To Rng
If Workbooks(p & f).Sheets(1).Range(g, h) = Workbooks(p & f).Sheets(1).Range("D" & g) Then
MsgBox "Значение ячейки" & Workbooks(p & f).Sheets(1).Range(g, h - 3).Value, vbInformation, "Конец"
Workbooks("Поиск.xlsm").Range("B" & i).Value = Workbooks(f).Range(g - 3, h).Value
Workbooks("Поиск.xlsm").Range("C" & i).Value = Workbooks(f).Range(g - 1, h).Value
Workbooks("Поиск.xlsm").Range("D" & i).Value = Workbooks(f).Range(g + 2, h).Value
Workbooks("Поиск.xlsm").Range("E" & i).Value = Workbooks(f).Range(g + 3, h).Value
ElseIf Range(g, h) = Range("H", h) Then
Workbooks("Поиск.xlsm").Range("B" & i).Value = Workbooks(f).Range(g - 4, h).Value
Workbooks("Поиск.xlsm").Range("C" & i).Value = Workbooks(f).Range(g + 1, h).Value
Workbooks("Поиск.xlsm").Range("D" & i).Value = Workbooks(f).Range(g + 4, h).Value
Workbooks("Поиск.xlsm").Range("E" & i).Value = Workbooks(f).Range(g + 3, h).Value
End If
Next i
End If
End If
Set Rng = Sht.Cells.FindNext(Rng) 'ищем следующую ячейку на листе
Loop Until firstAddress = Rng.Address 'повторяем цикл, пока не вернёмся к первой найденной ячейке
Next Sht |
Если раскомментировать строку
Код |
---|
'MsgBox "Найдено на листе " & Rng.Parent.Name & " в ячейке " & Rng.Address(0, 0), vbInformation, "Конец" |
, то окошко выскакивает и всё показывает. А если раскомментировать строку
Код |
---|
'MsgBox "Значение ячейки" & Workbooks(f).Sheets(TDSheet).Range(g, h - 3).Value, vbInformation, "Конец" |
, то никакого окна нет и ошибки тоже нет. Пробовал и вариант
Код |
---|
'MsgBox "Значение ячейки" & Workbooks(f).Sheets(1).Range(g, h - 3).Value, vbInformation, "Конец" |
, но это ничего не меняет, и окошко не выскакивает. В строке
Код |
---|
'MsgBox "Значение ячейки" & Workbooks(f).Sheets(TDSheet).Range(g, h - 3).Value, vbInformation, "Конец" |
я хотел, чтобы MsgBox показал мне значение ячейки на 3 столбца меньше того, в котором нашёл. То есть, найтись заданное слово может начиная со столбца D. Мне надо чтобы MsgBox вывел мне значение, например: если заданное слово нашлось в ячейке D5, то MsgBox выводит значение ячейки A5, если заданное слово нашлось в ячейке G5, то MsgBox выводит значение ячейки D5.
Скажите, пожалуйста, что я сделал не так? и как правильно?