将转换后的jsonstring粘贴到另一个工作表时VBA运行时错误1004

我有一个从Web服务调用转换的jsonstring响应文本。 如果将代码粘贴到调用Web服务的button所在的工作表上,代码就可以工作。 但是,如果我尝试将结果放在另一张纸上,我得到“错误1004应用程序定义或对象定义的错误”

在excel上单击button的代码如下:

Private Sub webcall_Click() Dim MyRequest As Object Dim JSON As Dictionary Dim Header As Range Dim Env As String Logix = Sheets("Sheet1").Cells(2, "G").Value If Env = "" Then URL = "https://defaultURL/sqlquery.aspx" MsgBox (URL) Else URL = "https://anotherURL/sqlquery.aspx" MsgBox (URL) End If Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1") MyRequest.Open "POST", URL MyRequest.Send Set JSON = JsonConverter.ParseJson(MyRequest.responseText) Dim Values As Variant ReDim Values(JSON("chargebackdept table").Count, 3) Dim Value As Dictionary Dim i As Long i = 0 For Each Value In JSON("chargebackdept table") Values(i, 0) = Value("chargebackcategory") Values(i, 1) = Value("chargebackdeptid") Values(i, 2) = Value("name") i = i + 1 Next Value Sheets("Sheet1").Range(Cells(1, "B"), Cells(JSON("chargebackdept table").Count, "D")) = Values Sheets("Sheet1").Range("B1").Insert Shift:=xlDown Sheets("Sheet1").Range("C1").Insert Shift:=xlDown Sheets("Sheet1").Range("D1").Insert Shift:=xlDown Set Header = Sheets("Sheet1").Range("B1") Header.Value = "ChargeBack_Category" Set Header = Sheets("Sheet1").Range("C1") Header.Value = "ChargeBack_ID" Set Header = Sheets("Sheet1").Range("D1") Header.Value = "ChargeBack_Name" MsgBox ("Done loading chargeback table") End Sub 

我的问题是线路;

 Sheets("Sheet1").Range(Cells(1, "B"), Cells(JSON("chargebackdept table").Count, "D")) = Values 

如果我将其更改为下面的其他表格,则会出错;

 Sheets("Sheet2").Range(Cells(1, "B"), Cells(JSON("chargebackdept table").Count, "D")) = Values 

限定定义范围的单元格的父级工作表。

 with workSheets("Sheet1") .Range(.Cells(1, "B"), .Cells(JSON("chargebackdept table").Count, "D")) = Values end with 

注意.Cells而不是Cells 。 的. 提供With … End With语句中定义的合格父工作表。 也可以是,

  workSheets("Sheet1").Range(workSheets("Sheet1").Cells(1, "B"), workSheets("Sheet1").Cells(JSON("chargebackdept table").Count, "D")) = Values 

通常,“单击button的代码”位于私有工作表代码表上,而不是公共模块代码表。 在私人工作表代码表中,所有不合格的范围和单元格引用默认为代码表所属的工作表。 您不能使用默认工作表中的单元格在另一个工作表(例如工作表2)上定义一个范围。