excel 2010 – listobject表和工作表范围返回不同的值 – 错误?

我有一个表(listobjecttypes的表)。 我对它进行了整理,过滤并查看了工作表。 一切都很好。 现在我试图列举…

哪里

  • oWs_ma是包含表的工作表
  • oLO_maTable是该工作表上的表
  • ORG是范围对象
  • 所有的变数都是string

在下面的循环中,临时范围对象返回正确的行号。 该行号是工作表显示的编号。 例如,表格中的第一个数据行位于表格第5行。除了一行外,所有工作表和表格对象都返回相同的值。 在他们没有的单个实例中,工作表是正确的。 30或40行只有一个错误。 这不是一个终点错误。 它发生在桌子中间。 在错误之前似乎没有任何独特之处。 事实上,由oRg_tmp.row报告的行值会改变并指向正确的行!

这个构造是否正确? 还有一些额外的代码用于testing目的,只是为了表明我所得到的确是“正确的”

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 

如果构造是正确的,就解决了。 我将使用工作表。

谢谢。