Как присвоить имя столбцу автоматически?

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
WP
Сообщения: 11
Зарегистрирован: 20 май 2005, 15:57

Привет, всем! Посоветуйте, как сделать так, чтобы каждому столбцу таблицы автоматически присваивалось имя по его наименованию в шапке таблицы. Пользоваться справкой по VBA так и не научилась. Интересно, она всегда на английском...?... Всем спасибо.
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

1. Выделите весь диапазон ячеек, включая "наименование в шапке таблицы" (если заголовок находится в самой первой ячейке, то возможно выделить сразу все столбцы) Затем в меню Вставка выбираете пункт Имя, затем команду Создать. В появившемся стандартном диалоговом окне Создать имена установите флажок напротив в строке выше и нажмите кнопку OK.

Примечание :
- При применении этого способа Вы не получите имя для целого столбца(ов), а только для выделенного диапазона минус заголовок.
- В MS Excel есть очень удобная возможность - использовать заголовки таблиц в качестве имён, при этом Вам не нужно будет присваивать ячейкам имена ни в ручную, ни программно.

2. В MS Excel 97 большая часть справки была переведена на русский. В остальных версиях справка по VBA вся на английском.
WP
Сообщения: 11
Зарегистрирован: 20 май 2005, 15:57

Замечательная функция! Спасибо!
Решила всё-таки поупражняться с написанием макросов дальше. Но у меня постоянно возникают какие-то ошибки. Сейчас не могу понять, что пропустила в этом случае.

Dim r As Range

Set r = ActiveCell.CurrentRegion
r.Select
Selection.CreateNames Top:=True, Left:=False, Bottom:=False, Right:=False
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Возможно на момент выполнения макроса ActiveCell не является частью заполненного диапазона, правда в этом случае Вы должны получить сообщение об ошибке (если не используете On Error …)

Код: Выделить всё

ActiveSheet.UsedRange.Item(1).CurrentRegion.CreateNames Top:=True
ActiveSheet.UsedRange.Cells(1).CurrentRegion.CreateNames Top:=True
P.S. Рекомендую обратить внимание на вторую часть моего примечания из прошлого message, так как эта возможность может серьёзно облегчить Вам работу с электронными таблицами. Если будут нужны ссылки на реальные примеры, то можете написать в приват.
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Я понимаю, что в чужой монастырь со своим уставом не ходят, но всё же … если Ваша таблица с данными построена таким образом, что не имеет пустых столбцов, то в этом случае можно использовать сокращённый вариант, а именно :

Код: Выделить всё

ActiveSheet.UsedRange.CreateNames Top:=True
Ответить