为什么在ist over workbook边界上使用ist时我的代码不起作用,而在同一Workbook中使用它时为什么我的代码不起作用?

时间:2019-04-04 11:08:52

标签: excel vba

我有一本带有两个工作表的工作簿。

第一页包含电子邮件地址列表。 第二页包含一个电子邮件地址列表,其中一些与第一页中的电子邮件地址匹配,而有些可能不匹配

我添加了一个按钮和一些代码(请参见下文)。当我按下按钮时,excel会在sheet2中查找并将其与sheet1中的电子邮件地址进行比较...如果发现相等的电子邮件地址,则会将找到的电子邮件地址和“允许”状态添加到sheet1中现有地址的后面。 >

这很好:

    Private Sub CommandButton1_Click()
    Call lookup
    End Sub


    Sub lookup()
    Dim TotalRows As Long
    Dim rng As Range
    Dim i As Long

    'Copy lookup values from sheet1 to sheet3

    Sheets("Tabelle1").Select
    TotalRows = ActiveSheet.UsedRange.Rows.Count

    For i = 1 To TotalRows
    'Search for the value on sheet2
    Set rng = Sheets("Tabelle2").UsedRange.Find(Cells(i, 1).Value)
    'If it is found put its value on the destination sheet
    If Not rng Is Nothing Then
        Cells(i, 2).Value = rng.Value
        Cells(i, 3).Value = "Allowed"
    End If
    Next
    End Sub

但是现在我想将按钮包含在一个“ trigger.xlsm”文件中,并且数据位于两个不同的工作簿中。 ...所以我有一个按钮可将比较数据从workbook2复制到workbook1中的sheet2。...这很好!

但是在工作簿1中比较并写入相同邮件地址的其余代码-sheet1并没有...每一行都充满了“允许”状态。

我尝试使用此代码来获得以上结果:

    Private Sub CommandButton1_Click()

    Workbooks.Open "C:\Users\DEJP0050\Documents\testvon.xlsx"
    Workbooks.Open "C:\Users\DEJP0050\Documents\testnach.xlsm"

    Workbooks("testvon.xlsx").Sheets("Tabelle1").Range("A:A").Copy _
    Workbooks("testnach.xlsm").Sheets("Tabelle2").Range("A:A")



    Workbooks("testvon.xlsx").Close SaveChanges:=True
    Workbooks("testnach.xlsm").Close SaveChanges:=True

    End Sub



    Private Sub CommandButton2_Click()



    Call lookup



    End Sub

    Sub lookup()

    Dim TotalRows As Long
    Dim rng As Range
    Dim i As Long
    Dim wb1 As Excel.Workbook
    Set wb1 = Workbooks.Open("C:\Users\DEJP0050\Documents\testnach.xlsx")
    Dim ws11 As Worksheet
    Set ws11 = wb1.Sheets("Tabelle1")
    Dim ws12 As Worksheet
    Set ws12 = wb1.Sheets("Tabelle2")
    'Copy lookup values from sheet1 to sheet3

    'ws11.Select
    TotalRows = ws11.UsedRange.Rows.Count
    'Range("A1:A" & TotalRows).Copy 
    Destination:=Sheets("Tabelle3").Range("A1")

    'Go to the destination sheet
    'Sheets("Tabelle3").Select

     For i = 1 To TotalRows
    'Search for the value on sheet2
     Set rng = ws12.UsedRange.Find(Cells(i, 1).Value)
    'If it is found put its value on the destination sheet
     If Not rng Is Nothing Then
        ws11.Cells(i, 2).Value = rng.Value
        'Cells(i, 2).Value = "Allowed"
        ws11.Cells(i, 3).Value = "Allowed"
     End If
     Next

     Workbooks("testnach.xlsx").Close SaveChanges:=True

     End Sub

为什么当按钮在同一工作簿中时它起作用,而当按钮在另一个工作簿中时为什么不起作用?

1 个答案:

答案 0 :(得分:0)

也许您需要更改

Sheets("Tabelle1").Select

activeworkbook.Sheets("Tabelle1").Select

AND

TotalRows = ActiveSheet.UsedRange.Rows.Count

TotalRows = activeworkbook.ActiveSheet.UsedRange.Rows.Count

AND

Set rng = Sheets("Tabelle2").UsedRange.Find(Cells(i, 1).Value)

Set rng = activeworkbook.Sheets("Tabelle2").UsedRange.Find(activeworkbook.Sheets("Tabelle2").Cells(i, 1).Value)