Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
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
Zellen auf Inhalt prüfen
27.07.2016 12:02:19
Pelic

Option Explicit
Dim strDatei As String
Dim istDa As Boolean
Dim Zeilenzahl As Integer
Dim intZeile As Integer
Dim a As Integer
Dim b As Integer
Dim wks As Worksheet
Dim arr
Dim zielmappe As String
Dim quellmappe As String
Dim ZM As Workbook
Dim zelle As Variant

Public Sub Start()
Call öffnen
End Sub

Public Sub öffnen()
zielmappe = ActiveWorkbook.Name
Set ZM = ThisWorkbook
b = 3
zelle = Cells(b, 6)
strDatei = Application.GetOpenFilename()
Workbooks.Open strDatei
quellmappe = ActiveWorkbook.Name
Windows(quellmappe).Activate
Cells.Select
Selection.Copy
Windows(zielmappe).Activate
Cells.Select
ActiveSheet.Paste
Application.DisplayAlerts = False
Windows(quellmappe).Close
Application.DisplayAlerts = True
ActiveSheet.Name = Left((Range("B3")), 5) & "_" & Right((Range("B3")), 4)
Call sortieren
End Sub

Public Sub sortieren()
strDatei = Application.GetOpenFilename()
Workbooks.Open strDatei
quellmappe = ActiveWorkbook.Name
intZeile = 29
Zeilenzahl = Range("D29", Range("D29").End(xlDown)).Rows.Count
arr = Array()
For a = 0 To Zeilenzahl - 1
ReDim Preserve arr(a)
arr(a) = Cells(intZeile, 3).Value & "_" & Cells(intZeile, 4).Value
intZeile = intZeile + 1
Next a
With ZM
Application.DisplayAlerts = False
For Each zelle In .Worksheets
For a = LBound(arr) To UBound(arr)
If zelle.Name = arr(a) Then istDa = True
Next a
If Not istDa Then zelle.Delete
istDa = False
Next zelle
End With
End Sub

Hi Leute.
Mein Ziel ist mit diesem Code aus der Mappe wo sich das Makro befindet eine Datei zu öffnen. Daraus den Inhalt kopiere und in meine Ausgangsmappe einfüge. Das klappt auch wunderbar.
Nun möchte ich eine weitere Datei öffnen, was auch klappt, bestimmte Werte in ein Array einlesen lassen und dann wieder in meiner Ausgangsmappe die Zellen ab F3 abwärts mit dem Inhalt der Arrays vergleichen. Sollten die Namen nicht im Array vorhanden sein soll die gesamte Zeile gelöscht werden.
Ich steh grad echt aufm Schlauch und komme nicht weiter.
Hoffe einer von euch kann mir helfen.

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schon mal was von Feedback gehört?
27.07.2016 12:17:59
Feedback
Hallo,
bevor die neue Einträge eröffnest, solltest du deine offenen beantworten.
Gruß Werner
AW: Schon mal was von Feedback gehört?
27.07.2016 12:28:54
Feedback
Hallo Werner,
Ja ist natürlich selbstverständlich aber ich hatte bereits kurz nach ´dem Eintrag der letzten Frage die Antwort selber gefunden und dann völlig vergessen nochmal bescheid zu sagen da es für mich halt abgehackt war. Tut mir Leid trotzdem nochmal Danke an die die sich die Mühe gemacht haben eine Antwort zu finden :)
AW: Zellen auf Inhalt prüfen
27.07.2016 12:35:29
baschti007
Du solltest mal eine Test Datei hochladen mit den beiden Quelldateien damit man weiß wie die Struktur ist.
Gruß Basti
AW: Zellen auf Inhalt prüfen
27.07.2016 12:45:14
Pelic
Das ist mir von hier leider nicht möglich aber ich kann versuchen zu erklären ^^.
Also die Ausgangsdatei in der sich das Makro befindet ist absolut leer und mit Standard Einstellungen.
Dann öffne ich eine Excel Datei aus der eine Art Tabelle mit verschiedenen Daten kopiert und in meine leere Ausgangsdatei kopiert wird. Darunter befinden sich auch Seriennummern um die es mir später geht.
Dann schließt sich die vorher geöffnete Mappe.
Dann kann ich eine zweite Excel Datei öffnen. Aus dieser möchte ich nun bestimmte Seriennummern auslesen. Diese befinden in C und D29 abwärts. Zwei spalten, da die Seriennummer zweiteilig ist und mit einem "_" getrennt wird. Als Beispiel: Nummer1_Nummer2.
Beide Teile möchte ich in jeweils einem Array speichern. Ebenfalls die folgenden in C&D30, C&D31 usw. bis zu einer leeren Zeile. Bis dahin war ich der Meinung funktioniert eigentlich alles, falls nicht verbessert mich gerne.
Nun soll in meiner Ausgangsdatei die Seriennummern verglichen werden. Und zwar soll in Zelle F3 begonnen werden und geguckt ob sich diese Nummer in dem Array befindet, falls ja soll die nächste Zelle geprüft werden, falls nein soll die gesamte Zeile gelöscht werden und die nächste Zelle geprüft werden. Die Nummer verlaufen von oben nach unten als F3, F4, F5 usw..
Am Ende sollen nur noch die da stehen, welche auch in der Datei standen, aus der ich das Array gebildet habe.
Ich hoffe man versteht es.
Anzeige
AW: Zellen auf Inhalt prüfen
27.07.2016 14:06:30
baschti007
Ok wie es aussieht hast du es geschafft =D aber du Solltest Activate weglassen und select ;)
Hier schnell deins etwas abgeändert mit Dictionary aber das Activate ist noch da.
Public Sub sortieren()
strDatei = Application.GetOpenFilename()
Workbooks.Open strDatei
quellmappe = ActiveWorkbook.Name
intZeile = 29
Zeilenzahl = Range(Range("D29"), Range("D29").End(xlDown)).Rows.count
Dim DelDict As Object
Set DelDict = CreateObject("Scripting.Dictionary")
For a = 0 To Zeilenzahl - 1
If Not DelDict.exists(CStr(Cells(intZeile, 3).Value & "_" & Cells(intZeile, 4).Value))  _
Then
DelDict.Add CStr(Cells(intZeile, 3).Value & "_" & Cells(intZeile, 4).Value), 0
Debug.Print CStr(Cells(intZeile, 3).Value & "_" & Cells(intZeile, 4).Value), 0
End If
intZeile = intZeile + 1
Next a
Windows(quellmappe).Close
ZM.Activate
Dim zell As Range
Dim i As Long
Dim x As Long
Dim start As Long
Dim counti As Long
start = 29
With ZM
counti = .Worksheets.Application.Range(Range("D29"), Range("D29").End(xlDown)).Rows.count - 1
'Application.DisplayAlerts = False
For i = 0 To counti
If Not DelDict.exists(Cells(start + i + x, 4).Value) Then MsgBox Cells(start +  _
i + x, 4).Value & " Befindet sich nicht im Array Zeile " & Cells(start + i, 4 + x).Row & " wird gelöscht": Rows(start + i).Delete: x = x - 1
Next
End With
End Sub

