使用参数调用excel VBA子例程

时间:2014-06-03 15:44:37

标签: excel vba excel-vba

我想创建一个接受范围作为参数的子程序。像这样:

Sub Test(dataRange As Range)

    Sheet2.Range("A1").Cells.value = dataRange.Cells(1, 1)

End Sub

但是,当我尝试在Excel上选择范围并运行它时,我收到“引用无效”错误。

注意:我试图通过进入Developer选项卡并单击“Macros”按钮来运行它。在那里我输入Test($A$2:$B$4),然后我得到错误。

有没有办法从Excel电子表格调用自定义VBA子例程并将参数传递给它?

由于

2 个答案:

答案 0 :(得分:2)

虽然这不是一般性答案,但它应该适用于您的目的:

Sub Test(Optional dataRange As Range = Nothing)
    If dataRange is Nothing then Set dataRange = Range(Selection.Address)
    Sheet2.Range("A1").Cells.value = dataRange.Cells(1, 1)

End Sub

在宏观菜单中,只需输入Test并点击"运行"按钮。

这将使用当前Selection作为数据范围。

或者,使用InputBox来捕获范围参数:

Sub Test2()
    Dim dataRange as Range
    Set dataRange = Application.InputBox("Select range", Type:=8)
    If dataRange is Nothing then Exit Sub
    Sheet2.Range("A1").Cells.value = dataRange.Cells(1, 1)

End Sub

答案 1 :(得分:0)

您需要在该范围内引用:

  

测试(范围(" $ A $ 2:$ B $ 4#34))