Pergi ke akhir setiap baris dan teks tebal di dalam tanda kurung
Saya perlu mengotomatiskan pemformatan kata-kata tertentu di akhir setiap baris di MS Word. Karena saya tidak dapat merekam makro untuk melakukan pekerjaan karena keterbatasan makro Word, saya harus mempostingnya di sini. Yang saya butuhkan hanyalah melakukan hal berikut: -
- Periksa setiap baris untuk awal (
- Mulai memilih teks di dalam tanda kurung (termasuk tanda kurung) sampai) ditemukan sebagai akhir kalimat
- Format teks menjadi tebal
- Lakukan ini sampai akhir file
- Pengecualian: Jangan format judul yang sudah dicetak tebal dan bergaris bawah.
Bagaimana saya bisa melakukan itu? Atau tolong perbaiki kode saya karena tidak melakukan apa-apa.
Sub m1()
'
' m1 Macro
'
'
Dim i As Integer
With Selection.Find
For i = 1 To lastRow
.Forward = True
.ClearFormatting
.MatchCase = False
.Wrap = wdFindContinue
.Execute FindText:="("
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.Font.BoldBi = wdToggle
Next
End With
End Sub
Jawaban
Anda mungkin tidak memerlukan makro jika Anda tahu bahwa Gaya teks isi dokumen Anda selalu merupakan gaya tertentu selain gaya Judul. Siapkan Find and Replace Anda seperti ini:
Jika kode wildcard sulit untuk dibaca dari klip layar adalah: [(] * [)]
Saya akhirnya berhasil membangun kode ini:
Sub m1()
Selection.HomeKey Unit:=wdStory
With Selection.Find
Do While .Execute(FindText:="(", Forward:=True, MatchWildcards:=False) = True
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.Font.BoldBi = wdToggle
Selection.EndKey Unit:=wdLine
Loop
End With
End Sub
Berhasil! :) Terima kasih atas dukungannya!
MS Word tidak bekerja dengan garis. Kode VBA berikut akan menemukan paragraf yang diakhiri dengan tanda kurung dan dicetak tebal bersama dengan isinya.
Sub Bold_ending_parentheses()
Dim par As Word.Paragraph
Dim str As String
Dim closes As Byte
Dim opens As Long
For Each par In ActiveDocument.Paragraphs
str = StrReverse(par.Range.Text)
closes = InStr(Left(str, 4), ")")
If closes Then
opens = InStr(str, "(")
If opens Then
With par.Range
.Find.Text = StrReverse(Mid(str, closes, opens - closes + 1))
Do
.Find.Execute
If .Find.Found Then .Font.Bold = True
Loop While .Find.Found
End With
End If
End If
Next
End Sub
EDIT:
Contoh penggunaan Find and Replace. Dengan ini, semua teks dalam tanda kurung dicetak tebal (tidak memperhitungkan persyaratan berada di akhir paragraf / baris):
Sub ApplyBoldWithinParentheses()
With ActiveDocument.Content.Find
.ClearFormatting
.Text = "[(]*[)]"
.Replacement.Font.Bold = True
.Format = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub