1

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

例如,键列可能具有以下单独的引用:

  • =工作表1!B25
  • ='表 2'!B25
  • =表名[表行名]

此页面上还有一个名为“传输数据”的按钮。

当按下“传输数据”时,将运行一个宏,将值复制到键列引用的单元格中。

这个页面的重点是有一个可以从第三方系统注入数据的位置,而不需要知道 excel 工作簿的其余部分——除非有一个“DataMap”表。

目前,我遍历“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

如果我使用字符串替换,我也可以处理 "='Sheet 2'!B25" 的情况。

但是,我在使用命名表时遇到了很大的麻烦。

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

谢谢

4

2 回答 2

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
于 2012-12-04T06:02:11.357 回答
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. 将 Sheets("MAPPINGS") 更改为工作表的内部名称(在 VBA 窗口中找到),因此如果在 Excel 中更改工作表名称,它不会影响您的宏。
  2. 不要在单元格引用中添加“=”,因此您不需要替换语法。
于 2012-12-04T09:12:41.163 回答