Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用参数调用模块时发生VBA错误1004_Vba_Excel_Runtime Error - Fatal编程技术网

使用参数调用模块时发生VBA错误1004

使用参数调用模块时发生VBA错误1004,vba,excel,runtime-error,Vba,Excel,Runtime Error,这是我的第一篇文章,请耐心听我说 当我尝试从用户窗体调用模块并传递参数时,出现运行时错误1004。我相信答案是显而易见的,但我对传递论点还不熟悉 单击“提交”按钮时从用户表单: Sub SubmitButton_Click() Dim addRowValue As Integer addRowValue = LineBox.Value MsgBox "Add " & addRowValue & " rows." Call Sheet1.ResizeTable(addRowV

这是我的第一篇文章,请耐心听我说

当我尝试从用户窗体调用模块并传递参数时,出现运行时错误1004。我相信答案是显而易见的,但我对传递论点还不熟悉

单击“提交”按钮时从用户表单:

Sub SubmitButton_Click()

Dim addRowValue As Integer

addRowValue = LineBox.Value

MsgBox "Add " & addRowValue & " rows."
Call Sheet1.ResizeTable(addRowValue)

End Sub
从第1页:

Sub ResizeTable(addRowValue As Integer)

Dim rng As Range
Dim tbl As ListObject

Set tbl = ActiveSheet.ListObjects("DATA_INPUT")

Set rng = Range("DATA_INPUT[#All]").Resize(tbl.Range.Rows.Count +  _
 addRowValue, tbl.Range.Columns.Count)

tbl.Resize rng

End Sub
Call Sheet1.ResizeTable可以正常工作,但当我添加参数时,会出现错误。此外,当我将变量addRowValue更改为一个设置的数字并运行它时,模块ResizeTable工作正常


谢谢你的帮助

问题是您正在为integer类型的变量分配字符串

改变

addRowValue = LineBox.Value

编辑:您可能还希望确保用户输入一个数字值,以便执行以下操作:

If IsNumeric(LineBox.Value) Then
    addRowValue = CInt(LineBox.Value)
Else
    MsgBox "Please enter numeric value", vbCritical
    LineBox.Value = ""
End If

感谢您的快速响应,我做了更改,但仍然收到相同的错误。还有其他建议吗?这是一个应用程序定义或对象定义的错误,如果有帮助的话。在Call Sheet1.ResizeTableaddRowValue中,如果有帮助的话,我也可以为文本框添加代码。这就是我的想法。Sheet1是选项卡的名称,还是对象的名称?对象可能是?选项卡名称为数据输入。如果您发布了与实际工作簿的链接。我来看看。这是最有效的方法
If IsNumeric(LineBox.Value) Then
    addRowValue = CInt(LineBox.Value)
Else
    MsgBox "Please enter numeric value", vbCritical
    LineBox.Value = ""
End If