Всем добрый вечер! Ребята, скажу сразу, только начинаю программировать на vba. Возник вопрос: для чего в выражении ActiveSheet.UsedRange.Rows.Count - 1 вычитать единицу. ActiveSheet - активный лист UsedRange - рабочий диапазон Rows.Count - количество строк -1? Объясните пожалуйста. Заранее спасибо за ответ. В интернете нашел: https://www.excel-vba.ru/chto-umeet-excel/kak-opredelit-poslednyuyu-yachejku-na-liste-cherez-vba/ Но что-то не совсем понял объяснение. Получается -1 нужно для перехода на строку выше. Всем большое спасибо!
11 мая. То есть первая строка плюс 2 вместе с первой строкой минус один, так как первая строка тоже считается? Выходит, что если не считать первую строку, то получится, для примера 12 мая, а если с первой строкой, то 11 мая, верно?
То есть здесь ActiveSheet.UsedRange.Rows.Count = 12 мая а ActiveSheet.UsedRange.Rows.Count-1 = 11 мая Верно?
artemkau88 написал: Возник вопрос: для чего в выражении
Возник встречный вопрос - для чего выражение? В Вашем случае - количество занятых ячеек минус один. На самом деле такое вычитание используется, когда необходимо получить последнюю строку занятого диапазона, и выражение выглядит как:
ActiveSheet.UsedRange.Row - этой строкой мы определяем первую ячейку, с которой начинаются данные на листе. Важно понимать для чего это - если у вас первые строк 5 не заполнены ничем, то данная строка вернет 6(т.е. номер первой строки с данными). Если же все строки заполнены - то вернет 1.
ActiveSheet.UsedRange.Rows.Count - определяем кол-во строк, входящих в весь диапазон данных на листе. Т.е. получается: первая строка данных + кол-во строк с данными - 1. Зачем вычитать единицу? Попробуем посчитать вместе: первая строка: 3. Всего строк: 3. 3 + 3 = 6. Вроде все верно, чего тут непонятного? А теперь выделите на листе три ячейки, начиная с 3-ей. Все верно. Ведь у нас в 3-ей строке уже есть данные. Думаю, остальное уже понятно и без моих пояснений.
То же самое и с ActiveSheet.UsedRange.Column, только уже не для строк, а для столбцов.