将单元格的一部分更改为粗体

时间:2020-10-20 13:57:29

标签: excel vba

我有一列包含仅数字量的单元格的列。如果单元格中数字的长度为5,我想在数字前添加6,并在其末尾添加00
到目前为止,该方法仍然有效,但我知道我也想将原始数字设为粗体,而不是600。我试图将整个专栏变成粗体,然后添加600,但这没用。

我的以下代码无法正确使用数字。仅当我将“开始”设置为1时,它才会将字体更改为粗体,但是随后它将更改整个单元格,而不是5数字。如果我将数字替换为字符串,则可以正常工作,因此我尝试将数字转换为字符串,但效果不佳。

Dim c As Range
For Each c In Range("A1:A500").Cells
    If Len(c.Value) = 5 Then
        c.Value = "6" & c.Value & "00"
        c.Value = CStr(c.Value)
        c = CStr(c.Value)
        c.Characters(Start:=2, Length:=5).Font.Bold = True 
    End If
Next

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:3)

c设置为文本格式即可解决。

c.NumberFormat = "@"

或者您可以在运行代码之前直接格式化范围。

答案 1 :(得分:2)

问题在于Excel默认情况下认为数字应采用数字格式。并且它不提供将数字加粗的可能性。除非数字转换为文本,否则它将是文本。默认情况下,数字右对齐,文本左对齐:

enter image description here

有两种在Excel中将数字转换为文本的基本方法:

  • 通过显式转换-选择数字,按 Ctrl + 1 ,选择文本。然后记录一个宏以查看生成的代码;
  • 通过向数字添加字符串-例如来自12345的{​​{1}}(但这会稍微改变值)

a12345