Изменение Specifi c Таблица шрифтов через VBA в PowerPoint - PullRequest
0 голосов
/ 27 февраля 2020

Существует ли какая-либо причина, по которой это применяет изменения шрифта ко всем таблицам, а не к введенной пользователем? Спасибо. Независимо от того, что я делаю, он всегда будет заменять каждую таблицу на каждом слайде на введенный шрифт, а не на каждую таблицу с одинаковым именем на каждом слайде. Спасибо

Sub Button3()
  Dim bpFontName As String
    Dim bpSize
    Dim bpItem As String
    Dim oshp As Shape
Dim osld As Slide
Dim otbl As Table
Dim iRow As Integer
Dim iCol As Integer
Dim x As Long

    bpFontName = InputBox("Please enter font", "font type", "Calibri")
        bpSize = InputBox("Please enter font size", "fontsize", "12")
        bpItem = InputBox("Please enter the shape name", "shapename", "TextBox 1")

For Each osld In ActivePresentation.Slides
For Each oshp In osld.Shapes
With Shape
If Shape.Name = bpItem Then
If oshp.HasTable Then
Set otbl = oshp.Table
For iRow = 1 To otbl.Rows.Count
For iCol = 1 To otbl.Columns.Count
otbl.Cell(iRow, iCol).Shape.TextFrame.TextRange.Font.Size = bpSize
otbl.Cell(iRow, iCol).Shape.TextFrame.TextRange.Font.Name = bpFontName
Next iCol
Next iRow
End If
End If
End With
Next oshp
Next osld

1 Ответ

1 голос
/ 27 февраля 2020

Проблема с этими строками

With Shape
If Shape.Name = bpItem Then

Shape не указан c - это тип объекта, а не что-то в презентации. VBA пытается угадать, что нужно, как можно лучше.

Окружающие строки кода используют oshp для ссылки на спецификацию c Shape:

For Each oshp In osld.Shapes

и

If oshp.HasTable Then

Используйте oshp везде в коде в For...Next l oop, чтобы по очереди обратиться к каждому Shape объекту. Кроме того, при использовании With не повторяйте объект, просто используйте точечную запись. Или не используйте With:

For Each oshp In osld.Shapes
  With oshp
    If .Name = bpItem Then
      If .HasTable Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...