首页 > 解决方案 > 编辑表功能只能以不可预知的方式工作

问题描述

我想做什么:如果值类似于传递的标准,则更改表数据

代码:

Sub editTableData(tableName As String, rw As Integer, col As Integer, str As String)
    Sheet1.ListObjects(tableName).Range(rw, col).value = str
End Sub
Sub EDITTABLEDATAONOTHERPAGE()
    Call editTableData("statement", 20, 6, "Why did this work?")
End Sub 

结果:

03/19/2020, WAL-MART SUPERCENTER, 67.07, blank, blank, "Why did this work?"

在此处输入图像描述

但是在这里调用时:

Function categorize(criteria As String) As Double
    Dim statement As listobject, statementNames As Range, statementCategory As Range, statementCredit As Range, name As Range
    Set statement = Sheet1.ListObjects("statement")
    Set statementNames = Sheet1.ListObjects("statement").ListColumns("Name").DataBodyRange
    Set statementCategory = Sheet1.ListObjects("statement").ListColumns("Category").DataBodyRange
    Set statementCredit = Sheet1.ListObjects("statement").ListColumns("Credit").DataBodyRange
    '---this is the part that matters:--------------------------------
    For Each name In statementNames
        If name.value Like criteria + "*" Then
            Call editTableData(statement.name, name.row, statementCategory.column, statement.name)
            categorize = categorize + statementCredit(name.row, statementCredit.column).value
        End If
    Next
End Function

它进入方法,它分别将 editTableData("statement", 20, 6, "statement") 作为 String, int, int, String 传递(所以相同的数据),但它只是停止工作,我不知道为什么。

任何有启发性的东西都会很好,这是我使用这个表来调用公式的表:

一张桌子的照片

在此处输入图像描述


更新/修正:这是调试照片: 在方法 中调用方法(参考本地窗口获取值): 在方法中

当我再次按 F8 时,它崩溃了......没有错误消息,上面或下面的其他单元格都没有改变,所以它根本不工作。如果这是一个很容易解决的索引问题

标签: excelvbaexcel-formula

解决方案


推荐阅读