Ошибка выполнения powerpoint vba 424 требуется объект

Я пытаюсь создать простой PowerPoint с некоторым количеством VBA, чтобы сделать его интерактивным викториной.

Sub CorrectAnswer()
Points.Caption = (Points.Caption) + 10
Output = MsgBox("Your answer is correct, well done!", vbOKOnly, "Correct     Answer")
ActivePresentation.SlideShowWindow.View.Next
End Sub

Sub IncorrectAnswer()
Points.Caption = (Points.Caption) - 0
Output = MsgBox("Your answer is wrong.", vbOKOnly, "Wrong Answer")
ActivePresentation.SlideShowWindow.View.Next
End Sub

Sub FIB1()
    Dim answer As String

    answer = InputBox(Prompt:="Type your code below")
    If answer = "test response" Then
        CorrectAnswer
    Else
        IncorrectAnswer
    End If
    ActivePresentation.SlideShowWindow.View.Next
End Sub


Sub Reset()
Points.Caption = 0
ActivePresentation.SlideShowWindow.View.Exit
End Sub

В области Sub FIB1 у меня возникают проблемы. Это дает мне ошибку времени выполнения «424», указывающую, что объект не указан. Я хочу, чтобы он задает вопрос, и они нажимают кнопку / ссылку на слайде, и открывается диалоговое окно, в котором вы можете ввести свой ответ. В этот момент они нажимают ОК, и, если они ввели его правильно, они получат правильный ответ. Если нет, конечно, они получат неверный ответ.

Это должен быть тип установки с заполнением пустого места, а не стиль с множественным выбором, который у меня также есть и работает нормально. Кажется, это единственная проблема, которая вызывает у меня проблемы. Я недостаточно знаю VBA, чтобы понять, что я делаю неправильно, и большая часть этого кода пришла из просмотра видео на YouTube, чтобы собрать его воедино.

Может кто-нибудь помочь?

Поместите Option Explicit в верхнюю часть модуля, объявите все свои переменные с явным типом. Какая конкретная инструкция выдает ошибку? Ошибка 424 - «требуется объект», а не «объект не указан». Вы вызываете участника против чего-то, что не является объектом, по всей вероятности, неявного Variant.

Mathieu Guindon 13.09.2018 20:21

Что такое очки? Метка ActiveX или что-то подобное? Если это так, вам нужно получить ссылку на объект и установить заголовок по-другому: ActivePresentation.Slides (1) .Shapes ("Points"). OLEFormat.Obje‌ ct.Caption = "любой"

Steve Rindsberg 13.09.2018 21:14

@MathieuGuindon Вы хотите поставить это поверх всего или только на область FIB1? Кроме того, вы правы, там написано «требуется объект», а не «объект не указан». Я неправильно вспомнил. Спасибо!

RoJo 13.09.2018 21:51

@SteveRindsberg Points - это всего лишь очки, которые человек получит в конце теста, из 100.

RoJo 13.09.2018 21:52
Option Explicit находится в самом верху модуля, в разделе декларации. Еще лучше, перейдите в Инструменты> Параметры и установите флажок «Требовать объявление переменной», чтобы VBE автоматически добавлял его везде для вас.
Mathieu Guindon 13.09.2018 21:58

@MathieuGuindon, я пробовал это, но все равно ошибка 424. То, что выше, - это весь мой код, поэтому, если мне не хватает других частей, дайте мне знать. Как я уже сказал, просто пытаюсь собрать все воедино.

RoJo 13.09.2018 23:21

@ user3072193 "Очки - это всего лишь очки, которые человек получит в конце теста, из 100" ... это может быть то, что он представляет, но это явно какой-то объект. Что это за объект?

Steve Rindsberg 16.09.2018 04:05

Может быть, мне лучше спросить, как бы вы это запрограммировали? Это должна быть интерактивная викторина, в которой доступны слайды с несколькими вариантами ответов, а также «заполните пробел». Я не против признаться, что я новичок, но это то, что я придумал. К сожалению, я не знаю достаточно, чтобы ответить на ваш вопрос @SteveRindsberg

RoJo 05.10.2018 22:32

@RoJo Вы пытаетесь установить для свойства .Caption объекта Points строковое значение. Это говорит о том, что это объект ActiveX ... то есть TextBox или другой объект, который вы вставили с помощью вкладки «Разработчик». Что это за объект на самом деле? Кроме того, в какой строке возникает ошибка?

Steve Rindsberg 05.10.2018 23:34
0
9
943
0

Другие вопросы по теме