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

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

damask_86ru

Дата: Понедельник, 14.09.2015, 13:14 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Привет Всем!
Как определить столбец активной ячейки и активировать ячейку в седьмой строке (к примеру) этого же столбца.

 

Ответить

Саня

Дата: Понедельник, 14.09.2015, 13:54 |
Сообщение № 2

Группа: Друзья

Ранг: Ветеран

Сообщений: 1067


Репутация:

560

±

Замечаний:
0% ±


XL 2016

[vba]

Код

dim iCol as integer

iCol=activecell.column
msgbox iCol

cells(7,iCol).activate

[/vba]

 

Ответить

damask_86ru

Дата: Понедельник, 14.09.2015, 23:16 |
Сообщение № 3

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Саня, спасибо!
А возможно как то дописать код, теперь чтобы в активную ячейку седьмой строки занести значение из ячейки А1?

 

Ответить

damask_86ru

Дата: Понедельник, 14.09.2015, 23:21 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 60


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Все, вопрос закрыт разобрался! Еще раз спасибо!
[vba]

Код

Dim iCol As Integer
             iCol = ActiveCell.Column
             Cells(7, iCol).Value = Range(«A1»).Value

[/vba]

 

Ответить

Добрый день.

Помогите пжста  переделать макрос.
Сейчас действие выполняется только для столбца «А» — Cells(Rows.Count, «A»),

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

Код
Option Explicit
Option Compare Text

Sub XXXX()
Dim i%, box As String
     With Sheets(1)
     box = InputBox("Укажите номер БЕ", "_", "1200")
     If box <> "" Then
        For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
            If (Left(Cells(i, 1), 4) <> "Z_BW") _
            And (Left(Cells(i, 1), 2) <> "Y_") _
            And (Left(Cells(i, 1), 3) <> "ZSA") _
            Then Cells(i, 1) = Cells(i, 1) & "_" & box
        Next
    End If
    End With
End Sub

Определение активных составляющих книги

Мне кажется, многие загонялись таким вопросом, как определить активную ячейку (на которой находится курсор), строку или столбец. Или же хотелось получить адрес в формате А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 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 намного удобнее, чем на портале сервиса, а для загрузки в сервис достаточно сформировать несложный файл. Заполнил новые строки, выделил их по любому столбцу, нажал кнопку и файл готов.


Активная ячейка в 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

0 / 0 / 0

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

Сообщений: 9

1

Excel

Получение номера выделенной колонки

21.03.2011, 13:50. Показов 28285. Ответов 11


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

Как получить номер выделенной колонки, т.е. выделил колону ‘С’, а он мне выдал, колонка ‘3’, а не ‘C:C’
Заранее спасибо



0



3944 / 2858 / 665

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

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

Записей в блоге: 4

21.03.2011, 14:03

2

Selection.Column возвращает номер самой левой колонки выделения. Если выделение состоит из нескольких областей, то возвращается информация о первой выделенной области.



0



Masalov

22 / 5 / 1

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

Сообщений: 370

21.03.2011, 14:38

3

В некоторых случаях (н/р для сборки формул) необходимо знать буквенный эквивалент номера. Я написал функцию, ее иногда и использую. (Наверно есть и другие решения)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function НомерКолонкиСимволами(N)
  If N > 0 And N < 27 Then
    НомерКолонкиСимволами = Chr(N + 64)
    Exit Function
  End If
  x = Fix(N / 26)
  t = N - x * 26
  If t = 0 Then
    t = 26
    x = x - 1
  End If
  НомерКолонкиСимволами = Chr(x + 64)
  НомерКолонкиСимволами = НомерКолонкиСимволами & Chr(t + 64)
End Function



0



Laidi

0 / 0 / 0

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

Сообщений: 7

21.03.2011, 16:08

4

Мне кажется так проще :-)

Visual Basic
1
2
    n = Selection.Column()
    MsgBox n



0



pashulka

4131 / 2235 / 940

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

Сообщений: 4,624

21.03.2011, 16:16

5

В некоторых случаях, даже при вводе формул(функций) можно использовать номер столбца, например :

Использование WorksheetFunction :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
iCellsOne = Cells(1, 1).Address
iCellsTwo = Cells(5, 1).Address
xRange = Range(iCellsOne & ':' & iCellsTwo)
iWFS = Application.Sum(xRange)
 
