【问题标题】:Excel VBA - Calling individual cells in a defined nameExcel VBA - 以定义的名称调用单个单元格
【发布时间】:2014-07-14 22:38:28
【问题描述】:

我已经通过它后面的列定义了一个列(即Data1 -> Label1,Data2 -> Label2等)我发现我需要在我的表单中添加一个数据字段,它也会依赖于当前命名列(即 Extra1 -> 标签 1 等)。

我可以创建所有新标签,但我希望两个单元格都依赖于同一个标签。我在一张废纸上玩过,当有多个时,不能使一个单元格等于定义名称的单元格。如果我只有一个,我没有问题:

A         B
Data1     Label1
=Label1

将在第二行给我 Data1。

A         B         C
Data1     Data2     Label1
=Label1

会给我一个#VALUE 错误。

如何从这样定义的名称中获取单个单元格?是范围吗?尝试在 VBA 中将其作为 Label1.Cells(x, x) 抓取也会给我一个错误。我是否必须为第二个数据列制作单独的标签(不理想)。

谢谢,

【问题讨论】:

  • Range("Label1").Cells(x, x)?
  • 是的,定义的名称现在就是范围的名称。在此处的 cmets 中使用 @rdhs 的建议。

标签: excel vba


【解决方案1】:

你可以使用INDEX函数获取第二行的Data1

=INDEX(Label1,1,1)

在您的示例中返回 Data2

=INDEX(Label1,1,2)

Edit1:这是 VBA 等效项

Range("Label1")(1) '~~> return Data1
Range("Label1")(2) '~~> return Data2

或者你可以是明确的

Range("Label1").Item(1, 1) '~~> return Data1

这是使用 WorsheetFunction

的 VBA
WorksheetFunction.Index(Range("Label1"), 1, 1) '~~> return Data1

【讨论】:

  • 这很有帮助,但 INDEX 在 VBA 中不起作用,至少不像定义的那样。我已经尝试了一切:Private Sub CommandButton1_Click() Dim bar As String Dim foo As Integer For foo = 1 To 5 bar = "space" & foo Cells(foo, 4).Value = Worksheets(Sheet6).WorksheetFunction.Index(bar, 1, 1) Next End Sub 没有运气。如何让工作表函数在 VBA 中工作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多