Этот однострочник делает слишком много вещей одновременно, что очень затрудняет правильную диагностику проблемы.
Начните с объявления переменных Worksheet
, чтобы у вас был интерфейс с ранней привязкой, чтобы сделатьваш участник звонит против - учтите, что указание с ActiveWorkbook
является предположением, которое я здесь делаю, что должно быть эквивалентно вашему неявно квалифицированному Sheets
вызову:
Dim mySheet As Worksheet
Set mySheet = ActiveWorkbook.Worksheets("mySheet")
Dim otherSheet As Worksheet
Set otherSheet = ActiveWorkbook.Worksheets("other sheet")
mySheet.Move Before:=otherSheet
Если ваш код попадает в.Move
вызов метода, он должен "просто работать".Если он взорвался до этого, проверьте:
- Правильно ли написано имя листа в строковом литерале
- Что родительской рабочей книгой этого листа является
ActiveWorkbook
Если все эти листы существуют во время компиляции в ThisWorkbook
(рабочая книга, содержащая ваш проект VBA), тогда вам не нужны никакие переменные - они у вас уже есть.
Посмотритев Project Explorer (Ctrl + R) все модули листов имеют два имени.В скобках указано свойство Name
;перед ним - CodeName
, который вы найдете в окне инструментов Properties (F4) в (Name)
.Измените его, например, на mySheet
, и теперь идентификатор mySheet
можно использовать в любом месте этого проекта VBA для ссылки на этот конкретный лист - независимо от того, что говорит его "имя вкладки".