将转换的json字符串粘贴到其他工作表时发生VBA运行时错误1004

将转换的json字符串粘贴到其他工作表时发生VBA运行时错误1004,json,vba,excel,Json,Vba,Excel,我有一个来自web服务调用的转换json字符串响应文本。如果我将代码粘贴到调用web服务的按钮所在的同一张纸上,代码就会工作。但如果我尝试将结果放在另一张纸上,我会得到“错误1004应用程序定义或对象定义错误” excel上单击按钮的代码如下: Private Sub webcall_Click() Dim MyRequest As Object Dim JSON As Dictionary Dim Header As Range Dim Env As Strin

我有一个来自web服务调用的转换json字符串响应文本。如果我将代码粘贴到调用web服务的按钮所在的同一张纸上,代码就会工作。但如果我尝试将结果放在另一张纸上,我会得到“错误1004应用程序定义或对象定义错误”

excel上单击按钮的代码如下:

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
提供了在中定义的符合条件的父工作表,其中包含。。。以陈述结束。也可能是,

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

通常,“单击按钮代码”位于专用工作表代码表上,而不是公共模块代码表上。在专用工作表代码表中,所有非限定范围和单元格引用默认为代码表所属的工作表。不能使用默认工作表中的单元格在另一个工作表(如sheet2)上定义范围。

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

with workSheets("Sheet1")
    .Range(.Cells(1, "B"), .Cells(JSON("chargebackdept table").Count, "D")) = Values
end with
注意
.Cells
而不是
Cells
提供了在中定义的符合条件的父工作表,其中包含。。。以陈述结束。也可能是,

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

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

related:.related:.我可以更改activeworksheet来定义范围吗?我不确定上述问题是否能解决将转换后的json结果集粘贴到另一个工作表的问题。感谢您的关注。您应该知道工作表的目的地是什么。与…一起使用。。。End With允许您将任何工作表设置为目标,而不会受到惩罚。第二次查看时,您终于了解了您的解决方案。现在开始工作了。非常感谢,我谦恭地建议您抽出时间来阅读我在上面的评论中留下的内容。如果你成功了,你就再也不会有这个问题了。这确实是一本很好的读物。谢谢您的参考。我可以更改activeworksheet来定义范围吗?我不确定上述问题是否能解决将转换后的json结果集粘贴到另一个工作表的问题。感谢您的关注。您应该知道工作表的目的地是什么。与…一起使用。。。End With允许您将任何工作表设置为目标,而不会受到惩罚。第二次查看时,您终于了解了您的解决方案。现在开始工作了。非常感谢,我谦恭地建议您抽出时间来阅读我在上面的评论中留下的内容。如果你成功了,你就再也不会有这个问题了。这确实是一本很好的读物。谢谢你的推荐。