Я пишу довольно длинный макрос в Excel VBA. Я хочу использовать именованные диапазоны вместо указания в макросе. Этот макрос предназначен для долгосрочного использования. Что произойдет, если диапазон сдвинется другим пользователем? Как я могу настроить свой код, чтобы мои именованные диапазоны могли размещаться для изменения позиций?Работа с изменением именных диапазонов Excel VBA
ответ
Я (лично) ненавижу именованные диапазоны. Особенно, когда вы копируете или вставляете листы/диапазоны из одного файла в другой, вы всегда получаете мертвые ссылки или копируете по именованным диапазонам, которые больше не работают или переименованы (поскольку они уже существовали в этом файле).
Мое решение это один из двух следующих:
(1) Я посвящаю определенную часть (или даже модуль) в VBA, чтобы объявить свои диапазоны в глобальных переменных. Это очень похоже на Dim
всех переменных в начале каждого под.
'*********************************************************
'** Declaring all ranges and where to find which data
'*********************************************************
Dim rngNamedRangeName As Range
Sub SetupAllGlobalVariables()
Set rngNamedRangeName = ThisWorkbook.Worksheets(1).Range("A1:C10")
End Sub
'*********************************************************
'** After that all your normal subs follow and whenever
'** necessary you can call the above to get your ranges
'*********************************************************
Sub ExampleCodeToFormatYourRanges()
Call SetupAllGlobalVariables
With rngNamedRangeName
.Interior.ColorIndex = 36
End With
End Sub
(2) Тем не менее, мой предпочтительный второй раствор должен иметь отдельный very hidden
лист, где я ссылаться/ссылки все диапазоны (которые важны для меня) снова. Итак, в основном, у меня в этом отдельном листе все «важные» данные снова. Это будут ваши именованные диапазоны. Но никто не может трогать этот лист (вот почему его очень скрыт). Если какой-либо из ваших диапазонов изменяется или изменяется, тогда легко снова связать диапазоны на этом скрытом листе с другими листами. Тем не менее, на скрытом листе все данные все еще находятся в одном месте и позволяют вам жестко закодировать все диапазоны в вашем VBA (взяты только из скрытого листа).
Даже программисты, не являющиеся разработчиками VBA, обычно могут исправить такие вещи вторым методом. С помощью первого метода вам, вероятно, всегда понадобится кто-то с навыками VBA, чтобы исправить это.
Примечание. Вышеупомянутое не является единственным решением и не может быть лучшим решением. Но я могу сказать, что это оказалось полезным решением даже для крупных корпораций.
- 1. Класс именных диапазонов - Excel VBA
- 2. Удаление сломанных именных диапазонов в Excel с использованием VBA
- 3. Excel VBA Macro для применения условных формул с изменением именных диапазонов
- 4. Повторная привязка именных диапазонов в VBA
- 5. Итерация и заполнение именных диапазонов в Excel
- 6. Удаление именных диапазонов
- 7. Перемещение диапазонов в excel VBA
- 8. Работа с массивами VBA Excel
- 9. Call excel Модуль VBA с переменным изменением
- 10. Массив сценария приложения из именных диапазонов
- 11. Проблема с использованием динамических именных диапазонов для каскадной проверки данных
- 12. VBA Excel работа со строками
- 13. VBA, Excel 2010 - переименование именованных диапазонов
- 14. Excel VBA, выбирающий несколько динамических диапазонов
- 15. Excel 2010 VBA Help Копирование диапазонов столбцов
- 16. Excel VBA - Союз диапазонов и его поддиапазоны
- 17. Использование массива диапазонов в VBA - Excel
- 18. Выбор нескольких диапазонов в Excel VBA
- 19. Excel VBA - Копирование диапазонов в непустые строки
- 20. Работа с массивами в классах (Excel VBA)
- 21. Работа с таблицей запросов в Excel/VBA
- 22. Excel VBA - Работа с подгруппой массива
- 23. Excel VBA Регулярные выражения Работа с котировками
- 24. Добавление диапазонов в vba
- 25. Работа с недавним изменением $ .parseJSON
- 26. Как использовать Excel диапазонов в Excel VBA формул
- 27. Усреднение различных диапазонов длин в excel с VBA
- 28. Excel/VBA - Функция соответствия индексов с использованием динамических диапазонов
- 29. Excel VBA Вложенный для каждой петли с использованием именованных диапазонов
- 30. Вычитание двух диапазонов в Excel с использованием VBA
Благодарим за отзыв. Но ваше второе решение может пожертвовать удобством для нескольких пользователей и переносимость макроса и электронной таблицы. Когда у вас есть скрытая электронная таблица, она в конечном итоге выйдет из памяти. – Dombey
В какой-то момент вы должны сообщить VBA, где найти данные, и пока вы не поместите его на структурированный сервер баз данных (SQL), вам нужно где-то жестко закодировать ссылки. Итак, теперь у вас есть три варианта, и вы можете их оценить и поэкспериментировать с ними столько, сколько пожелаете. Я (лично) сделал это в течение длительного времени и пришел к вышеупомянутым выводам. Тем не менее, различные установки/параметры могут привести к разным выводам. Итак, получайте удовольствие, пробовав их все и сравнивая их. Возможно, кто-то может даже добавить другое практическое решение. – Ralph