Excel VBA - Zwracanie listy wartości nie znalezionych w jednej kolumnie

-1

Chcę, aby Excel VBA zwrócił w oknie komunikatu wszystkie elementy, które znajdują się w kolumnie A arkusza roboczego arkusza roboczego, ale nie znajdują się w kolumnie A arkusza dostawy Arkusz dostawy .

Mam problem z rozgryzieniem tego, oto co do tej pory mam:

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

Wolałbym, aby okno komunikatu zwróciło wszystkie elementy, które nie zostały znalezione (które również nie są wartościami („”)) na liście, która wyświetla się po zakończeniu makra. W tej chwili staram się, aby nawet zwróciła jedną wartość.

art.POMEGRANAT
źródło
1
Nawet po wprowadzeniu zmian nie jestem pewien, co próbujesz zrobić. Gdzie jest pytanie To jest strona z pytaniami i odpowiedziami, a chociaż mam wrażenie, że masz problem, nie widzę pytania.
YetAnotherRandomUser
Byłoby to o wiele łatwiejsze dzięki kolumnie pomocniczej. Umieszczasz formułę w jednym z arkuszy, który mówi coś takiego =IF(A1='For Delivery'!A1,0,1), możesz po prostu spojrzeć na tę kolumnę na 1 i wypisać wszystko, czego potrzebujesz dla tego wiersza. Możesz nawet ukryć kolumnę, aby użytkownicy nie widzieli Twojego czeku.
HackSlash

Odpowiedzi:

0
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
Michał Rosa
źródło
Działający kod jest zawsze świetny, ale tutaj preferujemy odpowiedzi zawierające wyjaśnienia. Rozejrzyj się i spójrz na odpowiedzi z najwyższą liczbą głosów - zobaczysz, co mam na myśli.
Scott,