Anzeige
AW: Zellen auf Inhalt prüfen
27.07.2016 15:17:06
Pelic
Danke für deine Antwort und ich muss mich leider korrigieren. Nachdem das Programm so funktioniert hat wie es sollte, habe ich gespeichert es nochmal ausgeführt und plötzlich löscht das Programm alles bis auf die letzten zwei Zeilen der Tabelle. Ich kann mir das auch nicht erklären warum.
Ich habe dann mal deinen Code jetzt probiert und der scheint die menge der Daten nicht verarbeiten zu können, denn nach 2 min. hängt sich mein Excel auf.
Hast du noch eine anderen Möglichkeit.
Ich meine mit den For Schleifen habe ich das gleich schon einmal gemacht nur da habe ich die Tabellennamen überprüft aber für Zellen untereinander will es mir einfach nicht gelingen.
Anzeige
AW: Zellen auf Inhalt prüfen
27.07.2016 15:19:44
Pelic

Public Sub sortieren()
strDatei = Application.GetOpenFilename()
Workbooks.Open strDatei
quellmappe = ActiveWorkbook.Name
intZeile = 29
Zeilenzahl = Range("D29", Range("D29").End(xlDown)).Rows.Count
arr = Array()
For a = 0 To Zeilenzahl - 1
ReDim Preserve arr(a)
arr(a) = Cells(intZeile, 3).Value & "_" & Cells(intZeile, 4).Value
intZeile = intZeile + 1
Next a
Application.DisplayAlerts = False
Windows(quellmappe).Close savechanges:=False
Application.DisplayAlerts = True
zielmappe = ActiveWorkbook.Name
Windows(zielmappe).Activate
With ZM
Application.DisplayAlerts = False
For zelle = 3 To Sheets(1).Cells(Sheets(1).Rows.Count, 6).End(xlUp).Row
For a = LBound(arr) To UBound(arr)
If ActiveCell.Value = arr(a) Then istDa = True
Next a
If Not istDa Then ActiveCell.EntireRow.Delete
istDa = False
Next zelle
End With
Call speichern
End Sub
hier nochmal der aktuelle Code der auch einmal merkwürdigerweise funktioniert hat
Anzeige
AW: Zellen auf Inhalt prüfen
27.07.2016 15:49:08
baschti007
So geht das auch nicht .

Dim x as long
Dim zell as long
With ZM
Application.DisplayAlerts = False
For zell = 3 To Sheets(1).Cells(Sheets(1).Rows.Count, 6).End(xlUp).Row
For a = LBound(arr) To UBound(arr)
If cells(zell-x,4).Value = arr(a) Then istDa = True
Next a
If Not istDa Then rows(zell-x).delete :x=x+1
istDa = False
Next zell
End With
Hab ich nicht getestet musst du mal gucken
Gruß Basti
AW: Zellen auf Inhalt prüfen
27.07.2016 15:56:48
Pelic
Also jetzt löscht es einfach jede Zeile ^^
AW: Zellen auf Inhalt prüfen
27.07.2016 16:15:08
Pelic
Habe den fehler gefunden. Deine Code funktioniert sehr wohl einwandfrei. Recht herzlichen Dank :).
Anzeige
AW: Zellen auf Inhalt prüfen
27.07.2016 16:33:53
Bastian
Und was war der fehler ?
Bestimmt = False vergessen =D
AW: Zellen auf Inhalt prüfen
28.07.2016 08:52:02
Pelic
Einfach eine einen falschen Spaltindex angegeben, dann ist ja klar das alles gelöscht wird ^^
AW: Zellen auf Inhalt prüfen
27.07.2016 13:42:15
Pelic
Habe eine Lösung gefunden ^^.
jetzt ist aber eine neue Frage für mich entstanden :P.
AW: Zellen auf Inhalt prüfen
27.07.2016 13:44:32
Pelic
Danke an alle
Danke heißt wohl Frage zu, nehme ich an! owT
27.07.2016 13:55:09
Michael
AW: Danke heißt wohl Frage zu, nehme ich an! owT
27.07.2016 15:17:38
Pelic
korrigiere mich ist doch noch nicht gelöst. Verzeihung
Offen! Bitte den Haken richtig setzen! owT
27.07.2016 15:22:16
Michael
--> nämlich so! owT
27.07.2016 15:22:52
Michael

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige