excel - Excel VBA将范围传递给函数产生424:需要对象
问题描述
我正在尝试将范围传递给函数并得到运行时错误 424:需要对象。
这是功能:
Function TextToCol(myRange As Range)
myRange.TextToColumns Destination:=myRange, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
:=Array(1, 1), DecimalSeparator:=".", ThousandsSeparator:=",", _
TrailingMinusNumbers:=True
End Function
这是我尝试使用它的子:
Sub Test()
Dim wschar As Worksheet
Dim rng As Range
Set wschar = ThisWorkbook.Worksheets("Charges")
Set rng = wschar.Range("A1")
TextToCol (rng)
End Sub
我已经尝试了几种不同的方法,但无法弄清楚为什么它不接受我的范围。
这是它以黄色突出显示的未通过的行:
TextToCol (rng)
解决方案
删除TextToCol (rng)
&中的括号,祝您进一步调试好运。
一般来说,认为函数应该返回一些东西(文本、值或对象),否则Sub
应该使用。在您的情况下,请考虑编写Sub TextToCol(myRange As Range)
.
ByRef
并且ByVal
在 VBA 中有些棘手,在这里你可以看到一些例子:
Public Sub TestMe()
Dim var1, var2
Dim var3, var4
Dim var5, var6
var1 = Array(1, 1)
var2 = Array(2, 1)
var3 = Array(3, 1)
var4 = Array(4, 1)
var5 = Array(5, 1)
var6 = Array(6, 1)
increment1 (var1)
increment2 (var2)
increment1 var3
increment2 var4
var5 = increment1(var5)
var6 = increment2(var6)
Debug.Print var1(0)
Debug.Print var2(0)
Debug.Print var3(0)
Debug.Print var4(0)
Debug.Print var5(0)
Debug.Print var6(0)
End Sub
Public Function increment1(ByVal testValue As Variant) As Variant
testValue(0) = testValue(0) + 100
increment1 = testValue
End Function
Public Function increment2(ByRef testValue As Variant) As Variant
testValue(0) = testValue(0) + 100
increment2 = testValue
End Function
印刷:
1
2
3
104
105
106
- 整篇文章在这里(免责声明:这是我的)
- 用于传递变量 ByRef 和 ByVal 的CPearson (RIP)文章
推荐阅读
- conda - CONDA:[Errno 48] 地址已在使用中
- javascript - 在 NodeJS 中获得未处理的 Promise Rejection 警告
- python - 在python中按行分隔文件
- python - pandas df列中的布尔函数-面向对象-系列的模棱两可的真值
- angular - 使用对象在 Angular 组件和服务之间共享数据
- vue.js - 无法从网络中的其他设备访问 Vue CLI 开发服务器
- c# - 通过 VSTO 加载项 (C#) 访问 PowerPoint 文件中的图像
- python - 以有效的方式将罗马数字转换为整数
- reactjs - 如何使 TypeScript 界面道具依赖于同一界面中的另一个道具?
- r - 在 R 中添加新变量并使用 ifelse 函数