Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA Drucken
#1
Hallo zusammen,
ich bin hier neu angemeldet, weil ich durch meine Recherche bisher noch keine Lösung gefunden habe.
Ich hoffe, dass mir hier jemand weiterhelfen kann.

Ich habe eine große Excel-Tabelle, in der Artikel mit einem Verfallsdatum verknüpft sind.
Diese Artikel lasse ich per VBA aufsteigend sortieren, sodass ich in der Liste dann ganz oben als erstes sehe, welche Artikel als nächstes verfallen und ggf. ausgetauscht werden müssen.
Nun möchte ich gern einen weiteres VBA-Makro verwenden, mit dem:
- Excel aus einem ersten Tabellenblatt den Zeitpunkt entnimmt, bis zu welchem Termin der Druckbereich ausgewählt werden soll (z.B. wird manuell in Feld C23 "2021-06" für Juni 2021 eingegeben)
- Dann automatisch im Tabellenblatt "Verfall" alle Artikel bis zu diesem Zeitpunkt auswählt (Angabe ebenfalls in bspw. "2021-03", alles in Spalte G)
- und dann den zu dem Zeitpunkt Bereich (also für Zeile 3 ist das A bis N) als PDF-Dokument druckt

Kann mir jemand weiterhelfen?
Ich bin mit meinem Latein am Ende (oder muss leider in Kauf nehmen, dass das technisch nicht umsetzbar ist)...

Danke im Voraus!
Antworten Top
#2
Hallo,

du filterst die Liste einfach nach deinen Kriterien und druckst sie. Excel druckt nur das, was man auch sieht.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
Hallo,
mir ist leider noch nicht ganz klar wie ich die Liste nach meinen Kriterien filtere.
Kannst du das genauer beschreiben?
Antworten Top
#4
Hi Alex,

ich denke, wenn du uns eine Beispieldatei (original Aufbau; anonymisierte Daten) hochlädtst, kann dir bestimmt jemand weiterhelfen. Lies mal bitte: https://www.clever-excel-forum.de/Thread...ng-stellen
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#5
Hallöchen,

Autofilter gehört eigentlich zu den Grundkenntnissen von Excel, bevor man sich an Makros heranwagt.
Schaue dazu mal bei google vorbei Smile

Selbigen kannst Du dann per Makro steuern, den Code dazu aufzeichnen.
Siehe dazu Excel-Word-Makrorekorder
VBA ist ja nix neues für Dich. Das aufgezeichnete Filterkriterium müsstest Du dann durch ein eingegebenes ersetzen. Dazu könntest Du eine INPUTBOX nutzen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#6
Hallo,
vielen Dank für die Antworten!
@schauan: Die Autofilter-Funktion hatte ich auch schon im Kopf, jedoch lässt sich als Filterkriterium leider keine Zelle einer Tabelle auswählen. Ich kann also nicht sagen "Such nach O4" oder so.

Ich habe die Liste mal kurzerhand anonymisiert.
Im Tabellenblatt "Verfall aktuell" ist nach der Spalte "Haltbarkeit" sortiert worden. Nun möchte ich sozusagen einen automatisierten Ausdruck von ganz oben bis "2021-06" machen, wobei diese Angabe eben regelmäßig händisch im Tabellenblatt "How To" geändert wird.

Ideen?


.xlsm   Materialliste.xlsm (Größe: 203,45 KB / Downloads: 3)
Antworten Top
#7
Hallo Alex,

das ist so natürlich ein Problem, weil es sich in der Spalte "Haltbarkeit" um Texte handelt, wird das Filtern zumindest erschwert. Diese Darstellung hättest du auch mit dem benutzerdefinierten Format JJJJ-MM bekommen. Danach kann man auch Filtern.

Hallo,

habe die Spalte Haltbarkeit mal umformatiert und danach gefiltert. 

Wo ich schon gerade am meckern bin, wozu werden hunderte Zeilen im voraus mit Rahmenlinien gefüllt? Die kann man über die Druckfunktionen direkt beim Drucken für die aktuelle Listengröße virtuell erzeugen.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#8
Hallöchen,

Zitat:jedoch lässt sich als Filterkriterium leider keine Zelle einer Tabelle auswählen.

stimmt in Deinem Fall nicht. Du wolltest ja ein Makro nehmen, also lässt sich das auch programmieren. Ich nehme an, die Zellen mit anschaffen willst Du auch nicht?

Hier mal der aufgezeichnete Code, die Kriterien sind noch eingegeben

Code:
Sub Makro1()
'
' Makro1 Makro
'

'
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$N$451").AutoFilter Field:=9, Criteria1:= _
        "<=2021-01", Operator:=xlAnd, Criteria2:="<>*anschaffen*"
End Sub

und hier der geänderte mit dem Zellinhalt ...

Code:
Sub Makro2()
    'Autofilter (rueck)setzen
    Selection.AutoFilter
    'Filter in Spalte 9 = N setzen anhand der aktiven Zelle
    'Hinweis: Eine Pruefung der Lage der aktiven Zelle
    'und deren Inhalt sollte noch vorgenommen werden!
    ActiveSheet.Range("$A$1:$N$451").AutoFilter Field:=9, Criteria1:= _
        "<=" & ActiveCell.Value, Operator:=xlAnd, Criteria2:="<>*anschaffen*"
End Sub
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#9
Danke für die Rückmeldung.
Also an sich für mich nachvollziehbar, jedoch noch 2 kleine Nachfragen.
"Anschaffen" darf übrigens drin bleiben, das rutscht nach der Anschaffung ja automatisch raus...
1. Von dem einen zum anderen:
Code:
    ActiveSheet.Range("$A$1:$N$451").AutoFilter Field:=9, Criteria1:= _
        "<=2021-01", Operator:=xlAnd, Criteria2:="<>*anschaffen*"

    ActiveSheet.Range("$A$1:$N$451").AutoFilter Field:=9, Criteria1:= _
        "<=" & ActiveCell.Value, Operator:=xlAnd, Criteria2:="<>*anschaffen*"

Mir ist noch nicht klar, wie das Makro jetzt weiß, von wo es sich "2021-01" bzw. ActiveCell ziehen soll. Das wird doch da gar nicht definiert...
Ich würde jetzt auf "Verfall" einfach in P1 die Formel "='How To'!C23" schreiben, dann zieht er sich das vorgegebene Datum ja automatisch.
Nun ist also die Frage, wie ich in das Makro das Kriterium aus P1 des Tabellenblattes hole...
Kann ich das irgendwie umschreiben einfügen/festlegen?!

2. Er soll die leeren Zeilen (die aber mit "" gefüllt sind) ausfiltern. Ne Idee oder zu aufwändig?

Danke im Voraus!
Antworten Top
#10
Hallöchen,

1)
ActiveCell ist die AktiveZelle auf dem AktivenBlatt. Wenn Du eine Zelle zur Eingabe hast und der Cursor / die Markierung steht dort, dann passt das.
Wenn Du zuweilen beim Start des Makros auch woanders bist, musst einfach nur AktiveCell durch die Angabe der Zelladresse der Eingabezelle austauschen ...
Sicherheitshalber der Hinweis: Nicht einfach nur P1 oder wo auch immer, sondern Range("P1") ...

2)
Bei mir waren die leeren weggefiltert. Ich hab aber auch keine mit "" als Inhalt gesehen Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste