В процессе создания слайда через VBA в powerpoint мне нужно вставить «символ Wingdings» в сгенерированный текст, который представляет собой сравнение двух значений.Я сделал этот метод, который работает именно так, как я хочу
Sub formatDifference(header As String, old As Integer, now As Integer, txt As TextRange)
Dim diff As Integer
diff = old - now
With txt
If (diff > 0) Then
.InsertSymbol "Wingdings", getArrowCharCode("down")
' getArrowCharCode is a custom function to get the
' char code as an Integer
ElseIf (diff = 0) Then
.InsertSymbol "Wingdings", getArrowCharCode("right")
Else
.InsertSymbol "Wingdings", getArrowCharCode("up")
End If
.InsertBefore header & now & " (" ' <-- note this line
.InsertAfter " " & Abs(diff) & ")"
End With
End Sub
Sub formatDifference
, по сути, просто добавляет пункт с маркером в тексте (в примере ниже, процедура вызывается 4 раза додобавить текст без маркера).
Что я не понимаю, так это то, что когда я начинаю текст с какого-то текста, а затем использую метод InsertSymbol
, кажется, что текст фактически заменяется вместо добавления символа в конце.Вот пример другого кода:
Sub formatDifference(header As String, old As Integer, now As Integer, txt As TextRange)
Dim diff As Integer
diff = old - now
With txt
.InsertAfter header & now & " (" ' <-- line moved here
' it doesn't matter if I use
' .Text = "initial text"',
' it will do the same thing
If (diff > 0) Then
.InsertSymbol "Wingdings", getArrowCharCode("down")
ElseIf (diff = 0) Then
.InsertSymbol "Wingdings", getArrowCharCode("right")
Else
.InsertSymbol "Wingdings", getArrowCharCode("up")
End If
.InsertAfter " " & Abs(diff) & ")"
End With
End Sub
И вот сравнение двух результатов, которые я получаю из кодов выше (в том же порядке):
Мое понимание метода InsertSymbol
заключалось в том, что он вставлял бы символ в конце последнего абзаца, но это не похоже на это ... Мой второй пример неисправен или янеправильно понимать описание метода ?
PS Примечание : параметр заголовка содержал символы возврата каретки и перевода строки, поэтому второй захват имеетвсе точки на одной линии, так как эта первая часть, кажется, заменена.