首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在每个循环的内部调用函数时,运行时错误1004

在每个循环的内部调用函数时,运行时错误1004
EN

Stack Overflow用户
提问于 2015-08-25 17:37:24
回答 1查看 333关注 0票数 0

我有一个函数,可以在特定的范围内找到任何粗体单词。此函数在下面的for每个循环中调用。按照当前设置的方式,如果粗体字在范围内任何地方都存在,则返回true;如果范围中不存在粗体字,则返回false。我想要做的是得到它,所以当它找到粗体字时,它就停止了,这样我就可以做一些其他的操作,然后继续下去。我正在考虑沿着这些路线做一些事情,但是它在第二行上抛出了一个错误。

代码语言:javascript
复制
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

下面是代码正在调用的函数

代码语言:javascript
复制
Function FindBoldCharacters(ByVal aCell As Range) As Boolean
    FindBoldCharacters = IsNull(aCell.Font.Bold)
    If Not FindBoldCharacters Then FindBoldCharacters = aCell.Font.Bold
End Function

函数本身调用时起作用,但当我试图以这种方式调用它时,它就不能工作。我能做些什么来解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-25 17:55:49

正如我在评论中提到的,您的代码中有几件事情是与代码无关的。

  • 变量i (如果在此循环之前未声明)将在运行时作为Range对象进行标注,而不是将其作为保存单元格地址的字符串,因为您似乎正在使用它
  • 与之相关的是,当iRange对象时,它后来被用作Range对象。
  • 每个For..应该只有一个Next,如果您试图运行它,您的代码将抛出一个Next without For错误。

首先,将i声明为Range对象,然后像FindBoldCharacters(i)那样将其传递到您的函数中(就像您在函数声明中表示希望aCell作为Range一样)。

其次,直接在If语句中计算函数

最后,将Next iIf语句内部移出。

就像这样:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32210552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档