Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/222: Рейтинг темы: голосов - 222, средняя оценка - 4.98
5 / 2 / 1
Регистрация: 04.03.2012
Сообщений: 28
1

Свойство .Range для умной таблицы. Обращение по названию столбца

10.03.2018, 05:32. Показов 41925. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
На листе имеется умная таблица с заголовками.
При работе с ней макросами, я обращаюсь к ней так:

Visual Basic
1
2
3
4
WTName = "UT"
Set WS = ThisWorkbook.Worksheets("Лист1")
Set WT = WS.ListObjects(WTName)
WT.Range(i1, 3)
Последняя строка, мне не нравится, т.к. при добавлении столбца в начало таблицы. Формула "поедет". Т.к. нужно будет брать уже 4ый столбец и т.д.
Можно ли строку задавать переменной, а столбец задавать так как он назван в самой таблице? Чтобы не быть привязанным к порядку столбцов в таблице.

Что-то вроде:
Visual Basic
1
WT.Range(i1, WTName & "[Столбец3]")
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.03.2018, 05:32
Ответы с готовыми решениями:

Найти количество строк 3-го столбца умной таблицы
Ребят нужно было количество строк 3 столбца умной таблицы найти. Сделал циклом от...

Из умной таблицы в текстбокс
Что я делаю не так Me.CBHumans.List = Array(EmployeesListObj.Range(2))

Увеличение диапазона умной таблицы
Здравствуйте!!! Срочно нужна помощь!!! Я не силен в VBA, а мне необходимо сделать программный код....

(excel_2010_VBA) Сортировка умной таблицы
Здравствуйте. Проблема заключается в том, что если указать конкретное имя таблицы, то сортировка...

5
Динохромный
1396 / 761 / 282
Регистрация: 22.12.2015
Сообщений: 2,381
10.03.2018, 08:09 2
Лучший ответ Сообщение было отмечено Medison1 как решение

Решение

Цитата Сообщение от Medison1 Посмотреть сообщение
WT.Range(i1, WTName & "[Столбец3]")
Полагаю, range возвращает обычный диапазон, для которого доступно свойство cells. Не очень понял, что такое i3 - если это число, равное номеру строки, то код будет (например, что-бы выделить ячейку)
Код
WT.Range(WTName & "[Столбец3]").Cells(i1,1).Select
или
Код
WT.Range(WTName & "[Столбец3]").Rows.Item(i1).Select
1
...
39 / 37 / 13
Регистрация: 08.10.2016
Сообщений: 171
10.03.2018, 12:31 3
Так формула не "поедет" :

Visual Basic
1
2
3
Dim R As Range
'...
Set R =WT.Range(i1, 3)
Иными словами R -становится указателем на на искомый диапазон.
Дальше просто работаем с ней как заблагорассудится
0
5 / 2 / 1
Регистрация: 04.03.2012
Сообщений: 28
10.03.2018, 12:51  [ТС] 4
Dinoxromniy,
Хорошие варианты визуально, но по какой-то причине не работают.
Ошибка: #5 invalid procedure call or argument

Пробовал еще так:
Visual Basic
1
WT.Range(WTName & "[Столбец3]",i1)
Ошибка: #13 Type mismatch

Вот этот вариант оказался рабочим. Не нужно было писать перед этим "WT."
Visual Basic
1
String1 = Range(WTName & "[Столбец3]").Cells(i1,1)
ji2n,
Спасибо. Но немного не то. В данном случае искомый диапазон зависит от константы "3". А мне необходимо уйти от этой константы к названию столбца умной таблицы. Т.к. столбцы могут изменять порядок и в какой-то момент нужный столбец будет к примеру не 3им, а 4ым или 5ым и т.д.
0
15147 / 6420 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
10.03.2018, 13:31 5
Medison1, весь столбец (включая заголовок и ячейку из строки итогов)
Visual Basic
1
wt.listcolumns("заголовок_столбца").range
Только столбец с данными например так
Visual Basic
1
wt.ListColumns("заголовок_столбца").DataBodyRange
Хорошая шпаргалка по тому, как обращаться к разным частям умной таблицы: https://www.thespreadsheetguru... cel-tables
2
Динохромный
1396 / 761 / 282
Регистрация: 22.12.2015
Сообщений: 2,381
10.03.2018, 13:57 6
Цитата Сообщение от Medison1 Посмотреть сообщение
по какой-то причине не работают.
Да, разумеется в обоих случаях должно быть WS вместо WT. Тут обращение происходит со стороны листа рабочей книги, а не через саму умную таблицу (последний случай смотрите у Казанский).
0
10.03.2018, 13:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2018, 13:57
Помогаю со студенческими работами здесь

Поиск умной таблицы по имени
Существует главнаяТаблица, в которую данные заносятся из формы, в т.ч. данные: -...

Удаление строк из умной таблицы по условию
Добрый день, уважаемые форумчане. Имеется кусок кода, который удаляет строки по условию При этом...

Удаление выделенных строк из умной таблицы
Ребят есть умная таблица с фамилиями (3 столбца)....человек тыкает на нужные (в любой столбец...

Поместить в Комбобокс отфильтрованную колонку умной таблицы
Ребят, как в Комбобокс поместить отфильтрованную колонку умной таблицы. от а до я Private...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru