Slovo VBA - vyhľadajte textový reťazec, kde jedno slovo (nie všetky slová v reťazec) majú zvláštny štýl alebo formáte

0

Otázka

Snažil som sa postaviť nejaký kód na hľadanie textu tam, kde jedno slovo v texte je konkrétny formát alebo štýl. Napríklad, by som rád, ak chcete vyhľadať text "Hello world, všetko je dobré", ale len hit prípady, v ktorých sa slovo "všetky" je v písmom.

Myslel som, že o hľadaní prvých pár slovami "Ahoj svet "; zrútenie výber, vyhľadávanie najbližších troch znakov dopredu za slovo "všetci" v bold; zrútenie výber (ak je true), potom vyhľadávanie na budúci bit sa za slová "je dobré". To by viedlo k identifikácii celú vetu s písmom slovo, ale zdá sa, že naozaj neefektívne a nie sú veľmi flexibilné. Tiež, potom vyberte celú vetu musím napísať kód na výber premiestniť späť na začiatok a rozšíriť výber dopredu. Potom som musieť obnoviť vyhľadávanie pokračovať vpred od danej pozície.

Je tam nejaký easy/ľahšie/viac elegantný spôsob, ako vyhľadať reťazec, kde len jedno slovo, v rámci reťazca má špecifické vlastnosti, ako odvážne? Ja konkrétne chcete hĺadať, ak chcete ignorovať výskyty fráz, kde sa príslušné slovo nie je v písmom.

Strávil som niekoľko hodín vyhľadávanie google a stackflow a nemôžem nájsť nič na tejto.

Nemám publikované kód, pretože nie som veľmi dobrý v písaní kódu, a som naozaj chcete pochopiť, ak je flexibilné/elegantný spôsob, ako robiť to, čo chcem. Na nepružné root som vysvetlil vyššie je tak ťažko riešiteľných som nechcelo trápiť, kódovanie niečo.

Vďaka Jeremy

ms-word replace
2021-11-20 15:04:30
1

Najlepšiu odpoveď

0

Metóda by som sa použitie je pre hľadanie reťazca a, ak zistí, potom vyhľadajte reťazec za slovo. Tu je príklad.

Sub Demo()
    Dim StringRange As Range
    Dim MatchFound  As Boolean
    
    With ActiveDocument.Range.Find
        ' The string to find
        .Text = "Hello world, all is good"
        
        ' Search the document
        Do While .Execute
            ' Capture the string
            Set StringRange = .Parent.Duplicate
            
            With .Parent.Duplicate.Find
                ' The word to find
                .Text = "all"
                .Font.Bold = True
                
                ' Search the string
                If .Execute Then
                    MatchFound = True
                    StringRange.Select
                    
                    If MsgBox("Match found. Continue searching?", vbQuestion + vbYesNo) = vbNo Then
                        Exit Sub
                    End If
                End If
            End With
        Loop
        
        If MatchFound Then
            MsgBox "Finished searching document", vbInformation
        Else
            MsgBox "No match found", vbInformation
        End If
    End With
End Sub
2021-11-20 20:55:18

Wow. Ďakujem. To je presne to, čo som chcel robiť. To je neuveriteľne veľkorysý, aby ste napísať kód sa, ako tento. Ďakujem. Som ohromený, že otázka nie je prísť viac pravidelne. Ešte raz, ďakujem. To je absolútne dokonalý.
Jezza

V iných jazykoch

Táto stránka je v iných jazykoch

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................