0 / 0 / 0 Регистрация: 16.02.2016 Сообщений: 18 |
|
1 |
|
Найти и выделить последнюю строку19.02.2016, 17:58. Показов 4402. Ответов 5
Отфильтровал, получил диапазон, нашол последнюю строку Код lRws = Cells(Rows.Count, "I").End(xlUp).Row Хочу выделить что бы удалить: а он пишет о несоответствии типов! lRws2 получилось чилом можно складывать и умножать, скажите что ему надо?
0 |
Казанский 15136 / 6410 / 1730 Регистрация: 24.09.2011 Сообщений: 9,999 |
||||
19.02.2016, 18:22 |
2 |
|||
Walery100, чтобы удалить, выделять не нужно
0 |
0 / 0 / 0 Регистрация: 16.02.2016 Сообщений: 18 |
|
19.02.2016, 20:02 [ТС] |
3 |
Ага! Спасибо, работает. Про & я бы сам не догодался и спасибо за заменило грамозкое и непонятное Код Selection.Delete Shift:=xlUp Добавлено через 1 час 20 минут
0 |
Святой НякаЛайк 653 / 246 / 88 Регистрация: 28.10.2015 Сообщений: 520 |
||||||||||||
19.02.2016, 21:10 |
4 |
|||||||||||
Между прочим, можно бы догадаться из этого ответа:
плюс пара проб (+-пара ошибок)
как урок синтаксиса от знатока?
0 |
0 / 0 / 0 Регистрация: 16.02.2016 Сообщений: 18 |
|
19.02.2016, 23:48 [ТС] |
5 |
Спасибо!
0 |
653 / 246 / 88 Регистрация: 28.10.2015 Сообщений: 520 |
|
20.02.2016, 00:32 |
6 |
1C и visual basic близкие родственники, но различия есть, а как говорится, дьявол кроется в мелочах. Чтобы освоить синтаксис бейсика, читайте учебно-методические материалы и конечно готовые коды мастеров. Удачи!
0 |
zenija2007 Пользователь Сообщений: 92 |
#1 13.09.2017 08:27:59
Прикрепленные файлы
|
||
Sanja Пользователь Сообщений: 14838 |
#2 13.09.2017 08:31:32
Согласие есть продукт при полном непротивлении сторон. |
||
Karataev Пользователь Сообщений: 2306 |
#3 13.09.2017 08:32:38 В данном коде «Row» — это не объект, а номер строки. Поэтому правильно так:
Но вообще не обязательно выделять строку, чтобы с ней что-то сделать. Изменено: Karataev — 13.09.2017 08:38:48 |
||
zenija2007 Пользователь Сообщений: 92 |
Karataev, Sanja, Изменено: zenija2007 — 13.09.2017 08:40:47 |
Sanja Пользователь Сообщений: 14838 |
#5 13.09.2017 08:41:19 Для Умной таблицы (как в Вашем примере) и именно ПОСЛЕДНЮЮ строку (а не ПОСЛЕДНЮЮ СТРОКУ С ДАННЫМИ, как в Вашем примере) можно выделить так
Согласие есть продукт при полном непротивлении сторон. |
||
Sanja Пользователь Сообщений: 14838 |
#6 13.09.2017 08:42:07
См. выше. Ваша конструкция ищет последнюю строку с ДАННЫМИ Согласие есть продукт при полном непротивлении сторон. |
||
zenija2007 Пользователь Сообщений: 92 |
|
Sanja Пользователь Сообщений: 14838 |
#8 13.09.2017 08:47:33 Чуть короче
Согласие есть продукт при полном непротивлении сторон. |
||
zenija2007 Пользователь Сообщений: 92 |
#9 13.09.2017 11:18:55 Sanja, а сможете сразу на этом примере показать, как быстро расширить диапазон таблицы Разделительная на 1 строку вниз?
но ошибка. при этом и в многочисленных примерах на форумах показано именно такое решение.
тут тоже ошибка при попытке запомнить полученный диапазон в переменную и тоже не могу найти решения Изменено: zenija2007 — 13.09.2017 11:23:10 |
||||
Karataev Пользователь Сообщений: 2306 |
#10 13.09.2017 11:23:44 В первом примере ошибка, т.к. в скобках нужно указать объект «Range», а Вы указываете число — количество строк.
|
||
zenija2007 Пользователь Сообщений: 92 |
#11 13.09.2017 11:39:01 Karataev,
Изменено: zenija2007 — 13.09.2017 11:39:17 |
||
Karataev Пользователь Сообщений: 2306 |
#12 13.09.2017 11:42:40 Может быть так подойдет?
После чего можно обращаться к умной таблице по ссылке «objList». В этой ссылке есть объект «Range»:
|
||||
Sanja Пользователь Сообщений: 14838 |
#13 13.09.2017 11:51:32 Ресурс
, к которому сам часто обращаюсь при использовании Умных таблиц Изменено: Sanja — 13.09.2017 11:52:23 Согласие есть продукт при полном непротивлении сторон. |
Выделение и закрашивание последней строки макросом |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Определение адреса выделенного диапазона ячеек на листе Excel с помощью кода VBA. Определение номера первой и последней строки. Программное выделение диапазона.
Адрес выделенного диапазона
Для определения адреса выделенного диапазона ячеек в VBA Excel используется свойство Address объекта Selection.
Объект Selection — это совокупность всех выделенных ячеек на листе Excel. Это может быть одна ячейка, смежный или несмежный диапазон ячеек, представляющий коллекцию смежных диапазонов. Если выделение состоит из несмежного диапазона, адреса смежных диапазонов, из которых он состоит, будут перечислены через запятую.
Смежный диапазон — прямоугольная область смежных (прилегающих друг к другу) ячеек.
Несмежный диапазон — совокупность (коллекция) смежных диапазонов (прямоугольных областей смежных ячеек).
Стоит отметить: несмотря на то, что в выделенном диапазоне может содержаться много ячеек, активной может быть только одна. Она представлена объектом ActiveCell. Для определения ее адреса в коде VBA Excel также используется свойство Address.
Sub Primer1() MsgBox «Адрес выделенного диапазона: « & Selection.Address & _ vbNewLine & «Адрес активной ячейки: « & ActiveCell.Address & _ vbNewLine & «Номер строки активной ячейки: « & ActiveCell.Row & _ vbNewLine & «Номер столбца активной ячейки: « & ActiveCell.Column End Sub |
Скопируйте и запустите код на выполнение. В результате получите что-то вроде этого, зависящее от того, какие диапазоны вы выберите:
Определение адресов выделенного диапазона и активной ячейки
Выделение ячеек и диапазонов
Выделить несмежный диапазон ячеек можно следующим образом:
Sub Primer2() Range(«B4:C7,E5:F7,D8»).Select End Sub |
Как видно из примера, в адресной строке объекта Range перечисляются адреса смежных диапазонов, составляющих общий несмежный диапазон, через запятую. Выделение осуществляется методом Select объекта Range.
Определение номеров первой и последней строки
Чтобы вычислить номера первой и последней строки выделенного диапазона, будем исходить из того, что первая ячейка смежного диапазона находится на первой строке, а последняя — на последней строке выделенного диапазона.
Sub Primer3() Dim i1 As Long, i2 As Long i1 = Selection.Cells(1).Row i2 = Selection.Cells(Selection.Cells.Count).Row MsgBox «Первая строка: « & i1 & _ vbNewLine & «Последняя строка: « & i2 End Sub |
Результат будет таким, зависит от выделенного диапазона:
Номера первой и последней строки выделенного смежного диапазона
Таким же образом можно вычислить номера первого и последнего столбцов выделенного диапазона, которые можно использовать для обработки информации по столбцам.
Обратите внимание, что для несмежных диапазонов этот пример не работает.
На практике я использовал определение номеров первой и последней строк по выделенному диапазону для формирования файла загрузки данных держателей дисконтных карт на сервис отправки СМС-сообщений. Оказалось, что базу данных клиентов заполнять в таблице Excel намного удобнее, чем на портале сервиса, а для загрузки в сервис достаточно сформировать несложный файл. Заполнил новые строки, выделил их по любому столбцу, нажал кнопку и файл готов.
We use Range.SpecialCells() method in the below VBA Code to find and return details of last used row, column, and cell in a worksheet.
Sample Data:
Sample Data
Syntax:
expression.SpecialCells (Type, Value)
Eg: To return the last used cell address in an activesheet. ActiveSheet.Range(“A1”).SpecialCells(xlCellTypeLastCell).Address
VBA Code:
Declaring Variables:
Variable | Data Type | Comments |
---|---|---|
LastRow | Long | Find and store last used row |
LastCol | Long | store last used column |
LastCell | String | store last used cell address |
'Variable Declaration Dim LastRow As Long, LastCol As Long, LastCell As String
Use SpecialCells function to find last used row/column/cell
'Find Last Used Row LastRow = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Row 'Find Last Used Column LastCol = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Column 'Find Last Used Cell LastCell = ActiveSheet.Range("A1").SpecialCells(xlCellTypeLastCell).Address
Concatenate all three variables (LastRow/LastCol/LastCell), add a new line between variables use Chr(10). Show the final output in an Excel Message box.
'Display the last used row/column/cell MsgBox "Last Used Row : " & LastRow & Chr(10) & "Last Used Column : " & LastCol & Chr(10) & "Last Used Cell : " & LastCell
Implementation:
Follow the below steps to find the Last Used Row and Last Used Column in Excel VBA
Step 1: Add a shape (Find Last Row/Column/Cell) on your worksheet.
Step 2: Right-click on “Find Last Row/Column/Cell” and “Assign Macro..”
Step 3: Select “findLastUsedCell”, you can see a list of macros if available in your workbook
Step 4: Save your excel file as “Excel Macro-Enabled Workbook” *.xlsm
Step 5: Click “Find Last Row/Column/Cell” to execute the VBA code. Code will popup below output for the above given example (Output).
Output: