开发者

What is this strange character and how can I get rid of It?

开发者 https://www.devze.com 2023-01-23 15:07 出处:网络
This shows up in both .NET and in VBA. The male sign: ♂ You\'ll notice on lines 4, 5, 6, 8, 10 and 12 there is an extra character there. This is from a paragraph mark. On line 3 is a tab char

This shows up in both .NET and in VBA. The male sign:

What is this strange character and how can I get rid of It?

You'll notice on lines 4, 5, 6, 8, 10 and 12 there is an extra character there. This is from a paragraph mark. On line 3 is a tab character, but that just shows up as spaces.

This hap开发者_C百科pens when I try to grab the text of a .TextRange.Text in PowerPoint. Above is the Immediate Window in the VBE, but it also shows up .NET controls when I try to put the text in a control, such as a ListView.

It can be replicated by opening a new PowerPoint presentation and then in the VBE running:

Sub Replicate()
    Dim ap As Presentation: Set ap = ActivePresentation
    Dim sl As Slide: Set sl = ap.Slides(1)
    sl.Shapes.Title.TextFrame.TextRange.Text = "One bad" & vbCrLf & "MOFO"
    Debug.Print s.Shapes.Title.TextFrame.TextRange.Text
End Sub

How can I get rid of this (i.e. just show nothing in place of the male sign)? Is this some kind of Unicode setting for my controls or RegEx on the string or...?


Sounds like Powerpoint is not using the same carriage-return line-feed convention that VB is using. You might have to replace the vbCrLf with a different newline convention (make your own byte array pair to insert).


instead of vbCrLf Use this vbLf & vbCr

Sub Replicate()
    Dim ap As Presentation: Set ap = ActivePresentation
    Dim sl As Slide: Set sl = ap.Slides(1)
    sl.Shapes.Title.TextFrame.TextRange.Text = "One bad" & vbLf & vbCr & "Line Feed above me"
End Sub

What is this strange character and how can I get rid of It?


This article will help Exploring the PowerPoint TextRange Object, but note that when it's from a title placeholder it is Chr(11) instead of Chr(13). You can use a TextRange.Replace(ChrW(11), " ") on it to clean it up.

0

精彩评论

暂无评论...
验证码 换一张
取 消