返回列表 上一主題 發帖

(發問)WEB查詢,如何取消跳出的警告視窗

本帖最後由 blue2263 於 2014-2-22 09:42 編輯

請教G大我的也有相同問題?可否幫我看一下,也會出現,web查詢沒有傳回資料訊息
程式碼停止,出現訊息的代號在A1499(儲存格),我測試發現一個奇怪的現象.如果把下列程式碼位置,設在A1456會出現錯誤訊息
把位置設在A1497,狀態就正常,錯誤訊息就不會跳出
請教不知有何方法,可解決這問題? A.rar (81.8 KB)

程式碼同下.........
Sub 資料下載整合()
    '資料網路下載->匯總Sheets
    Dim Rng As Range, Ar(1 To 3)
    Set Rng = Sheets("代碼").[a1456] '代碼起始位置在a2
    Do While Rng <> ""   '無代碼 中斷

        With Sheets("原始表")
             .Range("a6") = Rng
             On Error GoTo 101 '   'web 查無 到下一個代碼
             .Range("az7").QueryTable.Refresh BackgroundQuery:=False
            With .Range("BB12:BB27")
                    Ar(1) = Application.Transpose(.Cells)         '人數
                    Ar(2) = Application.Transpose(.Offset(, 1))   '股數
                    Ar(3) = Application.Transpose(.Offset(, 2))   '佔集保庫存數比例 (%)
            End With
        End With
        With Sheets("匯總").Range("A1").End(xlDown).Offset(1) '選擇工作表,到最底行
             .Cells(1) = Rng
             .Cells(1, 2) = Rng.Offset(, 1)
             .Cells(1, "C").Resize(, UBound(Ar(1))) = Ar(1)
             .Cells(1, "S").Resize(, UBound(Ar(1))) = Ar(2)
             .Cells(1, "AI").Resize(, UBound(Ar(1))) = Ar(3)
             .Cells(1, "AX") = ""
            '.Range("A1:aw1").Value = Sheets("原始表").Range("A6:aw6").Value

         End With
101
         Set Rng = Rng.Offset(1)   '下一個代碼
    Loop
End Sub

C股權分散.rar (81.8 KB)

TOP

本帖最後由 blue2263 於 2014-2-24 23:47 編輯

謝謝j大解答
我將程式碼改為,On Error Resume Next
然後加一IF判斷,判斷資料無更改,就跳開,測試
看起來是沒問題,錯誤訊息不會跑出,且跳出,
我是新手,不知我這樣改,會不會有什麼問題?
還請指教謝謝!!

程式碼如下

Sub 資料下載整合()
    '資料網路下載->匯總Sheets
       Dim Rng As Range, Ar(1 To 3)
       Dim err
    Set Rng = Sheets("代碼").[a2] '代碼起始位置在a2
    Do While Rng <> ""   '無代碼 中斷
       Dim myErrNum As Long

        With Sheets("原始表")
             .Range("a6") = Rng
             On Error Resume Next   '發生錯誤陳述式之後的陳述式繼續執行
             err = Sheets("原始表").Range("az7")
             .Range("az7").QueryTable.Refresh BackgroundQuery:=False
             On Error GoTo 0    '停止error resume
            If err = Sheets("原始表").Range("az7") Then GoTo 103
            With .Range("BB12:BB27")
                    Ar(1) = Application.Transpose(.Cells)         '人數
                    Ar(2) = Application.Transpose(.Offset(, 1))   '股數
                    Ar(3) = Application.Transpose(.Offset(, 2))   '佔集保庫存數比例 (%)
            End With
        End With
        With Sheets("匯總").Range("A1").End(xlDown).Offset(1) '選擇工作表,到最底行
             .Cells(1) = Rng
             .Cells(1, 2) = Rng.Offset(, 1)
             .Cells(1, "C").Resize(, UBound(Ar(1))) = Ar(1)
             .Cells(1, "S").Resize(, UBound(Ar(1))) = Ar(2)
             .Cells(1, "AI").Resize(, UBound(Ar(1))) = Ar(3)
             .Cells(1, "AX") = ""
            '.Range("A1:aw1").Value = Sheets("原始表").Range("A6:aw6").Value
         End With
103
         Set Rng = Rng.Offset(1)   '下一個代碼
         
    Loop
End Sub

TOP

感謝g大解答
原來連續的refresh失敗無法處理,難怪上次更改代碼開始位置,會一下正常,一下不正常

TOP

        靜思自在 : 做該做的事是智慧,做不該做的事是愚癡。
返回列表 上一主題