Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Per VBA Kopieren und aus Liste befüllen

Per VBA Kopieren und aus Liste befüllen
27.11.2017 16:04:20
Lukas
Hallo an alle
Vielleicht wäre jemand so nett und könnte mir helfen, Programmieren ist nicht gerade meine Stärke. Ich möchte per VBA ein Muster für kleine Kärtchen, aus einem Tabellenblatt in ein neues Tabellenblatt untereinander Kopieren. Und mit Daten aus einer Liste befüllen. Es ist sicher irgendwie mit einer schleife, weis aber nicht so ganz, wie ich das anstellen soll.
Es sollen nur die Daten verwendet werden, die nicht durch einen Filter ausgeblendet sind und bei denen in der jeweiligen Zeile in Spalte P das Wort „Drucken“ steht. Ich hab eine Musterdatei erstellt damit ihr es euch besser vorstellen könnt.

Die Datei https://www.herber.de/bbs/user/117950.xlsm wurde aus Datenschutzgründen gelöscht

Wäre echt super, wen sich jemand die Zeit nehmen könnte.
Grüße
Lukas

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Fast Perfekt
29.11.2017 18:45:17
Lukas
Hallo :),
vielen dank für die mühe, funktioniert echt gut und ist schon fast perfekt. Besonders gut gefällt mir die Abschlussmeldung. Das einzige ist nur das Ich es in dem bsp. vielleicht etwas schlecht dargestellt hab.
Ich versuch es nochmal besser zu beschreiben:
Angenommen die Liste besteht nur aus zwei Datenzeilen. Bei dem Kartenmuster ist immer die linke Kartenreiche auf Seite 1 Spalte A-K DIE Vorderseite der ersten Karte und die Reiche ganz rechts auf Seite 2 Spalte AE- AL, die Rückseite der ersten Karten. Genau so verhält es sich mit Spalte L-V zu Spalte W-AD bei er zweiten Karte. Nur sie werden jetzt seitenverkehrt gefüllt weil der Drucker das Blatt dreht. Also die "Blst. Nr" ist auf der Falschen Karte sobald sie ausgedruckt ist. Es wäre echt nett wenn du mir das umdrehen könntest. Sorry fürs Nerven
Bzw. kann man das vielleicht irgendwie auf dem Drucker einstellen? Und weißt du vielleicht wie die Einstellung heist?
Aber Danke auf jeden fall, für das bisherige erstellen des Makros.
Grüße Lukas
Anzeige
AW: Fast Perfekt
29.11.2017 20:47:48
Tino
Hallo,
wenn ich verstanden habe was du geschrieben hast, müsste dies über die Druckereigenschaften einzustellen sein.
Gruß Tino
AW: Fast Perfekt
30.11.2017 13:20:38
Lukas
Hallo
Also ich hab es Probiert, leider lässt sich das nicht auf dem Drucker einstellen, es gibt nur über "Längsseite drehen" oder "Breitseite drehen" aber beides ergibt leider nicht das Richtige Ergebnis.
Soweit ich den Code verstehe wird die Vorlage Kopiert und dann als Range durchlaufen, müsste das hier der Teil sein der den füll Ablauf regelt, leider auch der teil den ich am wenigsten verstehe :(. Wie bekomm ich den so hin dass er es Seitenverkehrt befühlt bspw. bei zwei Datenzeilen in der Liste:
1.Datenzeile: F2 = BLst.Nr , AJ2= Raum ID , AJ3= Bezeichnung ,AJ10 = Standort
2.Datenzeile: Q2 = BLst.Nr , AB2= Raum ID , AB3= Bezeichnung ,AB10 = Standort

If rng.Cells(1, 16).Value = "Drucken" Then
booError = False
nCounter = nCounter + 1
If nCounter = 1 Then rngVorlage.Parent.Cells.Copy .Cells(1, 1)
If (nCounter - 1) Mod 2 = 0 And nCounter > 2 Then
NextRow = NextRow + rngVorlage.Rows.Count + 1
rngVorlage.Copy .Cells(NextRow, 1)
VSpalte1 = 0
VSpalte2 = 0
ElseIf nCounter > 1 Then
VSpalte1 = 11
VSpalte2 = 8
End If
Vielen Dank für die Hilfe.
Grüße Lukas
Anzeige
Funktioniert Super :)
30.11.2017 15:44:07
Lukas
Hallo :)
Funktioniert Perfekt :)), vielen vielen Dank für die Hilfe und Sorry für die etwas umständliche oder ungenaue Beschreibung. Bist der Beste
Grüße Lukas
kleines Problem
02.12.2017 09:22:31
Lukas
Hallo
Ich hatte noch eine Frage. Wenn ich In der Tabelle in Spalte P wo "Drucken" steht Zeilen über den Filter ausblende dann Funktioniert der Code einwandfrei, allerdings wenn ich in irgendeiner anderen Spalte einen Filter setze, dann kommt die Meldung "Keine Daten für Druckauftrag vorhanden". Das passiert immer dann, wenn unter den ausgeblendeten Zeilen einen Zeile dabei ist bei der in Spalte P Drucken steht.
Ich wollte nämlich die Seiten nach bestimmten Kriterien filtern, damit ich die Druckaufträge dann in der entsprechenden Zusammenstellung und reichenfolge rausbekomme. Bei den Spalten kann ich Ausblenden, nur bei bestimmten Spalten geht es nicht, eigentlich nur bei Spalte A und C , das ist aber nicht so tragisch da es bei den anderen Spalten ja geht und die Liste dann immernoch noch auf eine A4 passt.
Ich glaube es ist dieser Teil des Codes aber ich weiß nicht wie ich ihn ändern muss
With Tabelle1
Set rng = .Range("A4", .Cells(.Rows.Count, 16).End(xlUp))
End With
With Tabelle2
Call Events_(False)
.UsedRange.EntireRow.Delete
Set rng = VisibleRange(rng)
booError = True
If rng Is Nothing Then
GoTo ErrorHandler:
ElseIf rng.Rows(rng.Rows.Count).Row 'da springt er in die Fehler Behandlung _
b>
GoTo ErrorHandler:
End If

