Как изменить текстовое поле на текущем слайде PowerPoint с помощью кнопки с помощью VBA? - PullRequest
0 голосов
/ 22 марта 2019

Я новичок в VBA и мне нужна помощь.Я пытаюсь создать модуль для презентации PowerPoint, над которой я работаю.В презентации некоторые из моих слайдов содержат два текстовых поля, в которых отображаются баллы для двух разных команд, а также две кнопки для начисления баллов одной из команд.Модуль должен изменить текст в текстовом поле после нажатия соответствующей кнопки, чтобы отобразить новый счет команды.После начисления баллов презентация продолжается до следующего слайда с кнопками и текстовыми полями, где должен отображаться текущий счет.

У меня есть несколько проблем с кодом на данный момент, но я помогу двум знать,как я могу ссылаться на текстовое поле на конкретном слайде.Я знаю, что "name = ActivePresentation.SlideShowWindow.View.Slide.Name" возвращает строку типа "name = "Slide11", если слайд 11 является текущим слайдом, и я также знаю, что "Slide11.TextBoxTeam1.Text = "Hello World" "устанавливает текст в текстовом поле команды на" Hello world "Но "name.TextBoxTeam1.Text = "Hello World"" не работает. Я уверен, что это только синтаксис, но я не могу понять это.

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 22 марта 2019

Если я правильно читаю ваш код, name - это строковая переменная со значением, равным имени Slide11. Вы не можете получить доступ к свойствам Slide11 через тип данных String, независимо от того, является ли значение строки именем слайда или нет. Если Slide11.TextBoxTeam1.Text = "Hello World" работает и вы хотите заменить Slide11 на переменную, ссылающуюся на этот слайд, тогда вам нужна переменная объекта слайда.

Dim name As String
name = ActivePresentation.SlideShowWindow.View.Slide.name

Dim mySlide As Slide
Set mySlide = ActivePresentation.Slides(name)

mySlide.Shapes("TextBoxTeam1").TextFrame.TextRange.Text = "Hello World"

Обратите внимание, что mySlide.TextBoxTeam1.Text = "Hello World" не работал для меня, в то время как это было: mySlide.Shapes("TextBoxTeam1").TextFrame.TextRange.Text = "Hello World", поэтому я заменил эту строку в коде.

...