2014-07-14 73 views
0

我已经在它后面的列(即Data1 - > Label1,Data2 - > Label2等)定义了一列。我发现需要将数据字段添加到我的表单,它也将取决于当前命名的列(即Extra1 - > Label 1等)。Excel VBA - 以定义的名称调用单个单元格

我可以创建所有新标签,但我宁愿让这两个单元都依赖于相同的标签。我曾在一张废纸上玩过,并且当有多个单元格时,无法使单元格与定义名称的单元格相同。如果我只有一个,我没有问题:

A   B 
Data1  Label1 
=Label1 

会在第二行给我Data1。

A   B   C 
Data1  Data2  Label1 
=Label1 

会给我一个#VALUE错误。

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

感谢,

+2

'范围( “Label1的”)VBA是明确的。细胞(X,X)'? – Chel

+0

是的,定义的名称是现在范围的名称。在这里的评论中使用@rdhs的建议。 – hnk

回答

1

您可以使用INDEX功能得到数据1在两排:

=INDEX(Label1,1,1) 

要在你的例子返回数据2

=INDEX(Label1,1,2) 

EDIT1:这是VBA等价物NT

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

或者你可以

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

下面是使用WorsheetFunction

WorksheetFunction.Index(Range("Label1"), 1, 1) '~~> return Data1 
+0

这很有帮助,但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中工作? – JSM

+0

@JSM看到我的编辑。 – L42

+0

谢谢。这工作完美。 – JSM

相关问题