在vba宏中传递变量

时间:2015-12-14 19:35:28

标签: vba excel-vba excel

我试图从两个不同的宏调用一个子程序。我创建了一个名为Store_Policy_Info_Sub_Routine(nrow)的独立宏。

我还有另外两个以不同方式定义nrow的宏。一种是将数据附加到列表的末尾;另一个替换给定行中的数据。

我可以在两个宏中复制Store_Policy_Info_Sub_Routine中的代码,但试图避免这种情况。

第一个宏(Store_Policy_Info)工作正常,并将nrow传递给子例程。第二个宏停止在子例程的第一行代码中:

Range("A" & nrow).Value = Range("InsuredName")

  

运行时错误'1004':应用程序定义的错误或对象定义的错误

似乎不喜欢在不止一个地方定义nrow。

Sub Store_Policy_Info()
'
' Store_Policy_Info Macro

Sheet10.Select
Dim nrow As Integer
nrow = Range("nrow").Value
Call Store_Policy_Info_Sub_Routine(nrow)
Sheet1.Select
Range("A1").Select
Sheet10.Visible = False
End Sub

Sub Rerun_Portfolio()
'
' Rerun the entire portfolio in the data tab and replace existing saved outputs

Sheet10.Select
Dim nrow As Integer
nrow = 2
Do While nrow <= Range("nrow")
    Range("RetrievalSelection").Value = Application.WorksheetFunction.Index(Range("Stored_Inputs"), nrow)
    Call Retrieve_Inputs
    Call Store_Policy_Info_Sub_Routine(nrow)
    nrow = nrow + 1
Loop
End Sub

1 个答案:

答案 0 :(得分:-1)

我明白了。我必须在rerun_portfolio宏中的两个调用语句之间移动我的sheet10.select语句。感谢您提供帮助,并对给您带来的任何不便表示歉意。