如何让Selection.Text读取宏字段代码的displaytext
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让Selection.Text读取宏字段代码的displaytext相关的知识,希望对你有一定的参考价值。
我在解决这个问题时遇到了一些麻烦,我真的很感激一些帮助。我正在尝试编写一个使用selection.text属性作为Case text-expression的宏。在Microsoft Word中单击宏时,所选文本将自动设置为DisplayText。此方法通过Selection.Font.Color进行格式化非常有用,可以快速和脏化格式化切换宏,但它不适用于实际文本。
使用MsgBox进行调试时,它会显示一个框(例如:□)作为值。
例如,
字段代码:
{ MACROBUTTON Macro_name DisplayText }
在Word中突出显示“DisplayText”时运行VBA代码:
Sub Macro_name()
Dim Str As String
Str = Selection.Text
MsgBox Str
Select Case Str
Case "DisplayText"
MsgBox "A was selected"
Case "B"
MsgBox "B was selected"
End Select
End Sub
什么是输出是一个仅显示□的消息框当我运行此宏并选择了一些常规文本时,它可以正常工作。
我的问题是:有没有办法让宏读取字段代码的displaytext部分以便在宏中使用?
您可以直接读取字段代码,而不是选择(或者也不提供文本的Field.Result
)。
目前尚不清楚如何在整个文档中使用此宏,因此下面的代码示例提供了两种变体。
两者都检查选择是否包含字段,如果是,则检查(第一个)字段是否为MacroButton
字段。然后测试域代码。
在注释掉的变体(更简单的那个)中,代码然后简单地检查MacroButton
显示文本是否存在于字段代码中。如果是,则将该文本分配给Select
语句正在测试的字符串变量。
如果这是不够的,因为显示文本是“未知”(可能是多个MacroButton字段),那么有必要找到包含显示文本的字段代码部分。在这种情况下,函数InstrRev
在整个字段代码中定位组合字段名称和宏名称的结束点以及插入空格,从字符串的末尾进行搜索。之后,Mid
函数提取显示文本并将其分配给Select
语句测试的字符串变量。
在两种变体中,如果选择不包含MacroButton
字段,则将所选测试分配给Select
语句的字符串变量。
(注意,对于我的测试,我需要在Case Else
语句中使用Select
。你可能想把它改回Case "B"
...)
Sub Display_Field_DisplayText()
Dim Str As String, strDisplayText As String
Dim textLoc As Long
Dim strFieldText As String, strMacroName As String
Dim strFieldName As String, strFieldCode As String
strDisplayText = "text to display"
If Selection.Fields.Count > 0 Then
If Selection.Fields(1).Type = wdFieldMacroButton Then
strFieldName = "MacroButton "
strMacroName = "Display_Field_DisplayText "
strFieldCode = strFieldName & strMacroName
Str = Selection.Fields(1).code.text
textLoc = InStrRev(Str, strFieldCode)
strFieldText = Mid(Str, textLoc + Len(strFieldCode))
MsgBox strFieldText
Str = strFieldText
'If InStr(Selection.Fields(1).code.text, strDisplayText) > 0 Then
' Str = strDisplayText
'End If
End If
Else
Str = Selection.text
End If
Select Case Str
Case strDisplayText
MsgBox "A was selected"
Case Else
MsgBox "B was selected"
End Select
End Sub
以上是关于如何让Selection.Text读取宏字段代码的displaytext的主要内容,如果未能解决你的问题,请参考以下文章
LibreOffice XForm:如何使用 javascript 宏读取表单数据
Visual Studio - 如何在运行宏时禁用自动格式化/更正?
在c#中如何通过GridView空间读取SQLserver中的数据,不用绑定数据源的那种,用代码实现数据库sql语句操作