Vba excel номер строки активной ячейки

0 / 0 / 0

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

Сообщений: 265

1

Как узнать номер строки для активной ячейки?

22.09.2009, 09:21. Показов 63208. Ответов 8


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

Как узнать номер строки для активной ячейки?
спасибо



0



Savelev

22.09.2009, 10:51

2

ActiveCell.Row

0 / 0 / 0

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

Сообщений: 265

22.09.2009, 12:08

 [ТС]

3

спасибо



0



0 / 0 / 0

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

Сообщений: 3

15.01.2018, 13:33

4

а для умной таблицы, можно так сделать?



0



6875 / 2807 / 533

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

Сообщений: 8,562

15.01.2018, 14:17

5

Можно.



1



0 / 0 / 0

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

Сообщений: 3

17.01.2018, 14:56

6

А как, не подскажете? Будьте добры, если не сложно))



0



6875 / 2807 / 533

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

Сообщений: 8,562

17.01.2018, 15:24

7

Что именно нужно «а для умной таблицы, можно так сделать» ?
Ну в любом случае как узнать номер активной строки — уже написали.
Далее берёте координаты своей умной таблицы и вычисляете.



0



Казанский

15136 / 6410 / 1730

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

Сообщений: 9,999

17.01.2018, 15:53

8

Stav-ortodox, номер строки в диапазоне данных умной таблицы?

Visual Basic
1
activecell.Row-activecell.ListObject.DataBodyRange.Row+1



0



0 / 0 / 0

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

Сообщений: 3

17.01.2018, 16:30

9

Вот, то что нужно! Спаси Господи!!



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, В4 и т.д. Вот сегодня я и покажу, как это сделать, потому, что очень удобно, когда ты знаешь активные элементы книги.

Номер активной строки

Практически все активные элементы определяются при помощи такого слова — Active, кторое записывается перед определением активного элемента. Таким образом, номер активной строки можно вычислить следующим образом:

       Sub Stroka()

           s = ActiveCell.Row

           MsgBox «Активная строка под номером » & s, vbInformation, «Активная строка»

       End Sub

Номер активного столбца и стороки

Аналогично определению строки столбец определяется по такому же принципу, только в конце добавляется не строка, а столбец:

       Sub Stroka()

           s = ActiveCell.Row

           b = ActiveCell.Column

           MsgBox «Активная строка под номером » & s & » » & _

vbNewLine & «Активный столбец под номером » & b, vbInformation, «адрес»

       End Sub

Определяем номер последней заполненной строки и столбца

Sub Last_Stroka_and_Stolbec()

‘ищем последнюю заполненную строку и столбец и выводим сообщение о номере

    Stroka = ActiveSheet.Cells.Find(What:=»*», SearchDirection:=xlPrevious, _

          SearchOrder:=xlByRows).Row

    Stolbec = ActiveSheet.Cells.Find(What:=»*», SearchDirection:=xlPrevious,         _SearchOrder:=xlByRows).Column

MsgBox «Последняя строка под номером » & Stroka & » » & _

           vbNewLine & «Последний столбец под номером » _

           & Stolbec, vbInformation, «Адрес»

End Sub

Определяем активную ячейку

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

      Sub yacheika()

          sk = ActiveCell.Row

          st = ActiveCell.Column

          MsgBox «Активная ячейка имеет координаты Cells(» & sk & «,» & st & «)», _

                  vbInformation, «Активная ячейка»

      End Sub

Адрес активной ячейки

Многие думали, а как получить адрес активной ячейки? Очень просто, делается это так:

      Sub adres()

          A = ActiveCell.Address

          MsgBox «Абсолютный адрес активной ячейки — » & A, vbInformation, «Адрес»

      End Sub

Но такая запись может не устроить некоторых, потому что вней присутствуют $, т.е. абсолютное значение, а не относительное. Но и это можно поправить. Доллары уберутся, если записать код так:

      Sub adress()

          A = ActiveCell.Address(0, 0)

          MsgBox «Относительный адрес активной ячейки — » & A, vbInformation, «Адрес»

      End Sub

В скобках оператора Address указано какое именно значение должно быть относительным, а какое абсолютным. Если Address(0,0), то и строка и столбец записаны относительными (первый ноль отвечает за строку, второй ноль — это столбец). Если в строке поставить вместо ноля еденицу, то строка будет абсолютным значением, а столбец относительным. Причём значения следующих записей равнозначны:

Address(1, 0) = Address(True, False)

Адрес выделенного диапазона ячеек

Адрес выделенного диапазона можно получить следующим образом

      Sub diapazon()

‘используйте любую переменную для определения адреса

          A = Selection.Rows.Address(0, 0)    ‘Через строку

          b = Selection.Columns.Address(0, 0) ‘Через столбец

          c = Selection.Address(0, 0)

          MsgBox «Выделенный диапазон — » & A, vbInformation, «Адрес»

      End Sub

