Excel VBA - Vergleiche von Werten unterschiedlicher Tabellen

Komisch bei mir lief es ohne Probleme, du hast die Dateien aber schon entpackt oder?

Gehe mal in der VBA-Editor und lasse das Makro mit F8 zeilenweise ausführen. Würd mich mal interessieren in welcher Zeile der Fehler auftritt.
 
Ok, ich kann den Fehler eventuell nachvollziehen und zwar immer dann wenn ein ungültiger Dateiname angegeben wird ! ! ! !

Wenn nicht bereits geschehen beide Dateien entpacken und nicht aus dem Archiv starten, wobei die Dateien im selben Ordner gespeichert werden sollten/müssen.

Dann als Dateiname wirklich "werte.xls" eingeben, nur ohne Anführungszeichen aber mit Dateiendung. Dann sollte es klappen.
 
huch irgendwie ist mein beitrag von gestern weg- naja also nochmal: der fehler tritt leider immer noch auf-

könntest du mir mal ganz genau beschreiben, wie man das makro ausführt? vllt liegt da ja mein fehler.

ansonsten lade ich dir mal tabellenauszüge hoch von den "richtigen" tabellen
tabellen 1 bis drei, davon verändern sich die werte von tab1 und 2, 3 bleibt gleich.
 
Also ein Makro kann von der Bedienung her eigentlich nicht falsch ausgeführt werden. Entwerder es wird gestartet oder eben nicht.

Ich war aber immer im VB-Editor und habe dann die F5-Taste gedrückt oder wenn ich die Zeilen einzeln durchlaufen wollte eben mit F8.

Die einzige Art wie ich bei mir den Fehler bei mir nachstellen konnte, war wenn ich - wie schon oben geschrieben - den Dateinamen falsch angegeben habe.

Da du ja mit 2007 und ich mit 2000 arbeite könnte das schon der Grund sein. Doch an der Stelle wo der Fehler bei dir wohl ausgelöst wird, ist die einzige Anweisung die ausgeführt wird "Workbooks.Open". Das habe ich nachgeschaut, dieser Befehl ist auch in 2007 noch gültig.

Schau mal bitte bei dir im VB-Editor unter Extras -> Optionen -> Editor nach welche Einstellungen du für die Variablendeklaration hast.
Ich habe mal wieder nicht sauber programmiert und deshalb die Variablen vor der ersten Verwendung nicht ausdrücklich deklariert.
Wenn es daran liegt, sollte eigentlich einen anderen Fehler auslösen aber man weiß ja nie.

Erkläre mir mal bitte nochmal ein bisschen genauer welche Tabelle jetzt verändert wird und welche nicht und welche Daten miteinander verglichen werden müssen.
 
also der haken bei "variablendeklaration erforderlich" ist NICHT gesetzt, von daher könnte das eigentlich nicht der fehler sein-

ich versuche das jetzt mal genauer zu erklären ;) also:

- wir bringen einen katalog raus. eine nachbarabteilung schreibt in tabelle 1 zusammen, welcher artikel wo zu finden ist. zusätzlich natürlich noch infos wie sortiment, MKZ (markenkennzeichnung), seit im katalog usw
--> diese tabelle variiert natürlich für jeden katalog den wir rausbringen, wobei die spalten immer gleich bleiben es kann allerdings sein, dass insgesamt mehr zeilen drin sind, da mehr artikel abgebildet werden.

- der anordnung im katalog liegt tabelle 2 zu grunde, dort steht drin, auf welcher seite welches sortiment überhaupt vertreten sein darf. also beispielsweise erste hundert seiten nur klamotten, danach 50 seiten möbel und danach 20 seiten elektronik.
--> diese tabelle variiert also auch entsprechend des kataloges.

- zur weiteren überprüfung gibt es tabelle 3, die sich NICHT verändert. hier ist festgehalten, welches markenkennzeichen (KMZ3 in der tabelle 3) zu welchem sortiment gehört.

