3k Aufrufe
Gefragt in Tabellenkalkulation von felixso Einsteiger_in (79 Punkte)
Hallo,

leider schaffe ich es nicht den Fehler in meinem Makro zu finden und versuche es daher hier:
Aus der einen Excel-Arbeitsmappe (Mappe 1) soll der Zellinhalt von einer Zelle (z. B. Tabelle 1, G44) in eine andere Tabelle (Mappe2, Tabelle1) kopiert werden.
Das Problem:
die Position an der der Wert in Tabelle 2 eingefügt werden soll, soll sich anhand je eines Kriteriums aus Spalte A und Zeile 1 von Tabelle 2 ergeben. D. h. in Tabelle 2 stehen z. B. Kundennr. in Spalte 1 und Jahr in Zeile 1.
Der Wert von Zelle G44 soll in der Zelle in Tabelle 2 eingefügt werden, für den die dafür nötigen Kriterien aus Tabelle 1 übernommen werden (d. h. Kundennr. und Jahr).
Habe versucht es mit einer verschachtelten for-each-Schleife zu lösen, was leider nicht klappt, da der "next"-Verweis nicht erkannt wird.
Wäre dankbar, wenn mir jemand erklären könnte was ich falsch mache.
Hier der Code:

Sub zelleKopieren()
Dim zelle As Range
Dim spalte As Range
'In Mappe1 ist Tabelle1 aus der Zelle G44 kopiert werden soll
Sheets("Mappe1").Activate

If (("Tabelle1!G44") <> "") Then
'For-each Schleife zur Bestimmung der Zielzelle und zum einfügen
'1. Schleife für das richtige Jahr
For Each zelle In Worksheets("Mappe2").Sheets("Tabelle2").Range("A1:A10000")
'2. Schleife für die richtige Kundennr.
For Each spalte In Worksheets("Mappe2").Sheets("Tabelle2").Range("A1:AF1")

If zelle.Value = Range("Tabelle1!G11").Value Then

If spalte.Value = Range("Tabelle1!G8").Value Then

zelle.Value = Worksheets("Mappe1").Range("G44")

End If
End If

Next zelle 'Fehlermeldung
Next spalte

'sofern nicht kopiert werden kann (weil Zelle G44 leer ist), soll folgender Text erzeugt werden.
Else
Range("Tabelle1!N130") = "konnte nicht kopiert werden"
End Sub

11 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

das war mein Fehler, richtig muss es natürlich heißen:

Workbooks("Mappe2.xlsx").Close (True)


Damit werden Änderungen in Mappe2 gespeichert.

Gruß

M.O.
...