Координаты выделенного диапазона

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

      Sub Kdiapazon()

          a = Selection.Row

          b = Selection.Column

          K1 = Cells(a, b).Address(0, 0)

          aa = a + Selection.Rows.Count — 1

          bb = b + Selection.Columns.Count — 1

          K2 = Cells(aa, bb).Address(0, 0)

          MsgBox «Первая координата выделенного диапазона — » & K1 & vbNewLine & _

          «Вторая координата выделенного диапазона — » & K2, vbInformation, «Координаты»

      End Sub

a — Определяет номер первой строки выделенного диапазона;
b — Определяет номер первого столбца выделенного диапазона;
K1 — Определяем первую координату выделенного диапазона;
aa — Определяем номер последней строки выделенного диапазона;
bb — Определяем номер пследнего столбца выделенного диапазона;
K2 — Определяем вторую координату выделенного диапазона;

Selection.Rows.Count — определяет количество строк в выделенном диапазоне;
Selection.Columns.Count — определяет количество столбцов в выделенном диапазоне;

У многих возник вопрос: А почему вычитаем единицу? Всё потому, что первая координата входит в выделенный диапазон и нам её надо не потерять.

Имя активной книги

Имя активной книги возможно вычислить такой записью:

      Sub WorkbookName()

          Name = ActiveWorkbook.Name

          MsgBox «Имя активной книги — » & Name, vbInformation, «Имя активной книги»

      End Sub

Имя активного листа

Имя активного листа можно определить так:

      Sub SheetsName()

          Name = ActiveSheet.Name

          MsgBox «Имя активного листа — » & Name, vbInformation, «Имя активного листа»

      End Sub

Активная ячейка в Excel VBA

Активная ячейка — это текущая выбранная ячейка на листе, активная ячейка в VBA может использоваться как ссылка для перехода к другой ячейке или изменения свойств той же активной ячейки или ссылки на ячейки, предоставленной из активной ячейки, активная ячейка в VBA может можно получить с помощью метода application.property с ключевым словом active cell.

Для эффективной работы с кодированием VBA важно понимать концепцию объекта диапазона и свойств ячеек в VBA. В этих концепциях есть еще одна концепция, которую вам нужно изучить, это «активная ячейка VBA».

В Excel есть миллионы ячеек, и вы наверняка сомневаетесь, какая из них является активной. Для примера посмотрите на изображение ниже.

На самом изображении выше у нас есть много ячеек, чтобы определить, какая из них является активной ячейкой, очень просто, какая бы ячейка не была выбрана прямо сейчас, она называется «Активная ячейка» в VBA.

Если ваша активная ячейка не видна в вашем окне, посмотрите на поле имени, оно покажет вам адрес активной ячейки, на приведенном выше изображении адрес активной ячейки — B3.

Даже когда в качестве диапазона ячеек выбрано множество ячеек, любая первая ячейка в выделении становится активной ячейкой. Например, посмотрите на изображение ниже.

# 1 — Ссылки в Excel VBA

В наших предыдущих статьях мы видели, как ссылаться на ячейки в VBA. По свойству Active Cell мы можем ссылаться на ячейку.

Например, если мы хотим выбрать ячейку A1 и вставить значение «Hello», мы можем записать его двумя способами. Ниже приведен способ выбора ячейки и вставки значения с помощью объекта VBA «RANGE».

Код:

 Sub ActiveCell_Example1 () Диапазон ("A1"). Выберите диапазон ("A1"). Value = "Hello" End Sub 

Сначала будет выбрана ячейка A1 « Диапазон (« A1 »). Выбрать»

Затем он вставит значение «Hello» в диапазон ячейки A1 («A1»). Value = «Hello»

Теперь я удалю строку Range («A1»). Value = «Hello» и использую свойство Active Cell для вставки значения.

Код:

 Sub ActiveCell_Example1 () Диапазон ("A1"). Выберите ActiveCell.Value = "Hello" End Sub 

Точно так же сначала он выберет ячейку A1 « Диапазон (« A1 »). Выбрать»

Но здесь я использовал ActiveCell.Value = «Hello» вместо Range («A1»). Value = «Hello»

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

# 2 — Активный адрес ячейки, значение, строка и номер столбца

Чтобы понять это еще лучше, давайте покажем адрес активной ячейки в окне сообщения. Теперь посмотрите на изображение ниже.

На изображении выше активной ячейкой является «B3», а значение — 55. Давайте напишем код на VBA, чтобы получить адрес активной ячейки.

Код:

 Sub ActiveCell_Example2 () MsgBox ActiveCell.Address End Sub 

Запустите этот код с помощью клавиши F5 или вручную, тогда он покажет адрес активной ячейки в окне сообщения.

Выход:

Точно так же код ниже покажет значение активной ячейки.

Код:

 Sub ActiveCell_Example2 () MsgBox ActiveCell.Value End Sub 

Выход:

