运行时错误'1004':子例程中对象'_Global'的方法'Range'失败

时间:2018-08-23 19:31:02

标签: vba excel-vba

运行此代码时,出现以下错误:

  

运行时错误'1004':对象'_Global'的方法'Range'失败

非常感谢您的帮助。

Public Sub go()

Dim c As Range
Dim w As Integer
Dim h As Integer
Dim rowloop As Integer
Dim colloop As Integerr
Dim filename As String
filename = Range("configuration!excelfilename").Value

Windows(myfile).Activate

Worksheets("outputs").Range("A2:AK30").Clear
Sheets("api").Cells.ClearContents
w = Range("testcases").Columns.Count
h = Range("testcases").Rows.Count
'o = Range("outputs").Columns.Count

Sheets("outputs").Select
Range("A2").Select ' this decides the initial cell into which we will paste the first copy/paste operation in outputs

For rowloop = 2 To h 'iterate over each of the rows of inputs beginning with row 2
    result = "PASS: "
    Json = ""
    For colloop = 1 To w ' first fill in all the inputs to the spreadsheet building the JSON for api as you go
        Call PasteInput(Range("testcases")(colloop)(1), Range("testcases")(colloop)(rowloop))

'above PasteInput function call my below subroutine
     Sub PasteInput(input_name As Variant, v As Variant)
    filename = Range("configuration!excelfilename").Value
    Windows(filename & ".xlsx").Activate

    Range(input_name).Value = v     ['error highlight on this line]
    Windows(myfile).Activate
End Sub

1 个答案:

答案 0 :(得分:0)

逐步进行调试将是您的朋友。使用debug.print行来指示何时到达代码中的某些点将对您有很大的帮助。

使用Option Explicit很重要,它可能会使系统提供更有用的注释,并且还可以进行调试。

您根据名称(Named Ranges)调用范围。 filename = Range("configuration!excelfilename").Value正在呼叫一个非法名称。

但是您的主要错误是您正在调用的命名范围不存在。由您自己进行调试,以找出为什么传递一个不好的名字来用作命名范围的原因。

此外,检查活动工作表中是否存在命名范围。因为您尚未指定工作表。

话虽如此,您的代码中还有许多其他错误,这意味着,即使修复了上述错误,您仍然会有错误。令您惊讶的是,您甚至使代码能够运行到足以产生错误的程度(编译器本该对For感到困惑,而没有NextSub中的Sub )。我希望我们在处理代码时会收到您的其他新问题!