Ich wollte nämlich die Liste nach bestimmten Kriterien filtern und ein paar Spalten ausblenden um vor dem drucken einerseits die Daten zu Kontrollieren und andererseits, um aus der Liste ein Übersichtsblatt auszudrucken. Damit ich die Druckaufträge dann in der entsprechenden Zusammenstellung rausbekomme und bei sehr vielen Karten dann auch ein Übersichtsblatt hab was alles schon ausgedruckt ist.
Könntest du mir da vielleicht noch ein letztes Mal helfen?
Grüße Lukas
Anzeige
AW: jetzt habe ich dich verstanden
02.12.2017 09:33:15
Lukas
Kleine Korrektur, der Richtigkeit halber: Bei den Spalten ist nur A betroffen. Spalte C ist ausblendbar. Aber wie gesagt das ist nicht so wichtig.
Danke und Grüße
Lukas
AW: jetzt habe ich dich verstanden
02.12.2017 11:21:02
Lukas
Hallo
Es Tut mir leid, das ich da jetzt so viele Nachrichten geschrieben habe, es hat mal Funktioniert und dann wider mal nicht. Bitte Ignoriert meine zwei vorhergehenden Nachrichten. Aber jetzt bin ich draufgekommen womit ich das auslöse bzw wodurch die Meldung verursacht wird. Ich versuch es mal zu erklären:
Wenn ich einen oder mehrere Filter setze und dadurch die erste Zeile unter der Überschrift ausgeblendet wird unabhängig davon ob dort “Drucken" steht. Dann kommt die Meldung "Keine Daten für Druckauftrag vorhanden". Sind die Filter zufällig so gesetzt das die erste Zeile eingeblendet ist unabhängig davon was dann noch ausgeblendet ist. Dann Funktioniert es Tadellos. Bsp wenn man in der ersten Zeile in Spalte "P" das Wort "Drucken" herauslöst und dann nach drucken filtert dann geht das nicht.
Ist es möglich es so zu machen das dieses Problem nicht mehr besteht, sonst müsste ich ständig darauf achten das ich die Filter so setze das dir erste Zeile nicht ausgeblendet wird.
Grüße Lukas
Anzeige
AW: Fehler gefunden
03.12.2017 15:44:11
Lukas
Hallo 
Es funktioniert, Dankeschön. Echt Super:)))))))
Ich hätte noch eine letzte Frage: Weißt du vielleicht wie ich eine Grafik in diese Vorlage reinbekomme. (Ist ein kleines Logo) Ich habe ein Beispiellogo in die Vorlage eingesetzt und in den Einstellungen "Von Zellposition und -größe abhängig" angehackt. Damit es vom Makro mit gelöscht wird.

Die Datei https://www.herber.de/bbs/user/118071.xlsm wurde aus Datenschutzgründen gelöscht


