我有一个功能,可以在特定范围内找到任何粗体字。在下面的每个循环中调用此函数。它的当前设置方式如果粗体字存在于范围内的任何位置,则返回true;如果范围中不存在粗体字,则返回false。我想要做的是得到它,当它找到粗体字时停止,这样我就可以做一些其他的动作,然后继续沿着列表。我想在这些方面做一些事情,但是它会在第二行引发错误
dim i as range
set i = range("C11:C6000")
for each i in range("C11:C6000")
FindBoldCharacters(Range(i)) 'throws "run time error 1004 application or object defined error" here
if i = true then
'do some stuff here'
else
end if
next i
这是代码调用的函数
Function FindBoldCharacters(ByVal aCell As Range) As Boolean
FindBoldCharacters = IsNull(aCell.Font.Bold)
If Not FindBoldCharacters Then FindBoldCharacters = aCell.Font.Bold
End Function
该功能仅在本身调用时有效,但在我尝试以这种方式调用时无效。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
正如我的评论中提到的那样,您的代码会有一些问题。
i
,如果在此循环之前未声明,将在运行时标注为Range
对象,而不是保存单元格地址的字符串,因为您似乎将其用作< / LI>
i
稍后在Boolean
对象Range
For..
应该只有一个Next
,如果您尝试运行它,您的代码会抛出Next without For
错误首先,将i
声明为Range
对象,然后将其传递给您的函数,就像FindBoldCharacters(i)
一样(这在您的函数声明中是有道理的,您说您期望aCell
1}}作为Range
)
其次,直接在If
语句中评估函数
最后,将Next i
从If
语句中移出。
这样的事情:
Option Explicit
Sub Test()
Dim i As Range
For Each i In Range("C11:C6000")
If FindBoldCharacters(i) = True Then
'do some stuff here'
Else
End If
Next i
End Sub