Roman901 0 / 0 / 0 Регистрация: 08.08.2010 Сообщений: 7 |
||||||||
1 |
||||||||
Как выделить диапазон строк?08.08.2010, 16:04. Показов 18214. Ответов 3 Метки нет (Все метки)
нужно выделить несколько строк
— ok
— Error
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
08.08.2010, 16:04 |
3 |
14 / 14 / 2 Регистрация: 23.03.2010 Сообщений: 635 |
|
08.08.2010, 17:20 |
2 |
Rows(Count * 70 + 10 & ‘:’ & Count*70+10+69).Select
0 |
0 / 0 / 0 Регистрация: 08.08.2010 Сообщений: 7 |
|
08.08.2010, 17:24 [ТС] |
3 |
Спасибо! Работает…
0 |
Strobery 0 / 0 / 0 Регистрация: 22.03.2010 Сообщений: 45 |
||||
09.08.2010, 10:31 |
4 |
|||
0 |
Определение адреса выделенного диапазона ячеек на листе 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 намного удобнее, чем на портале сервиса, а для загрузки в сервис достаточно сформировать несложный файл. Заполнил новые строки, выделил их по любому столбцу, нажал кнопку и файл готов.
Добрый день! Спасибо, что откликнулись. Я вроде описал всё, что я жду от макроса:1 кнопка отвечает за добавление 1 строки выше ячейки, в которой будет находится курсор. Например, курсор находится в ячейке В13 (перед строкой итогов), соответственно выше должна появится (скопироваться и вставиться) строка, которая будет содержать: формулы, формат диапазона А13:М13, а также выпадающий список столбца D.
2 кнопка отвечает за добавление блока строк, эталоном для которого служит диапазон А5:М9 (по умолчанию он должен быть скрыт от пользователя). Принцип такой же, как и у первой кнопки – курсор находится, например в ячейке С15 (после строки итогов), соответственно выше должен появится (скопироваться и вставиться) эталонный диапазон А5:М9.
Что ещё нужно добавить ума не приложу. Крайний макрос срабатывает но, выдаёт ошибку вот в этой строке .Offset(-1).SpecialCells(xlCellTypeConstants, 23).ClearContents.Если удаляю SpecialCells(xlCellTypeConstants, 23) макрос работает, но тогда удаляются все формулы в ячейках, а мне этого не нужно
Выделение диапазона строк
- Гена
- Новичок
- Сообщения: 26
- Зарегистрирован: 29.12.2003 (Пн) 16:37
Выделение диапазона строк
Как выделить в макросе диапазон строк, по первому столбцу (дата), т.е. со строки A8 по n.
- RayShade
- Scarmarked
- Сообщения: 5511
- Зарегистрирован: 02.12.2002 (Пн) 17:11
- Откуда: Russia, Saint-Petersburg
-
- Сайт
- ICQ
RayShade » 29.12.2003 (Пн) 17:34
Так не пойдет?
- Код: Выделить всё
Range("A8:A34").Select
- Гена
- Новичок
- Сообщения: 26
- Зарегистрирован: 29.12.2003 (Пн) 16:37
Гена » 29.12.2003 (Пн) 17:44
Ситуация такая. Каждый день приходят данные, эти данные записываются соответственно в строки, количество строк каждый день разное. Мне нужно чтобы макрос сам находил последнюю строку и выделял весь диапазон (все строки) и копировал в другую книгу.
я нашел на форуме такой вот код, но он выделяет заданное количество строк. Помогите кто может.
- Код: Выделить всё
Sub s()
a = 15
ActiveSheet.Range("A8:A" & a).Select
End Sub[/quote][/list]
- RayShade
- Scarmarked
- Сообщения: 5511
- Зарегистрирован: 02.12.2002 (Пн) 17:11
- Откуда: Russia, Saint-Petersburg
-
- Сайт
- ICQ
RayShade » 29.12.2003 (Пн) 18:00
Я не проверял, но кажется, последняя используемая ячейка диапазона это
- Код: Выделить всё
Range("A1:A65535").SpecialCells(xlCellTypeLastCell)
- Гена
- Новичок
- Сообщения: 26
- Зарегистрирован: 29.12.2003 (Пн) 16:37
Гена » 29.12.2003 (Пн) 18:16
Че тоя вообще уже ничего не понимаю.
Например: 1-день — 2 строки данных
2 день — 5 строк данных
3 день — нет строк с данными
4 день — 10 строк данных
5 день — 51 строк данных
6 день — еще сколько то
Как записать так чтобы, выделялись эти строчки, самостоятельно при запуске макроса. Хотелось бы поподробнее код, если можна заранее благодарен
- amda
- Продвинутый пользователь
- Сообщения: 134
- Зарегистрирован: 11.09.2002 (Ср) 15:14
- Откуда: Russia, Волгоградская обл., г. Волжский
amda » 29.12.2003 (Пн) 23:07
- Код: Выделить всё
Sub Макрос1()
For i = 1 To 255'или сколько нужно строчек проверить?
If Range("A" & i).Text = "" Then Exit For'если пусто, выходим из цикла
Next
Range("A1:A" & i - 1).Select'выделяем всё с первой до последней ячейки
Selection.Copy'копируем в клипборд
End Sub
Организм человека содержит столько извести, что ее хватит на побелку курятника. (Hенужная информация)
- GSerg
- Шаман
- Сообщения: 14286
- Зарегистрирован: 14.12.2002 (Сб) 5:25
- Откуда: Магадан
GSerg » 30.12.2003 (Вт) 9:23
- Код: Выделить всё
range("a8").currentregion.select
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас
- Tuco
- Постоялец
- Сообщения: 508
- Зарегистрирован: 18.06.2003 (Ср) 16:37
- Откуда: Подмосковье
Tuco » 30.12.2003 (Вт) 10:54
а я бы так сделал:
- Код: Выделить всё
Sub Макрос1()
Dim a As Integer
Dim b As Integer
a = ActiveSheet.UsedRange.Rows.Count
b = ActiveSheet.UsedRange.Columns.Count
Range(Cells(1, 1), Cells(a, b)).Select
Selection.Copy
"Куда вставить?".Select
ActiveSheet.Paste
End Sub
«There’s more than one way to do it!»
- Гена
- Новичок
- Сообщения: 26
- Зарегистрирован: 29.12.2003 (Пн) 16:37
Гена » 08.01.2004 (Чт) 10:11
Спасибо всем за помощь.
Вернуться в VBA
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 1
If you just want to select the used range, use
ActiveSheet.UsedRange.Select
If you want to select from A1 to the end of the used range, you can use the SpecialCells method like this
With ActiveSheet
.Range(.Cells(1, 1), .Cells.SpecialCells(xlCellTypeLastCell)).Select
End With
Sometimes Excel gets confused on what is the last cell. It’s never a smaller range than the actual used range, but it can be bigger if some cells were deleted. To avoid that, you can use Find and the asterisk wildcard to find the real last cell.
Dim rLastCell As Range
With Sheet1
Set rLastCell = .Cells.Find("*", .Cells(1, 1), xlValues, xlPart, , xlPrevious)
.Range(.Cells(1, 1), rLastCell).Select
End With
Finally, make sure you’re only selecting if you really need to. Most of what you need to do in Excel VBA you can do directly to the Range rather than selecting it first. Instead of
.Range(.Cells(1, 1), rLastCell).Select
Selection.Font.Bold = True
You can
.Range(.Cells(1,1), rLastCells).Font.Bold = True