Sub set_color() Dim r As Range, arr For Each r In Range("A:QE") arr = Split(r, ",") r.Font.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2))) Next End Sub报错 本工作簿不能出现其他新字体
时间: 2023-08-10 14:08:52 浏览: 64
这个错误可能是因为你的代码尝试在工作簿中添加新的字体,而该字体并未在工作簿中定义。你可以尝试使用现有字体,或者首先添加新字体并确保它们在工作簿中可用。
如果你想使用现有字体,可以在代码中指定字体名称,例如:
```
r.Font.Name = "Arial"
```
如果你想添加新字体,可以使用以下代码:
```
Dim myFont As Font
Set myFont = ThisWorkbook.Fonts.Add("My New Font")
```
这将添加名为"My New Font"的新字体。然后,你可以在代码中使用此字体,例如:
```
r.Font.Name = "My New Font"
```
确保在完成工作后删除不再需要的字体,以避免工作簿变得过于臃肿。你可以使用以下代码删除字体:
```
ThisWorkbook.Fonts("My New Font").Delete
```
相关问题
Sub set_color() Dim r As Range, arr For Each r In Range("A:QE") arr = Split(r, ",") r.lnterior.Color = RGB(Clnt(arr(0)), Clnt(arr(1)), Clnt(arr(2))) Next End Sub Clnt子函数未定义
是的,这个代码缺少了一个自定义的子函数 `Clnt` 的定义。我猜测 `Clnt` 函数的作用是将字符串转换为数字。你可以在代码前面添加以下子函数定义:
```
Function Clnt(str As String) As Long
Clnt = CLng(Trim(str))
End Function
```
这个函数实现了将字符串转换为数字的操作,并返回了该数字。你可以将这个函数添加到你的代码中,并重新运行你的程序。
Sub set_color() Dim r As Range, arr For Each r In Range("A:QE") arr = Split(r, ",") r.Interior.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2))) Application.Wait (Now + TimeValue("0:00::00.1")) Next End Sub完善代码
这段代码的作用是将 A 列到 QE 列中每个单元格中以逗号分隔的 RGB 值转换为颜色,并将其应用于单元格的背景色。
在完善代码方面,我有以下几点建议:
1. 在代码前添加注释,解释代码的作用和用途。
2. 将代码放在一个子过程中,以便在需要时可以轻松调用它。
3. 添加错误处理程序,以避免在代码执行时出现错误并导致程序崩溃。
4. 删除 `Application.Wait` 行,因为它会导致程序暂停,而不是在后台运行。
以下是完善后的代码:
```
'将 RGB 值转换为颜色并应用到单元格背景色中
Sub SetColor()
On Error GoTo ErrorHandler '添加错误处理程序
Dim r As Range, arr() As String '声明变量
For Each r In Range("A:QE")
arr = Split(r, ",")
r.Interior.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2)))
Next
Exit Sub '正常退出子过程
ErrorHandler: '错误处理程序
MsgBox "Error: " & Err.Description '显示错误消息
End Sub
```
阅读全文