Excel VBA - Rückgabe einer Liste von Werten, die nicht in einer Spalte enthalten sind

594
art.POMEGRANATE

Ich möchte, dass Excel VBA in einer Messagebox-Eingabeaufforderung alle Elemente zurückgibt, die sich in Spalte A des Arbeitsblatts Mastersheet befinden, aber nicht in Spalte A des Arbeitsblatts DeliverySheet .

Ich hatte eine Menge Probleme damit, dieses herauszufinden, hier ist was ich bisher bekommen habe:

Private Sub CommandButton5_Click()  Dim DeliveryName As Range Dim MasterName As Range Dim MasterSheet As Worksheet Dim DeliverySheet As Worksheet Dim valueToFind  Set MasterSheet = Sheets("Delivery Master List Drop") Set DeliveryName = Sheets("For Delivery").Range(Sheets("For Delivery").Cells("A:A")) Set MasterName = Sheets("Delivery Master List Drop").Range(Sheets("Delivery Master List Drop").Cells("A:A"))  For i = 3 To 3000 valueToFind = DeliveryName("i,1")  For Each MasterName In MasterSheet If Not MasterName.Cells = valueToFind Then MsgBox "The following name is not found in the Delivery Master List" & DeliveryName(i, 1).Value, vbExclamation End If Next MasterName Next i End Sub 

Ich möchte vorzugsweise, dass die Messagebox alle Elemente zurückgibt, die nicht gefunden wurden (was auch nicht zufällig Werte von ("")) sind, die in einer Liste angezeigt werden, die nach Abschluss des Makros angezeigt wird. Im Moment versuche ich nur, einen Wert zurückzugeben.

-1
Ich bin mir auch nach den Änderungen nicht sicher, was Sie versuchen. Wo ist die frage? Dies ist eine Q & A-Site, und obwohl ich weiß, dass Sie ein Problem haben, sehe ich keine Frage. YetAnotherRandomUser vor 5 Jahren 1
Dies wäre mit einer Helferkolonne viel einfacher. Sie fügen eine Formel in ein Blatt ein, das ungefähr wie = = IF (A1 = 'For Delivery'! A1,0,1) 'aussagt. Dann können Sie sich diese Spalte nur für 1 ansehen und ausgeben, was Sie für diese Zeile benötigen. Sie können die Spalte sogar ausblenden, sodass Benutzer Ihre Prüfung nicht sehen können. HackSlash vor 5 Jahren 0

1 Antwort auf die Frage

0
Michal Rosa
Sub SearchForDeliveryItems()  Dim wksMaster As Worksheet, wksSearch As Worksheet Dim rngMaster As Range, rngSearch As Range  Set wksMaster = Sheets("Delivery Master List Drop") Set wksSearch = Sheets("For Delivery")  With wksMaster Set rngMaster = .Range("A1:A" & .Range("A1").SpecialCells(xlCellTypeLastCell).Row) End With  With wksSearch Set rngSearch = .Range("A1:A" & .Range("A1").SpecialCells(xlCellTypeLastCell).Row) End With  With rngMaster For Each cll In rngSearch Set c = .Find(cll.Value2, LookIn:=xlValues) If c Is Nothing Then MsgBox cll.Value2 & " not found in the Delivery Master List." End If Next End With  End Sub 
Das Arbeiten mit Code ist immer großartig, aber hier bevorzugen wir Antworten mit Erklärungen. Schauen Sie sich um und schauen Sie sich die Antworten mit den höchsten Stimmenwerten an - Sie werden sehen, was ich meine. Scott vor 5 Jahren 0