Я вставил большое количество кнопок управления формой (с текстом "") на лист Excel путем копирования и вставки (из другой книги).
Эти кнопки подключены к этому макросу (который находится в файле PERSONAL.XLSB):
Option Explicit
Sub ChangeSomething()
' The button which called the macro.
Dim b As Button
Set b = ActiveSheet.Buttons(Application.Caller)
' Do run the code if the button was not already active.
If b.Text <> "x" Then ' SEEMS TO BE THE PROBLEM
' Do something
' Mark the button as activated.
b.Text = "x"
b.Font.Bold = True
' If the button was already activated, deactivate it.
Else
'Mark the button as deactivated.
b.Text = " "
End If
End Sub
Эта настройка ранее работала правильно. Но после копирования я получаю Runtime Error 1004
"Невозможно установить свойство Text класса Button" .
При обработке исключение выглядит как Error 438
"ObjectНе поддерживает это свойство или метод ".
Отладка отмечает строку:
If b.Text <> "x" Then
Меня удивляет то, что получениеКажется, что свойство text выдает ошибку времени выполнения, но установка значения выполняется нормально :
b.Text = "x"
Правильная кнопка на правильном рабочем листе правильной рабочей книги изменена.
Как только я вручную изменяю текст кнопки на что-то отличное от "", макрос, похоже, тоже работает.
К сожалению, вставленные кнопки не отображаются в списке, возвращаемом ActiveSheet.Buttons
, поэтому я не могу зациклить их, чтобы изменить их значения.
Я не уверен, что это уместно, но я загрузил здесь образец файла.