Получение номера строки ячейки относительно указанного диапазона - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь получить номер строки ячейки в диапазоне, который я указываю с помощью vba.Я хочу получить номер строки ячейки в диапазоне, но получаю номер строки ячейки на рабочем листе.

Это код vba, который я использую в настоящее время.Я установил диапазон, и в пределах диапазона я ищу ячейку, которая содержит текстовую строку «C».Найдя ячейку, я хочу внести изменения в значение во втором столбце диапазона.

Sub trial2()

Dim ActiveWB As Workbook
Dim ActiveWS As Worksheet
Dim rng As Range, findCell As Range

Set ActiveWB = ActiveWorkbook
Set ActiveWS = ActiveWB.ActiveSheet

Set rng = ActiveWS.Range("B4", "C10")

With rng
    Set findCell = .Cells.Find(what:="C")
End With

rng.Cells(findCell.Row, 2).Value = "change to something."

End Sub

Перед запуском кода:

enter image description here

После запуска кода:

enter image description here

значение ячейки, содержащее «C», находится в 6-й строке рабочего листа,но в 3-м ряду ассортимента.Мне было интересно, как я могу получить 3-й ряд диапазона.Мне известно, что я могу просто сместить ячейку на 1 столбец, чтобы решить эту проблему, но мне любопытно узнать количество строк в ячейке относительно определенного диапазона.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Вы можете использовать:

Option Explicit

Sub test()

    Dim rng As Range

    With ThisWorkbook.Worksheets("Sheet1")

        'If your searching area for A,B,C etc is from B4 to B10 just use
        Set rng = .Range("B4:B10").Cells.Find(what:="C")
        'If your searching area for A,B,C etc is from B4 to C10 just use
        Set rng = .Range("B4:C10").Cells.Find(what:="C")

        If Not rng Is Nothing Then
            'Way 1
            .Cells(rng.Row, rng.Column + 1).Value = "change to something."
            'Way 2
            rng.Offset(0, 1).Value = "change to something."
        Else
            MsgBox "No ""C"" found."
        End If

    End With

End Sub
0 голосов
/ 13 февраля 2019

Один из вариантов - настроить на основе номера первой строки rng, используя простую математику.

rng.Cells(findCell.Row - rng.Row + 1, 2).Value = "change to something."

В этом случае 6 - 4 + 1 = 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...