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