gpt4 book ai didi

excel - 为什么 VBA copytoClipboard 不再工作?

转载 作者:行者123 更新时间:2023-12-03 02:17:31 31 4
gpt4 key购买 nike

我一直在使用这个小makro for excel,直到它突然停止工作(我没有改变任何东西,除了办公室更新):

Sub SumToClipboard()
If TypeName(Selection) <> "Range" Then Exit Sub
ToClipBoard (WorksheetFunction.Sum(Selection))
End Sub


Public Function ToClipBoard(s)
Dim DataObj As New MSForms.DataObject
DataObj.SetText s
DataObj.PutInClipboard
End Function

它仍然会复制一些内容到剪贴板,但它不是像以前那样是所选单元格的总和,而是一些无法识别的内容。你们知道我是否需要更改一些设置或者更新是否会使此处的任何代码变得无用?我对此时的任何输入感到高兴。

最佳答案

尝试明确说明您要使用的对象和数据类型。另外,还有一个函数 should return a value 。考虑:

Public Sub SumSelectionToClipboard()
If Not TypeOf Selection Is Excel.Range Then Exit Sub
Dim total As Variant
total = WorksheetFunction.Sum(Selection)
If IsNumeric(total) Then ToClipBoard CDbl(total)
End Sub


Private Sub ToClipBoard(ByVal value As Double)
With New MSForms.DataObject
.SetText CStr(value)
.PutInClipboard
End With
End Sub

这里工作正常。我怀疑涉及的单元格之一可能包含 Variant/Error 值(例如 #REF!#VALUE! 等) 。如果结果不是有效的数值,上面的代码不会将总和发送到剪贴板。

另请注意,与 TypeOf...Is 相比,TypeName 是一个相当弱的“字符串类型”类型检查。

关于excel - 为什么 VBA copytoClipboard 不再工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58187261/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com