Я пытаюсь создать Spin Button через VBA в Excel, но это дает мне «ошибку автоматизации, катастрофический сбой»? - PullRequest
4 голосов
/ 26 марта 2019
Sub Test()
    Dim spinButton As Object
    Set spinButton = ActiveSheet.OLEObjects.Add(ClassType:="Forms.SpinButton.1", Link:=False, DisplayAsIcon:=False, Left:=276, Top:=58.5, Width:=12.75, Height:=25.5)
    spinButton.Object.Min = 1
    spinButton.Object.Max = 100
    spinButton.LinkedCell = "B2"
End Sub

Моя цель с приведенным выше кодом VBA - создать простую кнопку прокрутки, которая изменяет значение ячейки "B2" на 1.

Когда я запускаю код как макрос, он даетмне это предупреждение об ошибке:

error

, о которых они пишут на сайте MS здесь .

Вещиесть, мой код работает.Например, он создает кнопку прокрутки в нужном месте, добавляет правильные свойства и изменяет значение ячейки B2, когда я нажимаю кнопку прокрутки.

Я использую совершенно новый файл, в котором ничего нет,Никаких других макросов / модулей и полностью пустой таблицы.Я использую свой код VBA в «ThisWorkbook», если он имеет какие-либо различия:

failure

Ответы [ 2 ]

3 голосов
/ 26 марта 2019
spinButton.Object.Min = 1 
spinButton.Object.Max = 100
spinButton.LinkedCell = "B2"

Вы получаете эту ошибку, потому что вы заранее устанавливаете минимальное значение как 1 и затем связываетесь с ячейкой без значения.Если вы сделаете обратное, то это будет работать

spinButton.LinkedCell = "B2"

spinButton.Object.Min = 1
spinButton.Object.Max = 100
2 голосов
/ 26 марта 2019

Это сработало для меня с двумя небольшими изменениями:

  1. Вставьте этот код в обычный модуль, а не в модуль ThisWorkbook.

  2. Добавьте строку, которая устанавливает значение B2 в 1, прежде чем связать с ней кнопку прокрутки (при условии, что это то, что вы хотите, чтобы начальное значение было, но вы могли бы так же легко установить его в 100 или что-то среднее).


Sub Test()
    Dim spinButton As Object
    Set spinButton = ActiveSheet.OLEObjects.Add(ClassType:="Forms.SpinButton.1", _
        Link:=False, DisplayAsIcon:=False, Left:=276, Top:=58.5, Width:=12.75, Height:=25.5)

    spinButton.Object.Min = 1
    spinButton.Object.Max = 100

    ActiveSheet.Range("B2").Value = 1
    spinButton.LinkedCell = "B2"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...