Невозможно создать цикл, используя свойство usedrange - PullRequest
0 голосов
/ 26 мая 2018

В рабочем листе, с которым я работаю, заполнены две ячейки: одна с Total, а другая с value.Они рядом друг с другом.Моя цель - поймать Total и напечатать его value.Поскольку я не хочу знать их конкретный адрес ячейки, я создал цикл и выполнил свою работу.Я сделал это, используя .SpecialCells(xlCellTypeLastCell).Теперь я хотел бы сделать то же самое, используя .UsedRange.

Мой вопрос: как я могу сделать то же самое (создание цикла), используя .UsedRange.

Это у меня естьпопробовал с (работающим):

Sub FindTotalValue()
    Dim rng As Range, cel As Range

    'Set rng = ActiveSheet.UsedRange
    'For Each cel In rng.Row

    For Each cel In Range("A1", Range("A1").SpecialCells(xlCellTypeLastCell))
        If InStr(cel.Value, "Total") > 0 Then MsgBox cel.Offset(0, 1).Value
    Next cel
End Sub

Поскольку я ничего не знаю о создании цикла с использованием метода .usedrange, я просто закомментировал их в скрипте.

1 Ответ

0 голосов
/ 26 мая 2018

Попробуйте:

Sub FindTotalValue()
    Dim rng As Range, cel As Range

    For Each cel In ActiveSheet.UsedRange.Cells.SpecialCells(2)
        If InStr(cel.Value, "Total") > 0 Then MsgBox cel.Offset(0, 1).Value
    Next cel
End Sub

Предполагается, что ячейка, содержащая «Всего», является константой, а не формулой:

enter image description here

Вы также должны исследовать, используя Find () вместо цикла.

EDIT # 1:

По предложению Банана:

Sub FindTotalValue()
    Dim rng As Range, cel As Range

    For Each cel In ActiveSheet.UsedRange.Cells.SpecialCells(2)
        If InStr(cel.Value, "Total") > 0 Then
            MsgBox cel.Offset(0, 1).Value
            Exit For
        End If
    Next cel
End Sub

РЕДАКТИРОВАТЬ # 2:

Для использования Найти () :

Sub FindTotalValueQuickly()
    MsgBox Cells.Find(what:="Total", lookat:=xlPart).Offset(0, 1).Value
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...