首页 > 解决方案 > 在 vba 中找不到方法或数据成员

问题描述

谁能帮帮我。?我收到编译错误。谢谢!

写在一个单独的模块中:

Sub Compare2Worksheets(ws1 As Worksheet, ws2 As Worksheet)
    Dim ws1row As Long, ws2row As Long, ws1col As Integer, ws2col As Integer
    Dim maxrow As Long, maxcol As Integer, colval1 As String, colval2 As String
    Dim report As Workbook, difference As Long
    Dim row As Long, col As Integer
    Set report = Workbooks.Add

    With ws1.UsedRange
        ws1row = Rows.Count
        ws1.col = Columns.Count
    End With

    With ws2.UsedRange
        ws2row = Rows.Count
        ws2col = Columns.Count
    End With

    maxrow = ws1row
    maxcol = ws1column

    If maxrow < ws2row Then maxrow = ws2row
    If maxcol < ws2col Then maxcol = ws2col

    difference = 0
    For col = 1 To maxcol
        For row = 1 To maxrow
            colval1 = ""
            colval2 = ""
            colval1 = ws1.Cells(row, col).Formula
            colval2 = ws2.Cells(row, col).Formula

            If colval1 <> colval2 Then
                difference = difference + 1
                Cells(row, col).Formula = colval1 & "<>" & colval2
                Cells(row, col).Interior.Color = 255
                Cells(row, col).Font.ColorIndex = 2
                Cells(row, col).Font.Bold = True
            End If
        Next row
    Next col
End 

为插入的命令按钮而写

Private Sub CommandButton1_Click()
    Set myWorkbook1 = Workbooks.Open("C:\Users\testsample.xlsm")
    Compare2Worksheets myWorkbook1.Worksheets("Sheet1"), myWorkbook1.Worksheets("Sheet2")
End Sub

请注意,这是我从 VBA 基础教程中获得的代码。

标签: vbaexcel

解决方案


  1. 更改 ws1.col = Columns.Countws1col = Columns.Count摆脱第一个错误。猜测这是变量名的拼写错误,但编译器正在寻找col由于".". 见第 3 点。
  2. 将此更改ws1columnws1col
  3. 放在Option Explicit代码的顶部以检查这些事情,即上面的错误
  4. 请注意,使用诸如Cells(row, col)etc 之类的语法,如果您没有指定正在使用的工作表名称,则默认为Activesheet,这可能是也可能不是您想要的工作表。这可能会导致错误。最好明确指定您正在使用的工作表,然后使用.语法,例如


With Worksheets("Sheet1")
    .Cells(row, col)
End With 
  1. 使用 With 语句时,在 With 内部,当引用父对象时使用“.”。例如 .Rows.Count
  2. 我自动将其更正EndEnd Sub,以为我在复制时犯了错误。刚刚注意到,从评论中,这也应该是 End Sub not EndEnd将终止该计划。

推荐阅读