我有一个表(listobject 类型的表)。我对其进行了排序、过滤并查看了工作表。一切都很好。现在我尝试列举...
在哪里
- oWs_ma 是包含表格的工作表
- oLO_maTable 是该工作表上的表
- oRg 是范围对象
- 所有变量都是字符串
在下面的循环中,临时范围对象返回正确的行号。此行号是工作表显示的编号。例如,表中的第一个数据行位于工作表的第 5 行。除了单行之外,在所有行中,工作表和表对象返回相同的值。在他们没有的情况下,工作表是正确的。30 或 40 行中只有一个错误。这不是终点错误。它发生在表格的中间。错误之前似乎没有什么独特之处。实际上,oRg_tmp.row 报告的行值发生了变化并指向了正确的行!
这个结构正确吗?包含用于测试目的的附加代码,只是为了表明我得到的确实是“正确的”
For Each oRg_tmp In oLO_maTable.DataBodyRange.Rows.SpecialCells(xlCellTypeVisible).Rows
Set oRg_maOwer = oLO_maTable.Range.Cells(oRg_tmp.row, colndx_ma_it_owner)
Set oRg_maGLDept = oLO_maTable.Range.Cells(oRg_tmp.row, colndx_ma_gl_dept)
ma_owner = oRg_maOwer.Value2
ma_gl_dept = oRg_maGLDept.Value2
ma_owner_ws = oWs_ma.Cells(oRg_tmp.row, colndx_ma_it_owner).Value2
ma_gl_dept_ws = oWs_ma.Cells(oRg_tmp.row, colndx_ma_gl_dept).Value2
...
Next
如果构造是正确的,那么这个问题就解决了。我将使用工作表。
谢谢。