Глобалы VBA передаются как переменные - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть проект VBA, который работал. Я думаю, что единственным изменением было перемещение переменной из локальной в глобальную. Строка является параметром для подпрограммы. Теперь я понимаю, почему? «База данных» - это один из листов в рабочей книге ...

Она работала раньше, и я только что перешел с объявления локальных переменных на переменные глобальные (Publi c Const). При наведении курсора на переменные отображается sh = "Database" и rng = "C9: AK47", как и ожидалось. Кроме того, этот лист и диапазон находятся в активной рабочей книге.

--- ошибка: строка «Установить» под ошибками отображается как «индекс не в диапазоне» --- вопрос: почему? Извините, я не совсем ясно, но это работало, и я просто изменил одну вещь ...

''' globals
Option Explicit
Public Const gshDb As String = "Database"
Public Const grgDb As String = "C9:AK47"
''' call
breakFormulas True, gshDb, grgDb
''' sub
Sub breakFormulas(switch As Boolean, sh As String, rng As String)
Dim shRng As Range
Set shRng = Sheets(sh).Range(rng) ' yellow highlighted error - subscript out of range

1 Ответ

0 голосов
/ 10 апреля 2020

Это все отлично работает. У меня был пердеть мозг, и имя листа - «Панель инструментов», а не «База данных». Перечисленная ошибка довольно ясно сказала мне «проверь название листа». И мне это нравилось 10 раз, но мне пришлось смотреть 11 раз, чтобы увидеть это. Иногда я просто тупой.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...