1

我有一个表(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

如果构造是正确的,那么这个问题就解决了。我将使用工作表。

谢谢。

4

0 回答 0