2017-04-06 2 views
0

선택한 텍스트 내에 문자 스타일이 지정되었는지 여부를 간단하고 보편적으로 확인할 수 있습니까? 는 현재 전 기능을 사용하고 있지만 MS 워드 언어 버전의 독립되지 않습니다 :Word VBA : 선택 영역 내에 문자 스타일이 지정 되었습니까?

Function AnyCharacterStyleAssigned() 
    'elicit the name of the default paragraph font 
    V_AppLang = Application.Language 
    If V_AppLang = 1031 Then 
     Vst_Default = "Absatz-Standardschriftart" 
    ElseIf V_AppLang = 1045 Then 
     Vst_Default = "Domy" & ChrW(347) & "lna czcionka akapitu" 
    ElseIf V_AppLan = 1033 Then 
     Vst_Default = "Default Paragraph Font" 
    Else 
     MsgBox prompt:="this script doesn't work for this language version of Word", Buttons:=vbOKOnly 
     End 
    End If 

    'search for the default paragraph font within the selection range 
    Set R_Range = Selection.Range 
    R_Range.Find.ClearFormatting 
    R_Range.Find.Style = Vst_Default 
    R_Range.Find.Execute findtext:="", Forward:=True, Wrap:=wdFindStop, Format:=True 
    AnyCharacterStyleAssigned = IIf(R_Range.Start >= Selection.End, False, True) 
End Function 
+0

나는 당신의 질문을 무엇을 해야할지 모르겠다. 하나 들어, 난 WinWord에 대한 참조에 의해 허황 찍은. 나는 VBA와 WinWord 사이의 연결이나 WinWord에 VBA가 있는지 알지 못합니다. 나는 MS Word와 그 VBA에 대한 지식이있다. MS Word에는 문자 스타일이 지정되지 않은 텍스트가 없습니다. 그러므로 더 합리적인 질문은 그것이 어느 것이냐하는 것이다. 기본 문자 스타일은 wdStyleNormal이며 모든 글꼴을 가질 수 있으며 어느 글꼴인지 물어볼 수 있습니다. 마지막으로, 아마도 "Default Paragraph font"를 읽어야 할 것입니다 - 또 다른 주제는 겉으로는 단절된 것입니다. – Variatus

답변

0

더 좋은 테스트는 다음과 같은 것입니다. 가지고있는 코드에 스타일이 없으면 선택 항목이 변경되지 않으므로 항상 트루 케이스를 사용하게됩니다.

Public Sub StyleTest() 
    Dim R_Range As Range 
    Set R_Range = Selection.Range 
    R_Range.Find.ClearFormatting 
    R_Range.Find.Style = "Strong" 

    Dim AnyCharacterStyleAssigned As Boolean 
    AnyCharacterStyleAssigned = False 
    If R_Range.Find.Execute(Forward:=True, Wrap:=wdFindStop, Format:=True) = True Then 
     R_Range.Select 
     AnyCharacterStyleAssigned = True 
    End If 
End Sub