Диапазон строк в макросе excel

Roman901

0 / 0 / 0

Регистрация: 08.08.2010

Сообщений: 7

1

Как выделить диапазон строк?

08.08.2010, 16:04. Показов 18214. Ответов 3

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

нужно выделить несколько строк

Visual Basic
1
2
3
Rows('1').Select - ok
Rows('1:24') .Select- ok
Rows(Count * 70 + 10).Select

— ok

Visual Basic
1
Rows(Count * 70 + 10):(Count*70+10+69).Select

— 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

Visual Basic
1
2
3
4
5
6
Private Sub cmdCommandButton1_Click()
 Columns('a:i').Select
   With Selection
    .Copy Sheets(1).Cells(1, 38)
   End With
End Sub



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
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
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

Like this post? Please share to your friends:
  • Диапазон смежных ячеек в excel это
  • Дизайн для microsoft word
  • Диапазон сводной таблицы в excel 2010
  • Дизайн диаграмм в excel
  • Диапазон расположения спарклайнов в excel