Код ниже покажет номер строки активной ячейки.

Код:

 Sub ActiveCell_Example2 () MsgBox ActiveCell.Row End Sub 

Выход:

Код ниже покажет номер столбца активной ячейки.

Код:

 Подложка ActiveCell_Example2 () MsgBox ActiveCell.Column End Sub 

Выход:

# 3 — Параметры активной ячейки в Excel VBA

Свойство Active Cell также имеет параметры. После ввода свойства ActiveCell откройте скобку, чтобы увидеть параметры.

Используя этот параметр, мы также можем ссылаться на другую ячейку.

Например, ActiveCell (1,1) означает, какая ячейка активна. Если вы хотите переместиться на одну строку ниже, вы можете использовать ActiveCell (2,1), здесь 2 не означает, что нужно переместиться на две строки вниз, а не только на одну строку вниз. Аналогично, если вы хотите переместить один столбец вправо, тогда это код ActiveCell (2,2)

Для примера посмотрите на изображение ниже.

На изображении выше активной ячейкой является A2, чтобы вставить значение в активную ячейку, вы пишете этот код.

Код:

ActiveCell.Value = «Hiiii» или ActiveCell (1,1) .Value = «Hiiii»

Запустите этот код вручную или с помощью клавиши F5, это вставит значение «Hiiii» в ячейку.

Теперь, если вы хотите вставить то же значение в ячейку ниже, вы можете использовать этот код.

Код:

ActiveCell (2,1) .Value = «Hiiii»

Это вставит значение в ячейку под активной ячейкой.

Если вы хотите вставить значение в один столбец справа, вы можете использовать этот код.

Код:

ActiveCell (1,2) .Value = «Hiiii»

Это вставит «Hiiii» в следующую ячейку столбца активной ячейки.

Таким образом, мы можем ссылаться на ячейки в VBA, используя свойство Active Cell.

Надеюсь, вам понравилось. Спасибо, что уделили нам время.

Вы можете скачать шаблон VBA Active Cell Excel здесь: — VBA Active Cell Template

Besides my comments above, here’s a quick rewrite to get rid of all of the superfluous .Activate and .Select lines. Those are for humans, VBA doesn’t need to select something before acting on it. It can just act on it directly.

Sub Macro1()

    'This line shouldn't be in your for loop otherwise you save this workbook like 4000 times
    ActiveWorkbook.SaveAs Filename:="tute.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    For i = 6 To 22370 Step 5        
        
        'No reason to select the row since we just go ahead and activate a particular cell immediately afterwords        
        'Rows(i:i).Select

        'No reason to "Activate" the cell. We can just shift it down without highlighting the thing for the user
        'Range("D" & i).Activate
        Range("D" & i).Insert Shift:=xlDown

        'No need to .Select. Just change the formula directly.
        'Range("D" & i).Select
        Range("D" & i).FormulaR1C1 = "xyz"

        'Again, no need to .Select. And we can do the copy/paste in one line
        'Range("A"&"i-1":"C"&"i-1").Select
        'Selection.Copy
        'Range("A" & i).Select
        'ActiveSheet.Paste
        Range("A" & i-1 & ":C" & i-1).Copy Destination:=Range("A" & i)

        'Removing superfluous select again
        'Range("E" & i).Select

        'Also superfluous code that isn't needed
        'Application.CutCopyMode = False
        'Application.CutCopyMode = False

        
        Range("E" & i).FormulaR1C1 = "=R[-1]C*R[4]C"
        'Range("E" & i).Select
        Range("E" & i).AutoFill Destination:=Range("E37:AO37"), Type:=xlFillDefault

        'Superfluous selects
        'Range("E"&i:"AO"&i).Select
        'Range("D" & i).Select
    Next
End Sub

And then cleaned up to remove all of that:

Sub Macro1()
    
    ActiveWorkbook.SaveAs Filename:="tute.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

    For i = 6 To 22370 Step 5

        'Shift column D for this line down a row (add a new empty cell for this line)      
        Range("D" & i).Insert Shift:=xlDown

        'Change the value to xyz of column D for this line (the new cell)
        Range("D" & i).FormulaR1C1 = "xyz"

        'Copy three lines in column A:C and paste 1 line down
        Range("A" & i-1 & ":C" & i-1).Copy Destination:=Range("A" & i)
        
        'Change the formula in column E for this line
        Range("E" & i).FormulaR1C1 = "=R[-1]C*R[4]C"
        
        'Not sure if this is what you are actually after here. Perhaps that should be `Range("E" & i & ":AO" & i)?`
        Range("E" & i).AutoFill Destination:=Range("E37:AO37"), Type:=xlFillDefault

    Next
End Sub

Понравилась статья? Поделить с друзьями:
  • Vba excel номер страницы
  • Vba excel номер столбца активной ячейки
  • Vba excel номер последней ячейки
  • Vba excel номер последнего столбца
  • Vba excel номер недели по дате