繁体   English   中英

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

[英]Setting the value of an excel cell referenced by another cell with VBA

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

例如,键列可能具有以下各个引用:

  • = Sheet1!B25
  • ='Sheet 2'!B25
  • = TableName [TableRowName]

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

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

该页面的重点是在一个位置,可以从第3方系统注入数据,而无需了解其他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”的情况。

但是,我在命名表方面遇到了很大的麻烦。

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

谢谢

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

见下文。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM