我想要做的是:我有大约 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
我认为这是你的代码中的一个错误,Len(bworld)应该Len(双字)。您应该在 Vba 选项中启用“需要变量声明(选项显式)”。它有助于发现此类错误。