VBA Powerpoint - 在文本框中组合普通文本和方程式
VBA Powerpoint - Combining normal text and equation inside a textbox
尝试将一些正常书写的文本和方程式结合起来(使用 powerpoint 中内置的插入方程式功能)。手动操作很容易完成(键入普通文本,然后单击插入新方程或按 alt 和 +),但 VBA 对我来说很棘手。
我已经设法在单独的文本框中完成,但是当我尝试在一个文本框中一起完成时,它将文本框中的所有文本格式化为一个等式。
例如'Solve 4x+2=8' 我希望 'solve' 写成正常的 string/text,但是,我想使用 powerpoint 插入方程功能来写 4x+2=8 部分。
我在这里搜索并找到了这段代码,可以在独立的框中编写方程式。但是当我添加 world solve 时,它会将其视为方程式而不是普通文本。我什至尝试将 'solve' 连接成一个字符串。
Sub insert_equation()
Dim a As Integer
a = 2
Dim word As String
word = "Solve "
Application.CommandBars.ExecuteMso ("InsertBuildingBlocksEquationsGallery")
With ActiveWindow.Selection.ShapeRange.TextFrame
With .TextRange
.Font.Size = 22
.Text = word & "2x^2+7x+6=0"
'.Text = a & "x"
End With
End With
Application.CommandBars.ExecuteMso ("EquationProfessional")
End Sub
下图中,第二个文本框是代码returns,第三个文本框是我希望实现的。我希望能够在文本框内的不同位置混合使用方程式和普通文本。
example
非常感谢。
据我所知,一种方法是使用 .Characters 对象。
Sub insert_equation()
Dim a As Integer
a = 2
Dim word As String
word = "Solve "
Application.CommandBars.ExecuteMso ("InsertBuildingBlocksEquationsGallery")
With ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Characters()
.Font.Size = 22
.Text = word
.Font.Italic = False
.Font.Color = vbRed
End With
With ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Characters(Len(word) + 1)
.Font.Size = 32
.Text = "2x^2+7x+6=0"
.Font.Italic = True
.Font.Color = vbBlue
End With
Application.CommandBars.ExecuteMso ("EquationProfessional")
End Sub
您也可以在这里阅读 Characters object (Excel)
Sub WhatIsTheEquationMadeOf()
Dim x As Long, txtBox As Shape
word = "Solve "
Set txtBox = ActiveWindow.Selection.ShapeRange(1)
If txtBox.Type = msoTextBox Then
With txtBox.TextFrame.TextRange
.Font.Color = RGB(80, 122, 160)
.ParagraphFormat.Alignment = ppAlignCenter
.Font.Size = 22
.Text = word & "2x^2+7x+6=0"
.Characters(Len(word) + 1, .Characters.Count - Len(word)).Select
With Application.CommandBars
.ExecuteMso "InsertBuildingBlocksEquationsGallery"
.ExecuteMso "EquationProfessional"
End With
End With
End If
End Sub
之前
之后
尝试将一些正常书写的文本和方程式结合起来(使用 powerpoint 中内置的插入方程式功能)。手动操作很容易完成(键入普通文本,然后单击插入新方程或按 alt 和 +),但 VBA 对我来说很棘手。
我已经设法在单独的文本框中完成,但是当我尝试在一个文本框中一起完成时,它将文本框中的所有文本格式化为一个等式。
例如'Solve 4x+2=8' 我希望 'solve' 写成正常的 string/text,但是,我想使用 powerpoint 插入方程功能来写 4x+2=8 部分。
我在这里搜索并找到了这段代码,可以在独立的框中编写方程式。但是当我添加 world solve 时,它会将其视为方程式而不是普通文本。我什至尝试将 'solve' 连接成一个字符串。
Sub insert_equation()
Dim a As Integer
a = 2
Dim word As String
word = "Solve "
Application.CommandBars.ExecuteMso ("InsertBuildingBlocksEquationsGallery")
With ActiveWindow.Selection.ShapeRange.TextFrame
With .TextRange
.Font.Size = 22
.Text = word & "2x^2+7x+6=0"
'.Text = a & "x"
End With
End With
Application.CommandBars.ExecuteMso ("EquationProfessional")
End Sub
下图中,第二个文本框是代码returns,第三个文本框是我希望实现的。我希望能够在文本框内的不同位置混合使用方程式和普通文本。
example
非常感谢。
据我所知,一种方法是使用 .Characters 对象。
Sub insert_equation()
Dim a As Integer
a = 2
Dim word As String
word = "Solve "
Application.CommandBars.ExecuteMso ("InsertBuildingBlocksEquationsGallery")
With ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Characters()
.Font.Size = 22
.Text = word
.Font.Italic = False
.Font.Color = vbRed
End With
With ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Characters(Len(word) + 1)
.Font.Size = 32
.Text = "2x^2+7x+6=0"
.Font.Italic = True
.Font.Color = vbBlue
End With
Application.CommandBars.ExecuteMso ("EquationProfessional")
End Sub
您也可以在这里阅读 Characters object (Excel)
Sub WhatIsTheEquationMadeOf()
Dim x As Long, txtBox As Shape
word = "Solve "
Set txtBox = ActiveWindow.Selection.ShapeRange(1)
If txtBox.Type = msoTextBox Then
With txtBox.TextFrame.TextRange
.Font.Color = RGB(80, 122, 160)
.ParagraphFormat.Alignment = ppAlignCenter
.Font.Size = 22
.Text = word & "2x^2+7x+6=0"
.Characters(Len(word) + 1, .Characters.Count - Len(word)).Select
With Application.CommandBars
.ExecuteMso "InsertBuildingBlocksEquationsGallery"
.ExecuteMso "EquationProfessional"
End With
End With
End If
End Sub
之前
之后