VBA编辑器抱怨缺少对象

VBA编辑器抱怨缺少对象,vba,excel,Vba,Excel,出于某种原因,VBE告诉ConcatenateRows需要一个对象,我不太清楚为什么,即时窗口告诉我ConsolidateRange是一个范围: Option Explicit Private ConsolidateRange As Range Private Sub CancelButton_Click() RangeConsiolidateForm.Show End Sub Private Sub RangeInput_Change() Set ConsolidateR

出于某种原因,VBE告诉ConcatenateRows需要一个对象,我不太清楚为什么,即时窗口告诉我ConsolidateRange是一个范围:

Option Explicit
Private ConsolidateRange As Range

Private Sub CancelButton_Click()
    RangeConsiolidateForm.Show
End Sub


Private Sub RangeInput_Change()
    Set ConsolidateRange = Range(RangeInput)
End Sub

Private Sub UserForm_Initialize()
    Direction.AddItem "Rows"
    Direction.AddItem "Columns"
End Sub

Private Sub OkButton_Click()
    If Direction = "Rows" Then
        ConcatenateRows (ConsolidateRange)
        RangeConsiolidateForm.Show
    End If
End Sub

更新:我正在签名的错误是运行时错误“424”:需要对象

尝试更改调用

合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并

合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并合并


这是一个针对新手的旧VBA捕获过程调用。

谢谢,成功了。我讨厌这种语法:@sgp667接受它。你用大括号所做的就是强迫所有东西都按值传递。@RBarryYoung是的,复制,就像传递ByVal一样,即使签名隐式或显式地说ByRef-换句话说,一直使用大括号而不知道它做什么,不仅会造成混乱,还会引入微妙的错误。采用标准隐式过程调用语法DoSomething 42,或者,如果你真的想让那些Paren everywhere调用DoSomething42,那么就使用丑陋、过时或完全无用的Call语句。你也可以将函数的定义从Public Sub ConcatenateRowsInputRange as range更改为Public Sub ConcatenateRowsByRef InputRange asrange@ChipsLetten那是没有效果的,,默认情况下,参数在VBA中通过ByRef传递。问题:1抛出错误的是哪一行?2在RangeInput_更改过程中,RangeInput变量的定义和设置在哪里,它的定义和设置是什么?
Public Sub ConcatenateRows(InputRange as range)
....bunch of code....
End Sub