如何将范围链接复制到加载项工作表,然后从中创建命名范围?
How to copy range links to addin worksheet and then create a named range from it?
是否可以link选择范围(用links复制?)到加载项工作sheet,然后在该加载项工作簿中创建一个命名范围,最后创建一个命名范围,指的是存储在插件中的命名范围?
比如我有这个数据:
我正在尝试使用 links 将其复制到插件工作sheet。插件名为“addin_test.xlam”,其中存储的作品sheet名为“ws_test”。我有这段代码:
Dim rng As Range
Set rng = Selection
rng.Copy
ThisWorkbook.Sheets("ws_test").Range("A1").PasteSpecial
(如何复制 links,而不是绝对值?我希望我的插件 sheet 根据活动 sheet 值更新其数据)
然后我在我的插件工作簿中创建一个命名范围:
ThisWorkbook.Names.Add Name:="Test_addin_name", RefersTo:=ThisWorkbook.Sheets("ws_test").Range("A1:A3")
最后,我正在寻找一种在 activesheet(打开工作簿)中创建命名范围并将其 link 添加到我的加载项中的命名范围的方法。这是我目前所拥有的:
ActiveSheet.Names.Add Name:="Test_sheet_name", RefersTo:=ThisWorkbook.Name & "!" & ThisWorkbook.Names("Test_addin_name").Name
命名范围已正确创建,但遗憾的是它 returns 我在 RefersTo 参数后键入的“字符串”值。此命名范围的值不是 {100,200,300},而是“WorkbookName ...”。我尝试了不同的方法,但似乎没有任何效果。
有人可以帮助我吗?
改,请改
RefersTo:=ThisWorkbook.Name & "!" & ThisWorkbook.Names("Test_addin_name").Name
和
"[" & ThisWorkbook.Name & "]ws_test!" & ThisWorkbook.Names("Test_addin_name").RefersTo
与链接解决方案相关,请尝试下一段代码。当加载项 Name
更改时,它会在您要更新的范围内写入一个公式:
Sub LinkAddinName()
Dim sh As Worksheet
Set sh = ActiveSheet
sh.Range("A1").Formula = "=COUNTA('" & ThisWorkbook.Name & "'!Test_addin_name)"
End Sub
代替 CountA
,您可以使用范围内的任何公式。如果您需要相似的范围,则必须为每个单元格编写公式以链接到命名范围的相应单元格:
Sub LinkAddinNameEachCell()
Dim sh As Worksheet, cel As Range
Set sh = ActiveSheet
For Each cel In ThisWorkbook.Names("Test_addin_name").RefersToRange
sh.Range(cel.address).Formula = "='[" & ThisWorkbook.Name & "]ws_test'!" & cel.address
Next
End Sub
是否可以link选择范围(用links复制?)到加载项工作sheet,然后在该加载项工作簿中创建一个命名范围,最后创建一个命名范围,指的是存储在插件中的命名范围?
比如我有这个数据:
我正在尝试使用 links 将其复制到插件工作sheet。插件名为“addin_test.xlam”,其中存储的作品sheet名为“ws_test”。我有这段代码:
Dim rng As Range
Set rng = Selection
rng.Copy
ThisWorkbook.Sheets("ws_test").Range("A1").PasteSpecial
(如何复制 links,而不是绝对值?我希望我的插件 sheet 根据活动 sheet 值更新其数据)
然后我在我的插件工作簿中创建一个命名范围:
ThisWorkbook.Names.Add Name:="Test_addin_name", RefersTo:=ThisWorkbook.Sheets("ws_test").Range("A1:A3")
最后,我正在寻找一种在 activesheet(打开工作簿)中创建命名范围并将其 link 添加到我的加载项中的命名范围的方法。这是我目前所拥有的:
ActiveSheet.Names.Add Name:="Test_sheet_name", RefersTo:=ThisWorkbook.Name & "!" & ThisWorkbook.Names("Test_addin_name").Name
命名范围已正确创建,但遗憾的是它 returns 我在 RefersTo 参数后键入的“字符串”值。此命名范围的值不是 {100,200,300},而是“WorkbookName ...”。我尝试了不同的方法,但似乎没有任何效果。
有人可以帮助我吗?
改,请改
RefersTo:=ThisWorkbook.Name & "!" & ThisWorkbook.Names("Test_addin_name").Name
和
"[" & ThisWorkbook.Name & "]ws_test!" & ThisWorkbook.Names("Test_addin_name").RefersTo
与链接解决方案相关,请尝试下一段代码。当加载项 Name
更改时,它会在您要更新的范围内写入一个公式:
Sub LinkAddinName()
Dim sh As Worksheet
Set sh = ActiveSheet
sh.Range("A1").Formula = "=COUNTA('" & ThisWorkbook.Name & "'!Test_addin_name)"
End Sub
代替 CountA
,您可以使用范围内的任何公式。如果您需要相似的范围,则必须为每个单元格编写公式以链接到命名范围的相应单元格:
Sub LinkAddinNameEachCell()
Dim sh As Worksheet, cel As Range
Set sh = ActiveSheet
For Each cel In ThisWorkbook.Names("Test_addin_name").RefersToRange
sh.Range(cel.address).Formula = "='[" & ThisWorkbook.Name & "]ws_test'!" & cel.address
Next
End Sub