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.

(berechnete) Teilbereiche in anderes Blatt kopieren
#1
Hallo!
Mein Problem (ich suche mir die Augen tränig im Internet):
Ich habe eine Excel2010 Tabelle zur Erfassung von Gegenständen. Mit Überschrift und Spaltennamen beginnt die Liste der Gegenstände in Spalte 7 (A7 bis K7) und führt sich dann logischerweise nach unten weiter.
Ich möchte jetzt in Tabelle2 automatisch eine Liste zusammenstellen lassen, die die Daten zu den Gegenständen 1 bis 10 ausgibt, wenn ich in zwei Zellen (H3 und I3) eingebe, welche Gegenstände ausgegeben werden sollen. Also in H3 steht "1" und in I3 steht "5" für die Ausgabe der Daten in Zeile 7 bis 11 in Tabelle2.
Ich hoffe, das ist verständlich beschrieben...

Jetzt habe ich einen Button über "Entwicklertools - Einfügen - ActiveX-Steuerelement" eingefügt, der "DRUCKEN" heißt, denn ich will dann nur diesen Bereich genannten Bereich über Tabelle2 ausdrucken (und wahrscheinlich die Schriftgröße anpassen).

Hat jemand eine Idee zu meinem Problem?
Ich sage schon mal danke im Voraus!

Timo


Angehängte Dateien
.xlsm   Gegenstände.xlsm (Größe: 270,56 KB / Downloads: 9)
Antworten Top
#2
Hallo Timo

anbei deine Beispieldatei mit überarbeitetem Makro zurück.  Ich hoffe es ist so gut dokumentiert das du es verstehst.
 
Das Makro in Modul1 habe ich gelöscht, da waren mir zu brisante Befehle drin. Amüsanterweise hast du zuerst einen normalen Button mit Add eingefügt, und wieder gelöscht. Dann einen Aktive CommandButton eingefügt. Beim benutzen dieses Makro würde Excel dir aber bei jedem Druckvorgang ein neues Aktives Steuerelement genau über das alte hinzufügen. Otisch kann man das nicht sehen, irgendwann hättest du >100 Objekte in der Tabelle! Nicht gut!

Ich habe mir erlaubt in Tabelle2 in Zeile2 eine Überschrift einzufügen.  Wenn nicht gewünscht bitte löschen.  Zum kopieren gehe ich über neue Adressen, weil man ja den Kopierbereich festlegen muss.  Schau mal ob es so hinhaut, sonst ändern wir den Kopierbereich. 

Mit Drucken und Drucker einrichten kenne ich mich nicht aus, ist nicht mein Fachgebiet.  Das zeichnest du am besten mit dem Recorder auf, und fügst den Code in das schon existierende Makro "Drucken" ein.  Im Augenblick kommt da eine MsgBox.  Beim Drucken kann ich dir leider nicht weiterhelfen.

mfg  Gast 123


Angehängte Dateien
.xlsm   Gegenstände F.xlsm (Größe: 244,63 KB / Downloads: 8)
Antworten Top
#3
Hallo und zunächst mal VIELEN DANK dass Du Dir die Mühe mit meinem Problem machst.

Irgendwie tut sich bei mir aber nichts, wenn ich den "DRUCKEN" Knopf betätige. Er übernimmt dann zwar die Nummer 1-3 oder mehr wenn ich es eintrage, aber das, was in der Tabelle dahinter kommt wird nicht mit kopiert.
In der Zwischenzeit kam leider noch ein weiterer Wunschpunkt (SORRY!): Ist es möglich, z.B. Spalte B (und wenn meine Mitarbeiterin irgendwann merkt, dass sie auch andere Spalten nicht ausgedruckt braucht, auch diese...) nicht mit zu kopieren? Oder wird das dann zu kompliziert?

Zum Drucken selbst brauche ich da nichts im Makro. Wenn die Daten in Tabelle2 gelandet sind, kann ich das von Hand drucken, das macht mir nichts, kommt eh nicht so oft vor.

Also nochmal Danke!

Timo
Antworten Top
#4
Hallo Timo

Sorry, da hat tatsaechlich was nicht geklappt.  Auf Grund deiner Bitte nur einzelne Spalten zu kopieren habe ich das alte Makro verworfen und eine ganz neue Lösung ausgetüfftelt.  Nach der Devise:  Wir basteln uns selbst ein Makro  Nicht erschrecken, ich kann Vba gut erklären. (Dr. Oetker Backbuch)

Ich habe drei Module eingefügt. Im Modul1 wird über den Button das Makro "Kopieren" aufgerufen. Von dir selbst entwickelt! Im Modul2 ist nur eine Kopie aus Modul1 als Kopier Vorlage.  Im Modul3 kannst du diir ansehen wie mein Makro aufgebaut ist, warum ich mit Offset(0, 3) usw. arbeite, und was dabei genau passiert.  Angezeigt über MsgBox, wo man genau sehen kann welcher Bereich gerade Selektiert wird. Den Zusammenhang begreift man schnell.

Im Modul1 hast du eine komplette Vorlage um jede einzelne Spalte aus Tabelle1, in jede beliebige Zielspalte in Tabelle2 zu kopieren  Die Reihenfolge was du von wo, nach wo kopierst, ist dir jetzt selbst überlassen.  Ebenso welche Spalten du kopieren willst.  Die Makrobefehle die du nicht brauchst, die überflüssig sind, einfach löschen. Das ist alles.

Ich nenne das ein Universal Makro, weil der Anwender so nach belieben selbst festlegen kann was kopiert wird.  Ich hoffe das ich es gut erklärt habe, und es so die bessere Lösung ist. Wenn du das System verstanden hast bist du vom Forum unabhängig. Brauchst nicht nachfragen um selbst was zu ändern  

Selbst ist der Mann!!  Ich hoffe das es so eine gute Idee ist.  Du must zwar etwas üben, aber das hat schnell begriffen! 

mfg  Gast 123


Angehängte Dateien
.xlsm   Gegenstände F2.xlsm (Größe: 248,25 KB / Downloads: 6)
Antworten Top
#5
Nachtrag

kleine Anmerkung:  im Blatt ist ein Aktive Steuerelemnte Button.  Waere es ein normaler Standad Button aus der Zeit Excel 97/2003 könnte man dem Button das Makro direkt zuweisen. Bei Aktiven musste ich über Private Sub gehen!
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Timo
Antworten Top
#6
Nochmal vielen Dank!

Das sieht so aus, wie ich es mir vorgestellt habe! Super!
Wahrscheinlich werden noch die ein- oder anderen Kleinigkeiten verändert werden müssen (die Kollegin kommt alle halbe Stunde und hat noch mehr Ideen...) und wenn ich dann nicht weiter komme melde ich mich noch einmal... :)

Also VIELEN DANK dass Du meine Woche gerettet hast!!!!

Timo

PS: Zu Deinem Nachtrag: Ich habe den ActiveButton genommen, weil ich nicht wusste, dass das auch mit einem normalen Button geht...
Antworten Top
#7
Ach so!
Eine kleine Frage dazu habe ich noch:

Wenn ich jetzt eine Spalte einfüge, weil da noch mehr dazu soll - und die dann auch kopiert werden soll... dann versuche ich mich in den Makros durch, das klappt dann bestimmt irgendwann.
Aber: Muss ich dann in allen Modulen das CopyPaste verändern oder nur in einem? Woher weiß Excel welches Modul verwendet wird oder funktionieren die nur gemeinsam?

Danke!!

Timo
Antworten Top
#8
Hallo Timo,

es gbit drei Module, davon ist für den Button nur das Modul1 aktiv. Modul2 ist nur eine Kopie für dich, alte Gewohnheit von mir. Wenn man ein Makro ändert und es nichtr so klappt wie man will kann man wieder das Original Makro kopieren, und einen neuen Versuch machen. Deshalb behalte ich gerne eine Kopie. Nur zur Sicherheit.

