Excel VBA“;对象的方法范围\u工作表失败

Excel VBA“;对象的方法范围\u工作表失败,vba,excel,Vba,Excel,我试图做一些VBA编程,但遇到了一个奇怪的情况。下面的代码在一个excel文件中运行正常,但在另一个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 w

我试图做一些VBA编程,但遇到了一个奇怪的情况。下面的代码在一个excel文件中运行正常,但在另一个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
知道为什么这段代码在一个工作簿中有效,而在另一个工作簿中无效吗?(两本书中的纸张名称相同)

编辑1:

为完整起见,以下是全部错误:

Runtime Error '1004':

Method 'Range' of object '_Worksheet' failed

问题是Excel 2007之前的版本有一个错误,当文件格式更改时,这有时会造成随机故障

一些Excel 2003规范:

工作表大小65536行乘256列
列宽255个字符
行高409点
水平和垂直分页符1000

Excel 2010:

工作表大小1048576行乘以16384列
列宽255个字符
行高409点
水平和垂直分页符1026
单元格可包含32767个字符的总字符数

防止此问题的一个良好做法是在
工作簿_Open
事件中添加一个“guard”子例程,用于检查(使用
Application.Version
)当前excel版本是否是文件的最低版本。您可以将最低excel版本存储在
工作簿中。将
集合命名为常量,并对照该常量进行检查


我希望这有帮助

随机射击:两个文件都保存为.xlsx吗?如果第二个是.xls,它可能没有列了..啊,就是这样,谢谢loannis,如果你把它作为一个答案键入,我会标记这个问题完成。这个代码失败的工作簿是用excel 97-03创建的还是保存为2007年以前的格式?好吧,那真是愚蠢的运气:P我很惭愧把它作为一个答案发布,所以我在下面做了进一步的阐述..ZZ列是第702列,Excel2003只增加到256列。。我相信这就是问题所在。