Тип ошибки времени выполнения

Код ниже дает мне эту ошибку: Class does not support automation or does not support expected interface

Может кто-нибудь объяснить, почему я получаю эту ошибку

 Sub typeofcheck() Dim wks As New Worksheet If TypeOf wks Is Worksheet Then MsgBox "This is Worksheet" Else MsgBox "This is not" End If End Sub 

Проблема в As New .

AFAIK вы не можете создать новый экземпляр листа непосредственно; вам нужно будет вызвать метод Add в коллекции Sheets например:

 Public Sub typeofcheck() Dim wks As Worksheet Set wks = ActiveWorkbook.Sheets.Add If TypeOf wks Is Worksheet Then MsgBox "This is Worksheet" Else MsgBox "This is not" End If End Sub 

Ошибка вызвана попыткой доступа к недоступному интерфейсу .

Правильный способ сделать то, что вы хотите:

 Sub typeofcheck() Dim wks As Worksheet Set wks = Worksheets.Add Debug.Print TypeOf wks Is Worksheet If TypeOf wks Is Worksheet Then MsgBox "This is Worksheet" Else MsgBox "This is not" End If End Sub 

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

 Sub typeofcheck() Dim wks As New Worksheet Set wks = Sheets("someFunnySheetName") If TypeOf wks Is Worksheet Then MsgBox "This is Worksheet" Else MsgBox "This is not" End If End Sub 

IMHO проблема будет в том, что с DIM вы только выделяете какую-то память, а с помощью Set вы установите тип данных. Но VBA – это своего рода мистерия. Однажды я попытался прочитать что-то в документации MSDN, и это было хуже, чем ад …

edit1: я сделал еще один тест, и эта хорошая ошибка msg, о которой вы говорите, звучит очень профессионально, но если вы отлаживаете код и наведите указатель на переменную wks, он сообщает вам, что wks = <Object variable or With block variable not set> которая гораздо легче читать. Поэтому в будущем попробуйте отладить и наведите указатель мыши на переменные. И если вы не знаете, что делать, попробуйте несколько Set s 🙂 VBA – это волшебство

  • Excel / VBA - ошибка времени выполнения 91 возникает только после ввода и выхода из режима разработки
  • Ошибка -2147417848 (& H80010108): вызванный объект отключился от своих клиентов
  • Excel VBA Add Worksheet: «Эта команда не может использоваться для нескольких выборов»
  • Ошибка Excel 1004, выделить выделенные ячейки серым, когда да
  • Чтение файла excel в Java - Ошибка
  • Ошибка времени выполнения 424 Требуемый объект - VBA Start Stop
  • Ошибка выполнения 1004: не удалось вставить метод класса рабочей таблицы
  • Ошибка «Object variable not set»
  • Метод сортировки VBA класса Range не удался
  • проверка того, что файл с заголовком пуст
  • Код ошибки Excel 1004 - метод открытия рабочих книг объекта не выполнен
  • Interesting Posts

    Версия совместимости OTA версии 12.21 и ALM версии 11.52

    Excel 2016: добавление чисел в строку из ячеек с текстом и номерами

    Excel vba с использованием ADO для получения набора результатов в listobject

    Excel 2007 VBA использует значение строковой переменной в переменной объекта

    Excel: SumIf возвращает 0, когда ячейка пуста

    VBA Excel VerticalAlignment = xlCenter не работает

    Получение NumberFormat диапазона с использованием взаимодействия Excel в C #

    У меня проблемы с использованием reDim в VBA, не могу понять, как это работает

    Объединение нескольких листов в один рабочий лист, но его формат не похож на оригинал

    Несоответствие типов по значениям: «Ошибка выполнения 13»

    Как получить данные Excel в Word ContentControl

    Отображаемые данные таблицы сводной таблицы Excel 2012

    Расширенная сортировка Excel

    Ошибка сервера Oracle – «Поставщик именованных труб, ошибка: 40 – Не удалось открыть соединение с SQL Server»

    Предотвратить закрытие excel при закрытии пользовательской формы

    Давайте будем гением компьютера.