Das Modul3 ist nur "zum spieien", zum Vba lernen gedacht.   Dort kannst du optisch sehen was der Offset(0,x) Befehl  bewirkt. Damit kopiert man jedesmal eine andere Spalte! Im zweten Makro "eigenen_Kopierbereich_Prüfen" kannst du dir selber die Spalten aussuchen die du kopieren willst, und bekommst per MsgBox angezeigt ob es die richtige Spalte ist. Das benutze ich auch selbst beim Makro Entwickeln, wenn ich Adressbereiche prüfen muss. Bei langen Makros verliere selbst ich manchmal die Übersicht. Dann ist es gut wenn man optisch sieht was man programmiert. 

Die Zieladresse in Tabelle2 kannst du für jede Spalte selbst festlegen. Denn jede Einheit ist in sich abgeschlossen! Beispiel:  Diese beiden Zeilen im unteren Beispiel gehören als Einheit zusammen. Zuerst Copy, dann Paste xlValues. Bei Offset(0, 4) siehtst du das damit Spalte E=Gegenstand kopiert wird. 
Code:
Range(AnfAdr, EndAdr).Offset(0, 4).Copy   'E Gegenstand
Worksheets("Tabelle2").Range("C3").PasteSpecial xlPasteValues

Die Basis Adresse ist immer deine Anf- und End Adresse aus den Zellen "J" + K1". Die ändert sich nicht. Offset(0,4) besagt aber das jetzt dieser Bereich, um vier Spalten verschoben, kopiert werden soll!  Das ist alles. Kommen neue Spalten hinzu musst du nur abzählen wie gross dein Offset sein muss. Dazu gehst du am besten in Modul3 und testest es im zweiten Makro:  "Eigenen_Kopierbereich_Prüfen". Dort gibt es zum prüfen nur Select, -ohne- Kopie!! Die Befehle die jetzt drin stehen kannst du löschen oder deaktivieren. Setze vor Range mal ein Hochkomm ', dann erscheint die Zeile in Grün. Excel wertet sie jetzt als Kommentar, als Text. Der Befehl wird nicht mehr ausgeführt. So aktivieren wir mal eben Befehle.  kleine Vba Praxis.

Mit dem Modul3 kannst du zum üben frei experimentieren. Dort wird nichts kopiert oder eingefügt!! Ein reines Spalten Test Modul!!

mfg  Gast 123
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Timo
Antworten Top
#9
Hallo Timo,

ich habe ganz vergessen zu fragen ob du weisst wie man Makros starten kann. Drei Möglichkeiten:
Über Butrton, über Menülsite Makrı Dialog öffnen, im Listenfeld auswaehlen und Run oder Start drücken.
Mit Alt + F11 den Vba Editor öffnen, den Cursor im Modulblatt ins Makro mitten reinsetzen, F5 drücken.
So starten Programmierer beim Entwickeln zum Testen.

 mfg  Gast 123
Antworten Top
#10
Hallo Gast,

nochmal VIELEN DANK für Deine Hilfe! Es hat alles super geklappt und ich habe mittlerweile noch ein bisschen ergänzt.

Ich habe nur noch eine kleine Frage, dann werden wir hier glücklich...

Gibt es noch einen Befehl, der den Bereich, der in Tabelle 2 dann eingefügt wird, zunächst löscht?

Also wenn ich jetzt Objekt 1-10 in Tabelle2 kopiere und dann Objekt 11-14, dann stehen in Tabelle 2 zunächst die Objekte 11-14 und danach 5-10...

Ist bestimmt nur eine kleine Zeile, womit der Bereich "gecleart" wird, bevor hineinkopiert wird...

Danke schon Mal!!!

Timo
Antworten Top


Gehe zu:


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