Макрос Excel против надстройки Excel и выбор ячеек - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь определить, почему «Cells.Select» (который используется для выбора всех ячеек на листе) будет работать в макросе, но точно такая же команда приведет к ошибке времени выполнения: 1004. ИмеетНадстройка была настроена правильно?Есть ли разница в том, как выполняется код между запуском макроса и запуском надстройки?

Это также будет применяться к любой команде, использующей «Ячейки», например: ...

If Not IsEmpty(Cells(a, 1)) Then

    Cells(a, 3) = Num

End If

Обратите внимание, что значение Num является действительным целым числом, но здесь я пытаюсь подчеркнуть, что фактическое значение ячейки не установлено в Num, когда условие TRUE.

Спасибозаранее

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Используя ваш пример и дополнительную информацию, которую вы предоставили в разделе комментариев, ваш код:

If Not IsEmpty(Cells(a, 1)) Then

    Cells(a, 3) = Num

End If

Лучше было бы:

With Application.ActiveSheet

    If Not IsEmpty(.Cells(a, 1)) Then

        .Cells(a, 3) = Num

    End If

End With

Кроме того, попытайтесь сопротивлятьсяиспользуя .Select, если вам действительно не нужно.Проверьте: эта отличная статья

0 голосов
/ 28 февраля 2019

ThisWorkbook будет напрямую ссылаться на рабочую книгу, в которой находится код. Можно создать скрытый рабочий лист как часть надстройки, сделав это самостоятельно, и это единственная причина, когда-либо использовать ThisWorkbook вНадстройка.

С надстройкой вы всегда хотите сделать ссылку на ActiveWorkbook, чтобы применить макросы к любой книге, надстройкой которой нужно управлять.Также используйте ActiveSheet для ссылок на листы.

Измените код на ActiveSheet.Cells.Select

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