我正在编写一个函数来查找当前活动单元格上方具有不同内部颜色(使用条件格式)的第一行。当我用debug.print
或msgbox
打印出来时,该函数有效,但是当我直接在工作表中调用它时,该函数无效。第一行是标题,这就是为什么我排除第一行的原因。
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
。请让我知道我在做什么错,谢谢!
答案 0 :(得分:0)
只是让您不觉得这是不可能的,做您想做的一种可能方法是将BlockStart函数的整个主体放入工作表的SelectionChange事件中。然后,您可以将startRow的值分配给尝试使用BlockStart函数的单元格,而不是blockStart = startRow
的行。
如果多个单元格使用BlockStart函数,则将该值分配给某处未使用的单元格,并让其他单元格引用该值。