连接在Excel VBA中不起作用

连接在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,

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, 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-我将浏览您建议的文档链接。我知道我该怎么做了。