da tabelle 1 in unsere datenbank eingespielt und dann weiterverwendet wird, sollte diese datei möglichst fehlerfrei sein, also sowohl fehlerfrei von schreibfehlern als auch von flüchtigkeitsfehlern (in der zeile verrutscht oder so).

jetzt müssen verschiedene werte abgeglichen werden, zB

- sortiment und seite aus tabelle 1 mit sortiment und seite aus tabelle 2,
- sortiment und MKZ aus tabelle 1 mit sortiment und MKZ aus tabelle 3 usw
- bei artikelnr beispielsweise würde ja schon reichen, zu überprüfen, ob 6 zahlen vorhanden sind


leider bin ich ein absoluter "****" in sachen vba und tue mich echt schwer. die ganze sache ist auch nciht so ganz einfach leider :/ aber vielen dank dass du so treu dabei bleibst ;)
 
Also die Gültigkeit der Artikelnummer kannst du z.B. so prüfen:

Visual Basic:
Sub PruefeNummer()
Dim zeilen As Long
Dim a As Long

'letzte Zeile (in Spalte A) der Tabelle 2 ermitteln
zeilen = Tabelle2.Cells(Rows.Count, 1).End(xlUp).Row

For a = 1 To zeilen
'Vergleich eins prüft die Länge, Vergleich zwei wandelt den enthaltenen Text zuerst in
'eine Zahl um (dadurch gehen eventuell vorhandene ungültige Zeichen "verloren") und verlgeicht das
'dann mit dem Inhalt der Zelle.
    If Len(Tabelle2.Cells(a, 1)) <> 6 Or Val(Tabelle2.Cells(a, 1)) <> Tabelle2.Cells(a, 1) Then
        Tabelle2.Cells(a, 1).Activate
        MsgBox "Die Angaben in Zeile " & a & " sind ungültig!", vbOKOnly, "Fehler"
        Exit Sub
    End If
Next a

End Sub

Es müssen natürlich noch die Tabellennamen und die Spalten angepasst werden.


NACHTRAG:

In der Datei die du jetzt eingestellt hast ist ja doch alles in einer Datei enthalten nur halt auf verschiedene Tabellen verteilt.

Nochmal die Frage: ist das jetzt nur hier in der Beispieldatei so oder ist auch bei der Originaldatei?
 
Zuletzt bearbeitet:
super vielen dank schonmal ;) diese geschichte zum überprüfen der artikelnr habe ich fast ähnlich schon hinbekommen^^

in der "realität" sind das natürlich 3 verschiedene dateien, die vermutlich per pfad geladen werden müssen.
aktuell probier ich, eine excel datei per pfad zu laden und deren inhalt in einer arbeitsmappe zusammenzufügen- aber ein fehler macht mir zu schaffen. meinst du du kannst mir da helfen? xD

Private Sub CommandButton1_Click()

'ggf. Laufwerk und Ordner als Vorgabe setzen
ChDir "\"
ChDrive "c:\"
'Das Dialogfenster
Dateiname = Application.GetOpenFilename _
("Micrsoft Excel-Dateien (*.xlsx),*.xlsx") 'halt notfalls nur xls
If Dateiname = False Then Exit Sub
'MsgBox "Ihre Auswahl:" & vbNewLine & Dateiname

' tabelle 2 inhalt löschen noch machen

' öffnet datei
Workbooks.Open Filename:=Dateiname, UpdateLinks:=0, ReadOnly:=True

' daten rauskopieren
'Windows(Dateiname).Activate

Sheets("Vorlage").Activate 'wenn anders heißt, anpassen
Range(Cells(1, 1), Cells(22000, 23)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

'selektiert bereich
Range("A1:R" & Cells(65000, 1).End(xlUp).Row).Select
Range("A2:Q21438").Select
Selection.Copy
Windows("Mappe.xlsm").Activate
Sheets("Tabelle2").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False


End Sub

vllt kannst du mir ja helfen ;) einfach mal per debug durchgehen und die datei laden (stelle sie dir gleich rein) - das ist dann übrigens die originaldatei :)

ich hoffe dass du noch ein bisschen lust hast xD
 
Zurück