我有来自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
答案 0 :(得分:2)
限定定义范围的单元格的父工作表。
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
通常,“点击按钮的代码”位于私人工作表代码表上,而不是公共模块代码表。在私有工作表代码表中,所有非限定范围和单元格引用都默认为代码表所属的工作表。您无法使用默认工作表中的单元格在另一个工作表(例如sheet2)上定义范围。