VBA函数返回单元格引用

时间:2016-02-26 18:15:41

标签: excel vba excel-vba macros

我目前有一个工作簿,其中有很多对每小时更新的工作簿的引用。我有使用find和replace函数的宏来将单元格引用更改为另一组数据。问题是在所有单元格上查找和替换迭代需要花费很多时间。我的想法是定义一个返回一个新单元格ref的函数,但是我已经不知道如何使它工作任何帮助将不胜感激。这就是我到目前为止所拥有的

 Public Function test(cel) As Range
Dim celvar As Integer
celvar = cel
var1 = "=('\\server\folder1\folder2\folder3\folder4\[workbook.xlsx]"
var2 = Range("I2").Value
var3 = "'!$B"
var4 = ")"
test = var1 & var2 & var3 & celvar & var4
End Function

我会像这样调用目标单元格中​​的函数 =测试(151)并让它返回 =(' \服务器\ folder1中\文件夹2 \ folder3 \ folder4 [workbook.xlsx]表'!$ B153)

不可饶恕地回归#Ref或#Value

1 个答案:

答案 0 :(得分:0)

如果不确切知道你想要实现什么,这很困难,但是当你的连接创建一个字符串时,我可以看到你的函数被设置为返回一个范围。我还指定了您期望的变量类型,这是一个基于您使用cel的整数,因此请确保您向函数发送一个整数,最后确保您正在设置cell.formula到你的测试字符串,而不是cell.value

Public Function test(cel as integer) As string
var1 = "=('\\server\folder1\folder2\folder3\folder4\[workbook.xlsx]"
var2 = Range("I2").Value
var3 = "'!$B"
var4 = ")"
test = var1 & var2 & var3 & cel & var4
End Function

但是,当您将该函数用作单元格函数时,我希望这只会将输出视为字符串,而不是公式,因此您可能还需要添加一些内容来评估单元格 - 也许是cellnexttothisone.formula = thiscell.value