我正在尝试将范围传递给函数并获取运行时错误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)
答案 0 :(得分:3)
删除TextToCol (rng)
&中的括号。 祝你好运,进一步调试。
通常,认为函数应返回某些内容(Text,Value或Object),否则应使用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