VBA для ссылки на одну и ту же ячейку даже после добавления или удаления строк и столбцов - PullRequest
2 голосов
/ 19 июня 2019

Я использую код VBA для записи в ячейки в Excel.Например,

Range("C3") = code

или

Cells(3,3) = code

Если в лист вставлена ​​строка, код не обновляется соответствующим образом и все равно записывает в Range("C3") и т. Д.Затем код записывает в неправильную ячейку.

Есть ли лучший способ структурировать мой код, чтобы он соответствующим образом обновлялся?Возможно использование таблицы вместо ячеек?

Ответы [ 2 ]

1 голос
/ 19 июня 2019

Одним из решений является использование Именованных диапазонов . Вы можете определить именованный диапазон на вкладке «Формула», нажав «Диспетчер имен».

Тогда ты напишешь.

Range("Name of the Range") = code

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

0 голосов
/ 20 июня 2019

Спасибо, хорошая идея.В итоге я определил столбец, заполненный значениями, как диапазон, а затем использовал цикл for для поиска определенной строки.Таким образом, не имеет значения, в какой строке он находится, так как имя и строка не меняются (использование именованного диапазона, вероятно, будет лучше по той же причине).

Worksheets("Sheet1").Select
        Set WS = ActiveSheet
            With WS
                LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row       'Determine the last row number with data in it for column B
                    For Each acell In .Range("B1:B" & LastRow)       'Defines the search range from B1 to last row

                        If acell.Value = "String Searched For" Then
                            'Do stuff based on found cell location
                        End If

                        If acell.Value = "String Searched For#2" Then
                            'Do stuff based on found cell location#2
                        End If
                    Next
            End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...