用户定义函数VBA中的#Value错误

问题描述 投票:0回答:1

我正在编写一个函数来查找当前活动单元格上方具有不同内部颜色(使用条件格式)的第一行。当我用debug.printmsgbox打印出来时,该功能有效,但是当我直接在工作表中调用它时,该功能无效。第一行是标题,这就是我排除第一行的原因。

Public Function blockStart() As Long
    Dim currColor As Long
    currColor = activecell.DisplayFormat.Interior.ColorIndex

    Dim currCol As String
    currCol = Number2Letter(activecell.Column)

    Dim startRow As Long
    startRow = activecell.Row

    'Find Ceiling
    Do While startRow >= 2
        If Range(currCol & startRow).DisplayFormat.Interior.ColorIndex <> currColor Then
            startRow = startRow + 1
            Exit Do
        End If
        startRow = startRow - 1
    Loop

    If startRow = 1 Then startRow = 2   ' at the very top

    blockStart = startRow

End Function

当我直接在工作表中调用该函数时,会提示#value。请让我知道我做错了什么,谢谢!

vba excel-vba excel-formula excel-2010
1个回答
0
投票

只是让你不觉得这是不可能的,做你想做的事情的一种可能的方法是把你的BlockStart函数的整个主体放在Worksheet的SelectionChange事件中。然后,您可以将startRow的值分配给您尝试使用BlockStart函数的单元格,而不是显示blockStart = startRow的行。

如果多个单元格使用BlockStart函数,请将值分配给某处未使用的单元格,并让其他单元格引用它。

© www.soinside.com 2019 - 2024. All rights reserved.