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

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

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

  • 工作表Sheet1 =!B25
  • ='表2'!B25
  • =表名[TableRowName]

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

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

这个页面的要点是有一个单独的位置,可以从第三方系统注入数据,而不需要知道其他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 

如果我使用stringreplace,我也可以处理“='Sheet 2'!B25”的情况。

然而,我在命名表中遇到了很大的麻烦。

可能吗? 或者,或者,有没有人有一个更好的方法来具体处理一个值复制到“键”列引用的单元格(不pipe引用的格式)的build议?

谢谢

见下文。

 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 

几个build议:

  1. 将表格(“MAPPINGS”)更改为工作表的内部名称(在VBA窗口中find),所以如果表格名称在Excel中更改,它不会影响您的macros。
  2. 不要在单元格引用中添加“=”,所以您不需要replace语法。
 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