Word VBA-bir sözcüğün (dizedeki tüm sözcüklerin değil) belirli bir biçime veya biçime sahip olduğu bir metin dizesi bulun

0

Soru

Metin içindeki bir kelimenin belirli bir biçim veya stil olduğu metni aramak için bazı kodlar oluşturmaya çalışıyordum. Örneğin, "Merhaba dünya, her şey yolunda" metnini aramak istiyorum, ancak yalnızca "tümü" kelimesinin kalın olduğu örnekleri vurmak istiyorum.

İlk birkaç kelimeyi aramayı düşündüm "Merhaba dünya "; seçimi daraltmak, sonraki üç karakteri "tümü" kelimesi için kalın harfle aramak; seçimi daraltmak (doğruysa) sonra bir sonraki biti "iyi"kelimeleri aramak. Bu, tüm ifadenin kalın kelimeyle tanımlanmasına neden olur, ancak gerçekten verimsiz ve çok esnek görünmüyor. Ayrıca, tüm cümleyi seçmek için, seçimi başlangıca geri taşımak ve seçimi ileriye doğru genişletmek için kod yazmam gerekiyor. Daha sonra bu konumdan ilerlemeye devam etmek için aramayı sıfırlamam gerekiyor.

Dizede yalnızca bir kelimenin kalın gibi belirli özelliklere sahip olduğu bir dizeyi aramak için daha kolay/daha kolay/daha zarif bir yol var mı? Özellikle aramanın, ilgili kelimenin kalın olmadığı ifadenin örneklerini görmezden gelmesini istiyorum.

Google'ı ve stackflow'u aramak için birkaç saat harcadım ve bu konuda hiçbir şey bulamıyorum.

Kod yazmadım çünkü kodu yazarken çok iyi değilim ve gerçekten istediğimi yapmanın esnek/zarif bir yolu olup olmadığını anlamak istiyorum. Yukarıda açıkladığım esnek olmayan kök o kadar esnek değil ki, bir şeyi kodlamakla uğraşmaya isteksizim.

Teşekkürler Jeremy

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

En iyi cevabı

0

Kullanacağım yöntem dizeyi aramak ve bulunursa dizeyi sözcük için aramaktır. İşte bir örnek.

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

Vay canına. Çok teşekkür ederim. Tam olarak yapmak istediğim buydu. Kodu böyle yazmanız çok cömertçe bir davranış. Teşekkür ederim. Sorunun daha düzenli olarak ortaya çıkmamasına şaşırdım. Bir kez daha, teşekkür ederim. Bu kesinlikle mükemmel.
Jezza

Diğer dillerde

Bu sayfa diğer dillerde

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