无法让这个功能工作我认为Loop是错误的

时间:2014-09-25 17:47:37

标签: excel vba

由于某种原因,这会产生值错误。该函数应该告诉我,在我添加T变量循环之前,它的值是什么工作正常。我知道我错过了一些简单的事情。

Function FIND_THE_ENTRY(x) As String
    Dim lngBottom As Long
    For Each element In ActiveWorkbook.Worksheets 'loops every worksheet
        lngBottom = Sheets(element.Name).Cells(Rows.Count, 1).End(xlUp).Row

        For T = 1 To 26 'why does this not work
            For R = 1 To lngBottom
                If Sheets(element.Name).Cells(R, T).Value = x Then
                    FIND_THE_ENTRY = FIND_THE_ENTRY & element.Name & ", "
                End If
            Next R
        Next T
    Next element

    FIND_THE_ENTRY = Left(FIND_THE_ENTRY, Len(FIND_THE_ENTRY) - 2)
End Function

1 个答案:

答案 0 :(得分:1)

循环遍历行和列并对每个单元格执行测试可能很昂贵,应该尽可能避免(通常情况下显然不是这样)。在这种情况下,我相信您可以使用.find的{​​{1}}方法来编写此内容。这将使你离开你的循环,这取决于找到包含A列数据的最后一行,让你慢慢爬过每个寻找X的单元格。

range

老实说,除了Function FIND_THE_ENTRY(x) As String Dim lngBottom As Long Dim rng As Range Dim Element as Worksheet For Each Element In ActiveWorkbook.Worksheets 'loops every worksheet With Element.Range("A1:Z1000000") Set rng = .Find(What:=x, _ After:=.Cells(.Cells.Count), _ LookIn:=xlValues, _ LookAt:=xlWhole, _ SearchOrder:=xlByRows, _ SearchDirection:=xlNext, _ MatchCase:=False) End With If Not rng Is Nothing Then FIND_THE_ENTRY = FIND_THE_ENTRY & Element.Name & ", " End If Next Element FIND_THE_ENTRY = Left(FIND_THE_ENTRY, Len(FIND_THE_ENTRY) - 2) End Function Left(FIND_THE_ENTRY, LENGTH(FIND_THE_ENTRY)- 2) FIND_THE_ENTRY vbnull并且有一对夫妇试图确定{{1}}会产生重大错误这一事实之外,我没有发现您的代码有任何问题可能导致它为空的事情就像没有在任何工作表中找到X而在每个工作表的A列的每个填充行中都没有值。