簡體   English   中英

運行時錯誤9:字幕超出范圍

[英]Runtime Error 9 : Subcript out of range

我正在嘗試編寫VBA代碼來檢查workbook(A).worksheet(a).cells(row1,colum1)= workbook(B).worksheet(b).cells(row2,colum2),然后進行一些復制並進一步檢查。 但是遇到錯誤消息“下標超出范圍”。 有人可以幫我嗎?

以下是代碼:

Sub check()
    Dim row1, row2, row1start, row2start, row1end, row2end
    Dim ws1 As Worksheet
    ws1 = Excel.Workbooks("A.xlsx").Worksheets("sheet1")
    Dim ws2 As Worksheet
    ws2 = Excel.Workbooks("B.xlsx").Worksheets("sheet2")
    row1start = 2
    row1end = 43
    row2start = 3
    row2end = 163
    For row1 = row1start To row1end
        For row2 = row2start To row2end
            If ws2.Cells(row2, "I") = ws1.Cells(row1, "H") Then
                ws1.Cells(row1, "I") = 0    'mark true
                ws1.Cells(row1, "M") = ws2.Cells(row2, "K")     'copy

                If ws1.Cells(row1, "C") = ws2.Cells(row2, "J") Then
                    ws1.Cells(row1, "N") = 0    'mark true
                Else
                    ws1.Cells(row1, "N") = ws2.Cells(row2, "J")     'copy
                End If
                Exit For    'if found, then exit 1st loop
            End If
        Next row2

        If row2 >= row2end Then     'if no match, assign value -1
            ws1.Cells(row1, "I") = -1
        End If

        If row2start < row2end Then     'reduce searching times for next row1
            row2start = row2 + 1
        End If   
    Next row1
End Sub

下標超出范圍意味着它找不到指定的工作簿,工作表或范圍。 檢查,仔細檢查並重新檢查您的姓名。 如果您遇到此錯誤: ws1 = Excel.Workbooks("A.xlsx").Worksheets("sheet1")嘗試隔離工作簿和工作表的分配,以找出產生錯誤的原因。

剛發現和Rory一樣的東西; 您必須對工作簿,工作表或范圍使用SET 或任何物體。

SET ws1 = Excel.Workbooks("A.xlsx").Worksheets("sheet1")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM