Vba excel текущая строка

В настоящее время я пишу макрос, который буквально сравнивает построчные значения между Excel и другой программой. В 99% случаев, когда есть расхождение, это происходит потому, что транзакция не была добавлена. Поэтому, пока этот макрос сравнивает эти значения, при обнаружении расхождения я хотел бы добавить новую «строку» (однако, не всю строку, только из A_:K_ , где _ — это любой номер строки, в которой находится активная ячейка ). Это позволит мне просто зайти в Excel, ввести транзакцию, затем нажать OK в макросе и продолжить. Мой макрос на самом деле довольно прост и короток, и я могу просто пойти дальше и опубликовать все здесь, чтобы, возможно, лучше понять, что происходит. И я не делаю этого в VBA Excel, я делаю это в VBA другой программы, а appXL — это объект Excel как функция:

Основной макрос:

Итак, если J495 , что если активной ячейкой была J495 , то вручную я бы выбрал диапазон A495:K495 , щелкните правой кнопкой мыши, выберите « Insert , затем нажмите « Shift Cells Down . Теперь мне просто нужно, чтобы это было автоматизировано. В конце концов я планирую также автоматизировать заполнение недостающих данных, но эта часть является первой (иначе я просто продолжил бы делать это вручную самостоятельно).

В качестве дополнительного бонуса , я был бы признателен, если бы кто-то мог также объяснить, как получить текущий номер строки, в которую была вставлена строка, чтобы я мог добавить этот номер строки в окно отладчика — но я могу жить без необходимости

Читайте также:  Bo 647a42 xg отзывы

В этой статье описаны синтаксис формулы и использование функции СТРОКА в Microsoft Excel.

Описание

Возвращает номер строки, определяемой ссылкой.

Синтаксис

Аргументы функции СТРОКА описаны ниже.

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

Если ссылка опущена, то предполагается, что это ссылка на ячейку, в которой находится сама функция СТРОКА.

Если значение аргумента "ссылка" является диапазоном ячеек, а функция СТРОКА введена как вертикальный массив, функция СТРОКА возвращает номера строк, указанных в аргументе "ссылка", в виде вертикального массива.

В аргументе "ссылка" нельзя указывать несколько областей.

Примеры

Скопируйте образец данных из следующей таблицы и вставьте их в ячейку A1 нового листа Excel. Чтобы отобразить результаты формул, выделите их и нажмите клавишу F2, а затем — клавишу ВВОД. При необходимости измените ширину столбцов, чтобы видеть все данные.

Поиск номера последней заполненной строки с помощью кода VBA Excel для таблиц, расположенных как в верхнем левом углу, так и в любом месте рабочего листа.

Номер последней заполненной строки в таблице Excel обычно используется в коде VBA для определения следующей за ней первой пустой строки для добавления новой записи. А также для задания интервала для поиска и обработки информации с помощью цикла For. Next (указание границ обрабатываемого диапазона).

Переменную, которой присваивается номер последней строки, следует объявлять как Long или Variant, например: Dim PosStr As Long . В современных версиях Excel количество строк на рабочем листе превышает максимальное значение типа данных Integer.

Таблица в верхнем левом углу

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

Читайте также:  Sims 4 бесконечные деньги

Пример таблицы с набором данных в Excel

Вариант 1
Основная формула для поиска последней строки в такой таблице, не требующая соблюдения каких-либо условий:
PosStr = Cells(1, 1).CurrentRegion.Rows.Count

Вариант 2
Ниже таблицы не должно быть никаких записей:
PosStr = ActiveSheet.UsedRange.Rows.Count

Вариант 3
В первом столбце таблицы не должно быть пропусков, а также в таблице должно быть не менее двух заполненных строк, включая строку заголовков:
PosStr = Cells(1, 1).End(xlDown).Row

Вариант 4
В первой колонке рабочего листа внутри таблицы не должно быть пропусков, а ниже таблицы в первой колонке не должно быть других заполненных ячеек:
PosStr = WorksheetFunction.CountA(Range("A:A"))

Вариант 5
Ниже таблицы не должно быть никаких записей:
PosStr = Cells.SpecialCells(xlLastCell).Row

Последняя строка любой таблицы

Последнюю заполненную строку для любой таблицы будем искать, отталкиваясь от ее верхней левой ячейки: Cells(a, b) .

Вариант 1
Основная формула для поиска последней строки в любой таблице, не требующая соблюдения каких-либо условий:
PosStr = Cells(a, b).CurrentRegion.Cells(Cells(a, b).CurrentRegion.Cells.Count).Row

Вариант 2
Дополнительная формула с условием, что в первом столбце таблицы нет пустых ячеек:
PosStr = Cells(a, b).End(xlDown).Row

Если у вас на рабочем листе Excel есть записи вне таблиц, следите за тем, чтобы таблицы были окружены пустыми ячейками или пустыми ячейками и границами листа. Тогда не будет случайно внесенных заметок, примыкающих к таблицам, которые могут отрицательно повлиять на точность вычисления номера последней строки из кода VBA.

VBA Excel. Номер последней заполненной строки : 2 комментария

К сожалению, во всех приведенных методах непонятно, учитывается ли фильтр? То есть учитываются ли скрытые ячейки?

Добрый день, Николай!
Скрытые строки в центре таблицы не влияют на результат. Если в скрытый диапазон входит последняя строка, результат будет зависеть от примененного выражения.

В зависимости от того, какой результат вам нужен при скрытой последней строке, выбирайте подходящее выражение с помощью следующего теста:

Rate this post

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *