VBA格式字符串

VBA格式字符串,vba,excel,powerpoint,Vba,Excel,Powerpoint,现在一切都是红色的。我需要冒号后面的所有内容都是黑色,而不是斜体。您可以更改此行以使文本变为黑色: .Color.RGB = RGB(216, 3, 33) 这一行删除斜体: .Italic = msoFasle 编辑: 如果您有单元格位置,可以稍后对字符串执行以下操作: With Cells(1, 1).Characters(9, 21).Font .Color = vbBlack .Italic = False .Name = "Corbel" .

现在一切都是红色的。我需要冒号后面的所有内容都是黑色,而不是斜体。

您可以更改此行以使文本变为黑色:

.Color.RGB = RGB(216, 3, 33)
这一行删除斜体:

.Italic = msoFasle
编辑:

如果您有单元格位置,可以稍后对字符串执行以下操作:

With Cells(1, 1).Characters(9, 21).Font
     .Color = vbBlack
     .Italic = False
     .Name = "Corbel"
     .Size = 20
演示如何使用字符

编辑:

要更改文本框的部分文本,可以声明包含格式不同的字符串的两个变量,并将它们附加到文本框中

其形式如下:

MyTextBox.Value=MyStringVariable

或者在您的情况下:


MyTextBox.Value=MyStringVariable1&MyStringVariable2

您可以更改此行使文本变为黑色:

.Color.RGB = RGB(216, 3, 33)
这一行删除斜体:

.Italic = msoFasle
编辑:

如果您有单元格位置,可以稍后对字符串执行以下操作:

With Cells(1, 1).Characters(9, 21).Font
     .Color = vbBlack
     .Italic = False
     .Name = "Corbel"
     .Size = 20
演示如何使用字符

编辑:

要更改文本框的部分文本,可以声明包含格式不同的字符串的两个变量,并将它们附加到文本框中

其形式如下:

MyTextBox.Value=MyStringVariable

或者在您的情况下:


MyTextBox.Value=MyStringVariable1&MyStringVariable2

宏记录器发现以下内容:

Sub test()
    ActiveSheet.Shapes.Range(Array("txtbox1")).Select
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
        "Choisir: wefhweufhwef 344tr saefaefa" 'Entering some text'
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 5).Font 'Selecting some font and changing some settings
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(0, 0, 255)
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 11
        .Name = "+mn-lt"
    End With
End Sub
如果不先选择文本框,我就无法做到这一点(??也许有人可以帮助,通常并不难)。您可以使用字符串输入文本,在该字符串中,您可以使用

dim MyString as string
dim intColon as integer
Mystring = "cwsvws:wifvwhivw"
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = MyString
intColon = instr(MyString, ":")
并将其用作插入宏记录器代码的字符计数。然后,您可以根据需要格式化不同的文本块

With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(intColon, 5).Font
             .Fill.ForeColor.RGB = RGB(0, 0, 255)
             .Fill.Transparency = 0
             .Fill.Solid
             .Size = 11
             .Name = "+mn-lt"
End With

希望这有帮助。

宏记录器发现以下内容:

Sub test()
    ActiveSheet.Shapes.Range(Array("txtbox1")).Select
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = _
        "Choisir: wefhweufhwef 344tr saefaefa" 'Entering some text'
    With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 5).Font 'Selecting some font and changing some settings
        .NameComplexScript = "+mn-cs"
        .NameFarEast = "+mn-ea"
        .Fill.Visible = msoTrue
        .Fill.ForeColor.RGB = RGB(0, 0, 255)
        .Fill.Transparency = 0
        .Fill.Solid
        .Size = 11
        .Name = "+mn-lt"
    End With
End Sub
如果不先选择文本框,我就无法做到这一点(??也许有人可以帮助,通常并不难)。您可以使用字符串输入文本,在该字符串中,您可以使用

dim MyString as string
dim intColon as integer
Mystring = "cwsvws:wifvwhivw"
Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = MyString
intColon = instr(MyString, ":")
并将其用作插入宏记录器代码的字符计数。然后,您可以根据需要格式化不同的文本块

With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(intColon, 5).Font
             .Fill.ForeColor.RGB = RGB(0, 0, 255)
             .Fill.Transparency = 0
             .Fill.Solid
             .Size = 11
             .Name = "+mn-lt"
End With

希望这能有所帮助。

您只需分离冒号后面的字符,并根据需要设置颜色:

编辑:忘记斜体字了

Sub test()

    sCallOut = "ACTION: [Insert Callout Here]"
    Set oShp = pptSld.Shapes.AddTextbox(msoTextOrientationHorizontal, 110, 100, 557.28, 94.32)
    oShp.Line.Visible = msoFalse
    oShp.TextFrame.TextRange.Text = sCallOut
    oShp.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignCenter

    With oShp.TextFrame.TextRange.Font
       .Name = "Corbel"
       .Italic = msoTrue
       .Size = 20
       .Color.RGB = RGB(216, 3, 33)
       .Bold = msoTrue
    End With

    With oShp.TextFrame.TextRange
        With .Characters(InStr(.Characters, ":") + 1, .Length).Font
            .Color.RGB = RGB(0, 0, 0)
            .Italic = msoFalse
        End With
    End With

    Set oShp = Nothing

End Sub

您只需隔离冒号后面的字符,并根据需要设置颜色:

编辑:忘记斜体字了

Sub test()

    sCallOut = "ACTION: [Insert Callout Here]"
    Set oShp = pptSld.Shapes.AddTextbox(msoTextOrientationHorizontal, 110, 100, 557.28, 94.32)
    oShp.Line.Visible = msoFalse
    oShp.TextFrame.TextRange.Text = sCallOut
    oShp.TextFrame.TextRange.ParagraphFormat.Alignment = ppAlignCenter

    With oShp.TextFrame.TextRange.Font
       .Name = "Corbel"
       .Italic = msoTrue
       .Size = 20
       .Color.RGB = RGB(216, 3, 33)
       .Bold = msoTrue
    End With

    With oShp.TextFrame.TextRange
        With .Characters(InStr(.Characters, ":") + 1, .Length).Font
            .Color.RGB = RGB(0, 0, 0)
            .Italic = msoFalse
        End With
    End With

    Set oShp = Nothing

End Sub

你能解释一下你想改变的字符范围吗?我有一个字符串sCallOut,我在代码块后面将它分配给oShp.TextFrame.TextRange.Font。使用With语句,我将该字符串的属性更改为全部红色、大小20、斜体等等。它是powerpoint幻灯片的子标题。但是,我需要“Action:”将上述属性与我当前的with语句一起显示,并且我需要“[Insert Callout Here]”为Corbel,而不是斜体、大小为20和黑色。是否有一种方法可以从我的字符串中为此文本框选择一系列字符,并在不更改整个字符串的情况下更改它们的属性?我已更新了答案。我希望这有帮助!你能解释一下你想改变的字符范围吗?我有一个字符串sCallOut,我在代码块后面将它分配给oShp.TextFrame.TextRange.Font。使用With语句,我将该字符串的属性更改为全部红色、大小20、斜体等等。它是powerpoint幻灯片的子标题。但是,我需要“Action:”将上述属性与我当前的with语句一起显示,并且我需要“[Insert Callout Here]”为Corbel,而不是斜体、大小为20和黑色。是否有一种方法可以从我的字符串中为此文本框选择一系列字符,并在不更改整个字符串的情况下更改它们的属性?我已更新了答案。我希望这有帮助!他说的是文本框而不是单元格。他说的是文本框而不是单元格。这个答案适用于普通文本框,而不是ActiveX文本框。有了activeX,它会更容易(我认为)和更直接。这个答案是针对普通的文本框,而不是activeX文本框。有了activeX,它将更容易(我认为)和更直接。