'или так :
 
iWFS = Application.Sum(Range(Cells(1, 1).Address & ':' & Cells(5, 1).Address))
 
'Ввод формулы/функции :
 
iCellsOne = Cells(1, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False)
iCellsTwo = Cells(5, 1).Address(RowAbsolute:=False, ColumnAbsolute:=False)
 
Cells(6, 1).Value = '=SUM(' & iCellsOne & ':' & iCellsTwo & ')'
Cells(6, 1).Formula = '=SUM(' & iCellsOne & ':' & iCellsTwo & ')'
Cells(6, 1).FormulaLocal = '=СУММ(' & iCellsOne & ':' & iCellsTwo & ')'



0



pashulka

4131 / 2235 / 940

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

Сообщений: 4,624

21.03.2011, 20:42

6

Для получения буквенного обозначения столбца, можно использовать ActiveCell (более подробно можно прочитать в самом первом ответе)

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
'Вариант I(a).
 
iClmn = ActiveCell.Column
iAdr = ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False)
 
If iClmn > 26 Then
   iClmNa = Left(iAdr, 2)
Else
   iClmNa = Left(iAdr, 1)
End If
 
'Вариант I(b).
 
iClmn = ActiveCell.Column
iAdr = ActiveCell.Address
 
If iClmn > 26 Then
   iClmNa = Mid(iAdr, 2, 2)
Else
   iClmNa = Mid(iAdr, 2, 1)
End If

To Laidi
Нет не проще, так как несмотря на постановку вопроса, автору как раз и НЕ НУЖЕН номер столбца … прочитайте более внимательно сам вопрос, а не его заголовок



0



0 / 0 / 0

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

Сообщений: 9

22.03.2011, 10:30

 [ТС]

7

всем спасибо



0



mmos

4 / 4 / 2

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

Сообщений: 151

22.03.2011, 12:04

8

Проверенный преобразователь номера столбца в его текстовое обозначение:

Visual Basic
1
2
3
4
5
If NomerStolbca < 27 Then
NaimenStolbca = Chr(64 + NomerStolbca)
Else
NaimenStolbca = Chr(64 + (NomerStolbca - 1)  26) & Chr(65 + (NomerStolbca - 1) Mod 26)
End If

Носи на здоровье!



0



palva

3944 / 2858 / 665

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

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

Записей в блоге: 4

22.03.2011, 12:48

9

Можно так:

Visual Basic
1
2
s = ActiveCell.Address
s = Mid(s, 2, InStr(2, s, '$') - 2)



0



Wulf007

23.01.2013, 11:09

10

Может, кому будет полезно:
Скрытие диапазона столбцов при номирации столбцов числом:

Скрывает только один столбец (как указать «с до» не нашёл)

Visual Basic
1
YYYY.Columns (ХХХХ).EntireColumn.Hidden = True

Где YYYY – что-нибудь
ХХХХ – колонка из YYYY
Кое-кто перебирает все значения, скрывая столбцы

Разбирался всего день. Но ответ нашел.
Вот как надо.

Visual Basic
1
2
3
4
 With Worksheets("YYYY")
               .Range(.Cells(7, столбец_от), _
               .Cells(7, столбец_до)).EntireColumn.Hidden = True
End With

ilich87

1 / 1 / 0

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

Сообщений: 10

22.01.2014, 11:35

11

Топик древний, но всё же.

Visual Basic
1
 Set rngRange = wsSheet.Columns(wsSheet.Cells(1, 1).Column)

В итоге а rngRange именно область с адресом «A:A», а для того что бы убрать $ не нужно ни чего придумывать

Visual Basic
1
addressmy = rngTRange.Address(0, 0)

даст вам именно строку «A:A» а не «$A:$A».



0



snipe

4038 / 1423 / 394

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

Сообщений: 3,541

22.01.2014, 13:41

12

Цитата
Сообщение от gas1979
Посмотреть сообщение

т.е. выделил колону ‘С’

Visual Basic
1
asd = Replace(Selection.Address, "$", "")



0



Like this post? Please share to your friends:
  • Vba excel номер последней ячейки
  • Vba excel номер последнего столбца
  • Vba excel номер недели по дате
  • Vba excel номер листа в книге
  • Vba excel номер дня недели