excel vba中的结构化引用:在范围

时间:2017-07-20 12:36:35

标签: excel excel-vba vba

人, 不太确定如何恰当地呈现这一点。所以忍受我:

  1. 我有一个excel vba用户表单,并希望在用户表单中进行计算,从xls工作表中的单元格检索数据

  2. 我可以选择的单元格是col'A'(GrossSales)和Revenue表中的任何一行;然后,所选单元格识别“活动cell.row”。现在,我想要特定数据的列在不同的列中的其他位置定义 - 该列可以通过#Headers [Sales]

  3. 找到
  4. 由于工作表正在开发中,我不断移动列;所以我想使用对列名称的“动态”引用,而不是使用列字母的“静态”名称[如col'H']

  5. 所以,它如何工作,我点击工作表中col'A'中的单元格,userform获取活动行:ActiveCell.Row;目前,xl​​s一直是“静态的”,所以该列只是标识为“H”。在userform中,我使用Me.Sales.Value = Range(“H”& ActiveCell.Row)获取我的特定值到calc.Value

    我需要的是用标题行'name'替换“H”,所以如果我移动列,这个链接仍然可以工作。 我试过这个: Me.txtSales.Value = Range(“Table_Revenue [[#Headers],[Sales]]”& ActiveCell.Row).Value 我收到此错误: ..运行时间错误1004 .. ..方法'_Global'的'范围'失败

    所以对[#Headers]的引用,[Sales]没有返回相当于旧的“H”

    谁能告诉我这里缺少什么? 可能是我对参考Table_Revenue [[#Headers],[Sales]]的“内部”缺乏了解。它显然不等于H. 我尝试将引用放入MsgBox进行显示,但也失败了。

    感谢, ron

2 个答案:

答案 0 :(得分:0)

我建议你改用ListObject

Me.txtSales.Value = Intersect(Activecell.Entirerow, Activesheet.Listobjects("Table_Revenue").Listcolumns("Sales").Range).Value 

答案 1 :(得分:0)

罗里, 你是对的。我正在尝试了解范围&价值[我仍然非常湿漉漉的耳朵w / excel& VBA。我试过这些东西:

  1. Me.txtSales.Value = Intersect(Activecell.Entirerow,Activesheet.Listobjects(“Table_Revenue”)。Listcolumns(“Sales”)。Range) 使用dim txtSales Variant然后使用dim txtSales Range
  2. Me.txtSales = Intersect(Activecell.Entirerow,Activesheet.Listobjects(“Table_Revenue”)。Listcolumns(“Sales”)。Range).Value 使用昏暗的txtSales Variant
  3. 和#2工作正常,“净销售额”之间的空间。所以,正如你所说 - 它应该工作,它确实如此。 我认为我发现的是这个版本: 范围(“Table_Revenue [[#Headers],[Sales]]”& ActiveCell.Row).Value 被评论为只在excel工作,而不是在vba。

    最后一件事:ListObjects有效,因为它是一个'表'?如果它不是一个表,但定义为'范围',它会起作用吗?

    无论如何,我学到了很多 - 所以非常感谢你的解决方案,但更多的是感谢学习经验。

    罗恩