使用VBA设置另一个单元格引用的Excel单元格的值

时间:2012-12-04 05:31:19

标签: excel vba excel-vba

我目前有一个名为" DataMap"的电子表格。它具有键/值布局。 键是对另一个电子表格和单元格的引用,该值由用户输入。

例如,键列可能包含以下各个引用:

  • = Sheet 1中!B25
  • ='表2'!B25
  • =表名[TableRowName]

还有一个名为" Transfer Data"的按钮。在这个页面上。

何时"传输数据"按下,宏运行将值复制到键列引用的单元格中。

这个页面的目的是让一个位置可以从第三方系统注入数据,而不知道excel工作簿的其余部分 - 除非有""数据地图& #34;片材。

目前,我循环遍历" DataMap"中的每个键/值对行。并且可以将值注入" = Sheet1!B25"使用以下代码:

reference = Replace(Sheets("MAPPINGS").Range("A" & row).Formula, "=", "")
refSplit = Split(reference, "!")

Sheets(refSplit(0)).Range(refSplit(1)) = Sheets("MAPPINGS").Range("B" & row).Value

如果我使用字符串替换,我可以处理" ='表2'!B25"案件也是如此。

然而,我对命名表有很大的麻烦。

有可能吗? 或者,或者,是否有人建议更好的方法来专门处理将值复制到由'键引用的单元格中?列(无论引用的格式如何)?

由于

2 个答案:

答案 0 :(得分:1)

Dim sht As Worksheet
Dim ref As Range

Set sht = Sheets("MAPPINGS")

Set ref = Application.Evaluate(Replace(sht.Range("A" & Row).Formula, "=", ""))
ref.Value = sht.Range("B" & Row).Value

答案 1 :(得分:0)

见下文。

Dim sht As Worksheet
Dim address As Range

Set sht = Sheet2

Set address = Range(Replace(sht.Range("A" & 5).Value, "=", vbNullString))
address.Value = sht.Range("B" & 5).Value

一些建议:

  1. 将表格(“映射”)更改为工作表的内部名称(在VBA窗口中找到),因此如果在Excel中更改工作表名称,则不会影响您的宏。
  2. 不要在单元格引用中添加“=”,因此您不需要替换语法。