Wenn ich mit gesetzten Filtern das Makro auslöse Springt es auf das Tabellenblatt mit den Karten und es sind auch alle ausgefüllt, so wie es in der Liste festgelegt wurde und das Logo ist auch da.
Aber das Logos ind den einzelnen Karten Flackern und es ist so als würde das Makro noch arbeiten. Man kann nichts Anderes machen, als ESC ein paarmal zu drücken, das funktioniert aber auch nicht immer. 1-2 mal musst ich Excel über den Taskmanager beenden.
Hab es eine halbe Stunde laufen lassen und es war immer noch so. Hast du da eine Idee? Sollte doch normalerweise keinen Unterschied machen? Oder ist das generell nicht möglich? Kannst du da irgendwas machen oder mir sagen wonach ich suchen muss?
Das ist jetzt wirklich meine letzte Frage. Danke für die Unterstützung, wäre wohl allein nie so weit gekommen
Grüße Lukas
Anzeige
AW: Fehler gefunden
04.12.2017 21:14:39
Lukas
Hallo, danke erstmal für das erneute ergänzen:
Bin mir nicht sicher aber da ist glaub ich ein kleiner Tippfehler drin? Ist aber kein Ding bin sehr schnell dahinter gekommen :)
Call LoescheObjekte(ThisWorkbook.Sheets(.Name))
ist damit die Funktion gemein, die andere ist nicht in der Datei drinnen.
Call LoescheDruckauftrag(ThisWorkbook.Sheets(.Name))
Das Löscht die Bilder/Objekte wenn ich das richtig verstehe, damit sie nicht doppelt vorkommen beim erneuten ausführen des Codes. Ist ECHT SUPER jetzt brauchen sie die Einstellung "Von Zellposition und -größe abhängig" nicht mehr. Aber ich hab mich glaub ich wider blöd ausgedrückt, es tut mir leid. Ich hab das ganze nochmal ausgiebig getestet und mir sind zwei Sachen aufgefallen. Ich versuch es nochmal besser zu beschreiben bzw. meine Theorien dazu nennen:
1.Manchmal: wird nicht der ganze Listenbereich in den Rang kopiert hab das in diesem Überwachungsfenster gesehen. Beispiel: Tabelle hat zbsp. 620 Zeilen. Im Überwachungsfenster stehen im Range aber nur 596. Aus irgendeinem Grund scheint der benutzte Bereich unterteilt zu sein oder unvollständig. Ich glaub das wird durch das hinzu kopieren von Datenzeilen aus anderen Tabellen verursacht. Dadurch erfasst er nur den Obersten Benutzen Bereich und das setzt sich dann bei gesetzten filtern natürlich fort, wenn er innerhalb des Ranges den sichtbaren Bereich durchläuft.
Je nachdem wie dieser Bereich ausfällt und wie viele zu druckende Datenzeilen darin sind bzw _ welche Filter gesetzt sind , kommt dann eine entsprechendes Ergebnis. Die Anzahl der Kärtchen ist unvollständig sofern die untersten zu druckende Datenzeile nicht teil des Bereiches waren oder es kommt die Meldung Keine Daten für Druckauftrag vorhanden!, Glaube diese Codezeile ist verantwortlich. Hab es getestet indem ich nach der Spalte P (dort steht "Drucken") sortiert wodurch alle Datensätze oben waren und dann ging es. Ich weiß aber leider nicht wieso dieser Fehler auftritt. Hab gegoogelt, und es sollte eigentlich damit gehen:

Set rng = .Range("A5", .Cells(.Rows.Count, 14).End(xlUp))

2. Manchmal: werden die Karten gedruckt/übertragen und er wechselt auf das Tab "Muster _ Karten" aber dann hängt Excel, und man sieht es am Flackern der Bilder/Objekte in den Karten. Dann muss ich ESC drücken, und es ist alles geht wider. Weis nur nicht was da genau passiert. Weil das Tabellenblatt wechselt, geh ich davon aus. Das es, bis zu diesem Punkt läuft. Irgendwo in diesem Bereich ist der Auslöser für das Flackern bzw. anhalten des Programms

.PageSetup.PrintArea = .Rows(1).Resize(NextRow + rngVorlage.Rows.Count - 1).Address
End With
ErrorHandler:
Call Events_(True)
If Err.Number  0 Then
MsgBox Err.Description, vbCritical, Err.Number
ElseIf booError Then
MsgBox "Keine Daten für Druckauftrag vorhanden!", vbExclamation
Else
Application.GoTo Tabelle2.Cells(1, 1), True
MsgBox "Druckauftrag wurde ersetllt!", vbInformation

  • Könnte die "Bild Aktualisierung", "Berechnung" die wider eingeschaltet wird die Ursache sein? So ne art Rückkopplung?
  • Oder kann es sein das das Programm die anderen Zeilen durchläuft wo nicht „Drucken“ steht?
  • Oder vielleicht hat es was mit dem Arbeitsspeicher/Zwischenablage zutun, dass die durch die Bilder/Objekte voll ist und es deswegen den Abschluss des Programms behindert. Ist es möglich die Zwischenablage zu löschen?

  • Dieser Abschnitt kommt dann manchmal nicht mehr (MsgBox "Druckauftrag wurde ersetllt!", vbInformation) wenn es hängen bleibt und ich ESC drücken muss. Ich hoffe ich habe es mit dem schreiben und meinen Theorien nicht übertrieben, ich kenn mich leider nicht aus und dacht mir Vielleicht hilft so eine Beschreibung weiter.
    Grüße Lukas
    Anzeige
    AW: Fehler gefunden
    04.12.2017 21:16:02
    Lukas
    PS: Sorry für den Langen Text

    338 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige