【问题标题】:Upload workbook to main macro and compare sheets for duplicate将工作簿上传到主宏并比较工作表是否重复
【发布时间】:2017-03-03 13:10:19
【问题描述】:

我正在创建一个带有验证按钮的宏。这意味着,我将上传一个现有的工作簿(与主宏相同的工作表)。如果有任何重复,我需要比较 wb1 和 wb2 表,并最终突出显示主宏表上的重复项。到目前为止,这就是我现在所拥有的,但它不允许我使用 Set WorkRng1 = Wb1.Sharepoint.Range("A" & Sharepoint.Rows.Count).End(xlUp).row 部分。下面是我的代码:

Sub UploadandCompareSheets()

Dim Wb1 As Workbook
Dim wb2 As Workbook
Dim MainPage As Worksheet
Set MainPage = Sheets("Main")
Dim tbl As ListObject
Dim ws1 As Worksheet
Dim Sharepoint As Worksheet
Set Sharepoint = Sheets("PRP Sharepoint")



Application.DisplayAlerts = False
Application.ScreenUpdating = False

Set Wb1 = ActiveWorkbook

FileToOpen = Application.GetOpenFilename _
(Title:="Please choose a File", _
filefilter:="Excel File *.xlsx (*.xlsx),")

If FileToOpen = False Then
MsgBox "No File Specified.", vbExclamation, "ERROR"

Exit Sub

Else
Set wb2 = Workbooks.Open(Filename:=FileToOpen)

For Each sheet In wb2.Sheets

    If sheet.Visible = True Then

      Dim WorkRng1 As Range, WorkRng2 As Range, Rng1 As Range, Rng2 As Range

 Set WorkRng1 = Wb1.Sharepoint.Range("A" & Sharepoint.Rows.Count).End(xlUp).row
 Set WorkRng2 = wb2.Sharepoint.Range("A" & Sharepoint.Rows.Count).End(xlUp).row
 For Each Rng1 In WorkRng1
rng1Value = Rng1.value
For Each Rng2 In WorkRng2
    If rng1Value = Rng2.value Then
        Rng1.Interior.Color = VBA.RGB(255, 0, 0)
        Exit For
    End If
Next
Next



    End If

Next sheet

End If
End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您正在设置一个名为 SharePoint 的对象:

    Set Sharepoint = Sheets("PRP Sharepoint")
    

    然后您尝试访问 2 个不同的工作簿:

    Set WorkRng1 = Wb1.Sharepoint.Range("A" & Sharepoint.Rows.Count).End(xlUp).row
    Set WorkRng2 = wb2.Sharepoint.Range("A" & Sharepoint.Rows.Count).End(xlUp).row
    

    您不能这样做,因为 SharePoint 不是工作簿对象的方法。当您最初创建 SharePoint 对象时,它将引用特定的工作表(如果您不指定哪个工作表,则为 ActiveWorkbook 中的工作表)。您要么需要创建 2 个单独的工作表对象(打开工作簿后):

    Set Sharepoint1 = Wb1.Sheets("PRP Sharepoint")
    Set Sharepoint2 = Wb2.Sheets("PRP Sharepoint")
    

    或在声明范围时直接引用工作表名称:

    Set WorkRng1 = Wb1.Sheets("PRP Sharepoint").Range("A" & Sharepoint.Rows.Count).End(xlUp).row
    Set WorkRng2 = wb2.Sheets("PRP Sharepoint").Range("A" & Sharepoint.Rows.Count).End(xlUp).row
    

    【讨论】:

    • 我尝试了上面的以下建议,但它给了我错误: Object required for the following: Set WorkRng1 = Wb1.Sheets("PRP Sharepoint").Range("A" & Sharepoint.Rows.Count ).End(xlUp).row Set WorkRng2 = wb2.Sheets("PRP Sharepoint").Range("A" & Sharepoint.Rows.Count).End(xlUp).row
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    相关资源
    最近更新 更多