相关疑难解决方法(0)

在VBA中查找上次使用的单元格时出错

当我想找到最后使用的单元格值时,我使用:

Dim LastRow As Long

LastRow = Range("E4:E48").End(xlDown).Row

Debug.Print LastRow
Run Code Online (Sandbox Code Playgroud)

当我将单个元素放入单元格时,输出错误.但是当我在单元格中放入多个值时,输出是正确的.这背后的原因是什么?

excel vba excel-formula

168
推荐指数
9
解决办法
11万
查看次数

Excel VBA - 查找表列中给定值的行号

背景

我不久前构建了这段代码,它可以在一个电子表格中运行。它本质上被调用来查找第一个表列中给定值的表行号。然后,其余代码使用此表行号来更新该行的值。

我最近将同样的方法应用于另一个电子表格,直到昨天它才起作用。现在,在 myArray = tbl.DataBodyRange 行上,我收到运行时错误“6”(溢出)。最近的电子表格中的表有更多的数据,因此 myArray 无法再保存表数据。

我修改了代码以使用 ListRows 搜索表行,然后检查第一列的每个值,直到找到我要查找的内容。

在这两个例程中,如果未找到该值,则返回 0,并且其他代码知道不要尝试更新表行。

问题

我是否可能会遇到修改后的方法的进一步问题和/或是否有更有效的方法来查找我正在寻找的行号。该表目前约有 700 行数据,未来几个月将增长到 4,000 多行。

出现溢出错误的代码

Function getRowNum(ByVal valueToFind As String)
    Dim tbl As ListObject
    Dim myArray As Variant
    Dim x As Long
    Dim checkvalueToFind As String
    Dim rowFound As Integer
    
    rowFound = 0
    
    Set tbl = Range("table_masterList").ListObject
    
    myArray = tbl.DataBodyRange
    
    For x = LBound(myArray) To UBound(myArray)
        checkvalueToFind = myArray(x, 1)
        'Debug.Print checkvalueToFind
        If checkvalueToFind = valueToFind Then
            rowFound = x
            GoTo foundIt
        End If …
Run Code Online (Sandbox Code Playgroud)

excel vba

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

excel ×2

vba ×2

excel-formula ×1