Хотя метод существует в листе - PullRequest
0 голосов
/ 17 июня 2019

У меня есть кнопка ОК, я вызываю метод листа Xyz.Но когда я нажимаю эту кнопку ОК, вызывающий метод или элемент данных не найден.Несмотря на то, что метод существует в Xyz sheet.but sheet - protected.im делает незащищенным перед обработкой кода.Почему я получаю ошибку, даже если существует правильный метод?

Dim wsWarnErr As Object

   If BC_FC_RadioButton.Value Then
    Call wsWarnErr.GroupByBC_FC
  End If

после того, как вышеупомянутое изменение получает ошибку как 'переменная объекта или с не установленной переменной блока'

1 Ответ

2 голосов
/ 17 июня 2019

Скажем, у вас есть это в вашем Sheet1 кодовом модуле:

Option Explicit

Public Sub SayHello()
    Debug.Print "Hello"
End Sub

Если вы попробуете это в обычном модуле:

Dim sht As Worksheet
Set sht = Sheet1
sht.SayHello

, вы получите ошибку компиляции "Методили элемент данных не найден ".

Ваш метод существует , но вы объявляете sht как тип Worksheet, а у типа" из коробки "типа" Рабочий лист "нет SayHello метод, так что вы получите эту ошибку.

Если вместо этого вы используете

Dim sht As Sheet1

или

Dim sht As Object

, вы не увидите ошибку, так как Sheet1 type имеет ли такой метод, и вызов ссылки с поздней привязкой As Object разрешается во время выполнения.

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