连接在Excel VBA中不起作用
Excel 16.0 视窗10 联想Z70-80 英特尔(R)核心i7-5500U CPU@2.40 Ghz,2401 Mhz,2核,4逻辑 我正在尝试使用找到的excel GUID子例程。它在单元格中用作公式时工作正常,但在作为子程序模块调用时不起作用连接在Excel VBA中不起作用,excel,vba,Excel,Vba,Excel 16.0 视窗10 联想Z70-80 英特尔(R)核心i7-5500U CPU@2.40 Ghz,2401 Mhz,2核,4逻辑 我正在尝试使用找到的excel GUID子例程。它在单元格中用作公式时工作正常,但在作为子程序模块调用时不起作用 = CONCATENATE(DEC2HEX(RANDBETWEEN(0, 4294967295), 8), "-", DEC2HEX(RANDBETWEEN(0, 42949), 4), "-", DEC2HEX(RANDBETWEEN(0,
= CONCATENATE(DEC2HEX(RANDBETWEEN(0, 4294967295), 8), "-", DEC2HEX(RANDBETWEEN(0, 42949), 4), "-", DEC2HEX(RANDBETWEEN(0, 42949), 4), "-", DEC2HEX(RANDBETWEEN(0, 42949), 4), "-", DEC2HEX(RANDBETWEEN(0, 4294967295), 8), DEC2HEX(RANDBETWEEN(0, 42949), 4))
我已经将其分开,并发现问题在于连接函数得到了运行时错误“438”:对象不支持此属性或方法
我已经安装了atpvbaen.xls和VBAProject附加组件。加载项将显示在“工具引用”下选中,并显示在“我的项目文件夹”上方的VBA编辑器文件资源管理器中
一些附加函数可以工作,例如Dec2Hex和randbehen
从子程序调用 Works-->p=Application.WorksheetFunction.RandBetween(1999) Works-->p=应用程序.工作表函数.Dec2Hex(1234,5) 无工作-->p=Application.WorksheetFunction.CONCATENATE(“-”,“a”)
作为单元格中的公式 Works-->=串联(“-”,“a”) Works-->=串联(8,“a”) Works-->=连接((randtween(1999)),“XXX”)
我已经花了数小时寻找帮助和测试,我将非常感谢一些指导。
谢谢-Gary
连接
不是一个可以从VBA调用的Excel函数。您可以使用Join()
或简单的连接,&
。如果您确实不喜欢在调用Join()
之前必须将参数包装到数组中,您可以使用自己的:
Function Concatenate(ParamArray Strings()) As String
Concatenate = Join(Strings, "")
End Function
用法如下:
Sub Test()
Debug.Print Concatenate("A", "B", "C")
End Sub
它只是将ABC
打印到即时窗口
讨论了为什么不能从VBA调用连接
:
注意:某些工作表函数在Visual Basic中没有用处。对于
例如,不需要连接函数,因为在Visual Basic中
可以使用&运算符连接多个文本值
CONCATENATE可能不是VBA函数,但CONCAT是:
ConcatedCells = WorksheetFunction.Concat(range("A1:C1"))
为什么需要在VBA中使用该工作表函数?还有许多其他方法可以将字符串组合在一起。例如:
p=Join(数组(“-”,“a”),vbNullString)
Concatenate()
不是工作表函数
对象的方法。对项目引用的任何更改都不会解决这个问题。也许您可以使用&
或连接来代替。正如我上面提到的,它是单元格公式的一部分,用于生成GUID。我错误地认为在单元格中工作的东西在VBA中也会工作。谢谢John-我将浏览您建议的文档链接。我知道我该怎么做了。