私がやりたいことは次のとおりです。約 1400 行のデータがあり、最後の列には大量のテキストが含まれています。これが私の言いたいことを示す画像です。一度に投稿できるリンクは 2 つだけなので、画像は削除しました。
さて、テキストを読みやすくするために、いくつかの単語を太字にしたいと思います。
現在、次のマクロがあります:
Dim range As range
Set range = Application.Selection
Dim boldwords As Variant
boldwords = Array("Atemschutz:", "Körperschutz:", "Handschutz:", "Augenschutz:")
Dim cell As range
For Each cell In range
For Each bword In boldwords
foundword = InStr(1, cell.Text, bword, VbCompareMethod.vbTextCompare)
If foundword <> 0 Then
cell.Characters(foundword, Len(bworld)).Font.Bold = True
End If
Next
Next
- 選択されたすべてのセルをループする
- 太字にするべきすべての単語をループし、それらがセルに含まれているかどうかを確認します。
- もしそうなら太字にする
問題は、実行するとテキストが完全に太字になったり、文字化けしたりすることですこのような または、各文字を別の行に配置します。その後、Excel の動作が遅くなったり、フリーズしたり、場合によってはクラッシュしたりします。
これを防ぐために何ができるでしょうか?
更新: Siphor が言及した変数名を修正した後、テキストは文字化けしなくなりましたが、まだ別々の行に分割されることがあります。私の言いたいことを示す画像を以下に示します。クリックしてください
答え1
それはあなたのコードのバグだと思います。レン(bworld)すべきであるレン(bword)Vba オプションで変数宣言が必要 (Option Explicit) を有効にする必要があります。これは、このようなバグを見つけるのに役立ちます。