excel 2010 - listobject表和工作表范围返回不同的值 - bug?

时间:2014-02-25 17:06:51

标签: excel vba excel-vba listobject

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

如果构造正确,则解决了这个问题。我将使用工作表。

感谢。

0 个答案:

没有答案