Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Löschen mit berücksichtigung einer zweiten Datei

Löschen mit berücksichtigung einer zweiten Datei
06.07.2016 17:30:00
Constantin
Hallo liebe Helfer,
ich bin mehr so der Stille Leser und hab hier schon einige Hilfereiche Makros oder Problemlösungen gefunden aber hier scheitter ich wahrscheinlich schon an meiner Problemstellen formulierung um eine passende Lösung zu finden deswegen dacht ich mir ich versuch mal ein Post um hilfe zu bekommen.
Mein Problem.
Ich möchte gerne das es mir aus der "beispiel_excel.xml" alle zeilen löscht die in Spalte E "value" ein No stehen haben.
Auser wenn in der Datei "Iteamnumber" Spalte B "Item name" mit der Spalte A aus "beispiel_excel.xml" übereinstimmt dann darf sie nicht gelöscht werden.
Der Dateiname und Speicherort ist immer der selbe.
Soweit bin ich mit einen aufgenommen Macro gekommen :)
ActiveSheet.ListObjects("Tabel1").Range.AutoFilter Field:=83, Criteria1:= _
"No"
Rows("2:2").Select
ActiveWindow.SmallScroll Down:=-3
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.ListObjects("Tabel1").Range.AutoFilter Field:=83
Range("BW7").Select
Rows("2:2").Select

Vielen Dank für eure hilfe
https://www.herber.de/bbs/user/106820.xlsx
https://www.herber.de/bbs/user/106821.xlsx

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Löschen mit berücksichtigung einer zweiten Datei
06.07.2016 20:26:12
Nepumuk
Hallo,
teste mal:
Option Explicit

Public Sub Delete_NO()
    Dim objWorkbook As Workbook, objWorksheet As Worksheet
    Dim objCell As Range
    Dim lngRow As Long
    Dim blnFound As Boolean
    For Each objWorkbook In Workbooks
        If objWorkbook.Name = "Itemnumber.xlsx" Then
            blnFound = True
            Exit For
        End If
    Next
    If Not blnFound Then
        Call MsgBox("Arbeitsmappe ''Itemnumber'' ist nicht geöffnet.", vbExclamation, "Hinweis")
    Else
        Application.ScreenUpdating = False
        Set objWorksheet = objWorkbook.Worksheets("Quiltlines (2ND)")
        With Worksheets("Inventory table (2ND)")
            For lngRow = .Cells(.Rows.Count, 5).End(xlUp).Row To 2 Step -1
                If .Cells(lngRow, 5).Value = "No" Then
                    Set objCell = objWorksheet.Columns(2).Find( _
                        What:=.Cells(lngRow, 1).Value, LookIn:=xlValues, LookAt:=xlWhole)
                    If objCell Is Nothing Then
                        Call .Rows(lngRow).Delete
                        Set objCell = Nothing
                    End If
                End If
            Next
        End With
        Set objWorkbook = Nothing
        Set objWorksheet = Nothing
        Application.ScreenUpdating = True
    End If
End Sub


Gruß
Nepumuk

Anzeige
AW: Löschen mit berücksichtigung einer zweiten Datei
06.07.2016 22:24:26
Constantin
Super gut !
funktioniert!
(War nur ein kleiner fehler im Datennamen aber das war meine schuld)
Vielen vielen Dank
wäre es vielleicht möglich das es mir die Itemnumber.xlsx davor automatisch öffnet und danach wieder schließt ?
und willst du das ganze vielleicht kommentieren wenn es nicht zuviel arbeit ist damit ich was lernen kann :D
Vielen Dank nochmal

Löschen mit berücksichtigung einer zweiten Datei
07.07.2016 10:48:59
Nepumuk
Hallo,
das öffnen der Datei ist kein Problem, nur müsste ich wissen in welchem Ordner sie sich befindet.
Gruß
Nepumuk

AW: Löschen mit berücksichtigung einer zweiten Datei
07.07.2016 15:16:43
Constantin
Hi Nepumuk,
beide Dateien befinden sich in
C:\export\
Vielen Dank

Anzeige
Löschen mit berücksichtigung einer zweiten Datei
07.07.2016 15:50:47
Nepumuk
Hallo,
dann teste mal:
Option Explicit

Public Sub Delete_NO()
    Dim objWorkbook As Workbook, objWorksheet As Worksheet
    Dim objCell As Range
    Dim lngRow As Long
    Dim blnFound As Boolean
    'Bildeschirmaktualisierung ausschalten
    Application.ScreenUpdating = False
    'Suche nach Mappe Itemnumber
    For Each objWorkbook In Workbooks
        If objWorkbook.Name = "Itemnumber.xlsx" Then
            blnFound = True
            Exit For
        End If
    Next
    'Wenn die Mappe nicht gefunden wurde öffnen
    If Not blnFound Then Set objWorkbook = Workbooks.Open( _
        Filename:=ThisWorkbook.Path & "\Itemnumber.xlsx")
    'Verweis auf die Tabelle setzen
    Set objWorksheet = objWorkbook.Worksheets("Quiltlines (2ND)")
    With ThisWorkbook.Worksheets("Inventory table (2ND)")
        'Schleife über alle Zeilen in Spalte E von unten nach oben
        For lngRow = .Cells(.Rows.Count, 5).End(xlUp).Row To 2 Step -1
            'Wenn in der Zelle eine No steht
            If .Cells(lngRow, 5).Value = "No" Then
                'Suche in Mappe Itemnumber nach der Nummer
                Set objCell = objWorksheet.Columns(2).Find( _
                    What:=.Cells(lngRow, 1).Value, LookIn:=xlValues, LookAt:=xlWhole)
                'Wenn die Nummer nicht gefunden wurde
                If objCell Is Nothing Then
                    'Lösche die Zeile
                    Call .Rows(lngRow).Delete
                    'Objekt zurücksetzen
                    Set objCell = Nothing
                End If
            End If
        Next
    End With
    'Wenn die Mappe Itemnumber automatisch geöffnet wurde diese wieder schließen
    If Not blnFound Then Call objWorkbook.Close(SaveChanges:=False)
    'Objkete zurücksetzen
    Set objWorkbook = Nothing
    Set objWorksheet = Nothing
    'Bildeschirmaktualisierung einschalten
    Application.ScreenUpdating = True
End Sub


Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige