簡體   English   中英

Excel VBA“對象_worksheet的方法范圍失敗

[英]Excel VBA "Method Range of object _worksheet failed

我正在嘗試進行一些VBA編程,但遇到了一種奇怪的情況。 下面的代碼在一個excel文件中運行良好,但在另一個文件中卻無法正常運行,標題錯誤出現在我分配SearchRange變量的行中。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$3" Then
        Dim rngX As Range
        Dim counter As Integer
        Dim wsLeit As Excel.Worksheet
        Dim wsFilt As Excel.Worksheet
        Dim searchValue As String
        Dim searchRange As Range
        Dim rownr As String
        Set wsLeit = Excel.ThisWorkbook.Sheets("Leit")
        Set wsFilt = Excel.ThisWorkbook.Sheets("FILT")
        Set searchRange = wsFilt.Range("A4:ZZ10000")
        searchValue = wsLeit.Range("B3").Value
        Set rngX = searchRange.Find(what:=searchValue, lookat:=xlPart)
        wsLeit.Range("A6:B200").ClearContents
        If Not rngX Is Nothing Then
            strFirstAddress = rngX.Address
            counter = 8
            rownr = Split(rngX.Address, "$")(2)
            For Each c In wsFilt.Range("A" & rownr & ":" & "ZZ" & rownr)
                If Not IsEmpty(c.Value) Then
                    wsLeit.Range("A" & CStr(counter)).Value = c.Value
                    foundColumn = Split(c.Address, "$")(1)
                    wsLeit.Range("B" & CStr(counter)).Value = wsFilt.Range(foundColumn & "1").Value & " " & wsFilt.Range(foundColumn & "2").Value
                    counter = counter + 1
                End If
            Next
        Else
            MsgBox "Fann ekkert"
        End If
    End If
End Sub

知道為什么此代碼在一個工作簿中有效而在另一個工作簿中無效嗎? (兩本書中的工作表名稱相同)

EDIT1:

為了完整起見,這里是完整的錯誤:

Runtime Error '1004':

Method 'Range' of object '_Worksheet' failed

問題在於Excel 2007以前的版本中的列數較少 ,並且當文件格式更改時,這有時會造成隨機故障。

一些Excel 2003規格:

Worksheet size 65,536 rows by 256 columns Column width 255 characters Row height 409 points Page breaks 1000 horizontal and vertical

Excel 2010:

Worksheet size 1,048,576 rows by 16,384 columns Column width 255 characters Row height 409 points Page breaks 1,026 horizontal and vertical Total number of characters that a cell can contain 32,767 characters

防范此問題的一個好習慣是在Workbook_Open事件中添加一個“ guard”子例程,該例程檢查(使用Application.Version )當前的excel版本是否為該文件的最低版本。 您可以將最低的excel版本存儲在Workbook.Names集合中作為常量,並對照該常量進行檢查。

我希望這有幫助!

暫無
暫無

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

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