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 报错1004本工作薄不能再使用其他新字体
时间: 2023-08-10 21:08:52 浏览: 44
这个错误可能是因为你在使用该 VBA 代码之前已经使用了其他字体,而该字体在你当前的工作簿中没有被定义。你可以尝试将代码中的字体设置为你已经定义的字体,或者在代码中添加定义新字体的语句。
例如,如果你想要使用 Times New Roman 字体,你可以在代码的开头添加以下语句:
```
Dim myFont As Font
Set myFont = ActiveWorkbook.Styles("Normal").Font
myFont.Name = "Times New Roman"
```
然后在你的代码中将字体设置为 myFont,例如:
```
Sub set_color()
Dim r As Range, arr
Dim myFont As Font
Set myFont = ActiveWorkbook.Styles("Normal").Font
myFont.Name = "Times New Roman"
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
```
这样你就可以使用 Times New Roman 字体来运行你的代码了。
相关问题
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”的子函数,但该函数并没有被定义。因此,需要在代码中定义该函数或者将其替换为已经定义的函数。
如果该函数的作用是将字符串转换为整数,请将其替换为 VBA 内置函数 CInt,例如:
```
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)))
Next
End Sub
```
如果您需要自定义一个 Clnt 函数,可以添加以下代码:
```
Function Clnt(s As String) As Integer
' 自定义函数的代码
Clnt = CInt(s)
End Function
Sub set_color()
Dim r As Range, arr
For Each r In Range("A:QE")
arr = Split(r, ",")
r.Interior.Color = RGB(Clnt(arr(0)), Clnt(arr(1)), Clnt(arr(2)))
Next
End Sub
```
在这个例子中,我们定义了一个名为 Clnt 的函数,用于将字符串转换为整数。该函数的实现很简单,只需要调用内置函数 CInt 即可。在主程序中,我们通过 Clnt(arr(0)) 等语句来调用自定义函数 Clnt。
Sub set_color() Dim r As Range, arr For Each r In Range("A:QE") arr = Split(r, ",") r.Value = "啊" r.Font.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2))) Next End Sub 下标越界
这个错误可能是因为 `arr` 数组的大小不够,导致访问了不存在的下标。你可以在代码中添加一些条件判断来避免这种情况的发生。例如,你可以在循环开始前检查单元格的值是否符合预期的格式并且数组 `arr` 的长度是否为 3。以下是一个可能的修改后的代码:
```
Sub set_color()
Dim r As Range, arr
For Each r In Range("A:QE")
arr = Split(r, ",")
If UBound(arr) = 2 And IsNumeric(arr(0)) And IsNumeric(arr(1)) And IsNumeric(arr(2)) Then
r.Value = "啊"
r.Font.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2)))
End If
Next
End Sub
```
在上面的代码中,我们首先检查 `arr` 数组的长度是否为 3,并且每个元素是否为数字。只有在这些条件都满足的情况下,我们才会设置单元格的值和字体颜色。这样就可以避免数组下标越界的问题。