2016-09-23 5 views
3

Когда мой коллега пишет макрос с ссылкой Selection, он почему-то меняет слово Selection на нижний регистр s и останавливает его от работы.Команда выбора изменяется на нижний регистр в VBA

Пример:

Selection.Copy 

изменения

selection.Copy 

Может кто-то посоветовать, что происходит, пожалуйста? Я бы догадался о его настройках где-то, поскольку он еще не писал никаких макросов.

+6

Он мог бы объявили переменную под названием 'selection' где-то (общественные). – arcadeprecinct

+4

Или он записал макрос под названием «Выбор». Просто найдите макросы своих открытых книг для выбора слова. Возможно, в Personal.xlsb. – vacip

+0

Сообщение об ошибке также может быть полезно. – arcadeprecinct

ответ

3

Редактор VB будет автоматически капитализировать в соответствии с оболочками имен, используемых вашим кодом для переменных, подпрограмм и других типов, и он будет использовать примерно тот же порядок, что и области применения.

Вы можете решить эту проблему, найдя любые переменные под названием selection и сменив корпус на Selection. Если вы не можете найти их, попробуйте временно , добавив переменную под названием Selection, и все оболочки в области будут меняться.

Например, если вы определяете переменную workshEEts, обратите внимание, что использование ThisWorkbook.Worksheets.Count будет использовать один и тот же корпус:

Dim workshEEts As Workbook 
Debug.Print ThisWorkbook.workshEEts.Count 

Но есть также глюк в редакторе, так как кэш это имена даже после вы удаляете один. Например, если вы удалите первую строку из приведенного выше примера, корпус 2-й линии остается неизменным, и добавлением нового использования Worksheets результатов в кэшированном корпусе:

Debug.Print ThisWorkbook.workshEEts.Count 
ThisWorkbook.workshEEts(1).Select 

Итак, как вы снимите кэш? Создать новую переменную, даже если только временно, с корпусом вам требуется, а затем все контекстными оболочках будут обновлены:

Dim Worksheets 
Debug.Print ThisWorkbook.Worksheets.Count 
ThisWorkbook.Worksheets(1).Select 
+0

Спасибо за ответ, это имеет смысл, так как когда я удалил макрос (он написал макрос, не содержащий команд, но обозначенный «выбор»), ссылка на выбор выполнялась, но оставалась в том же строчном формате! Спасибо за вашу помощь! –