Wenke Geschrieben November 7, 2004 Geschrieben November 7, 2004 Wie Chi in seinem letzten Posting mitteilte, kann er den Kurs Programmieren nicht weiterführen. Schade!Leider kann ich den Kurs nicht so weiterführen, wie er es sich gedacht hat.Ich arbeite nur mit dem Makrorecorder.Der eine oder andere hat einige meiner Programme schon herunter geladen und ausprobiert. Da bei hat er auch gesehen, mit dem „minderwertigen“ Makrorecorder lassen sich erstaunlich viele und unterschiedliche Programme erzeugen.Ich find ihn klasse.Vielleicht kann der Kurs von Chi ja später fortgesetzt werden. Ich will da nicht herumpfuschen und eröffne einfach einen neuen Kurs„Programmieren mit dem Makrorecorder“Das Programmieren mit dem Makrorecorder hat viele Vorteile: man braucht dafür kein Extraprogramm seine Bedienung ist wunderbar einfach und schnell zu begreifen die Programmiersprache Visual Basic für Applikationen ist ebenfalls einfach man muss nur wenige „Vokabeln“ lernen die Erfolge kommen schnell und können sich sehen lassen es wird auf dem Rechner nichts installiert, was ich sehr schätzeMit machen kann jeder der Formeln in ein Excelblatt eingeben kann.Hier gibt es eine Einschränkung:Wer viele verschiedene Formeln kennt kann viel programmieren,Wer wenige Formeln kennt kann wenig programmieren klingt übel ne?Drücken wir es mal positiv aus:1. Du brauchst dich nicht mit vielen Möglichkeiten rumschlagen....das war Werbung2. Mit jeder Formel, die du neu kennen lernst, erweitern deine Programmiermöglichkeiten um ein vielfaches. Jede Woche eine Formel mehr das kann man hinkriegen. Zu mal in diesem Thread so viele rumlungern. Also lass dir Zeit und nicht zuviel auf einmal.Der FahrplanBeim Programmieren sollte man nichts dem Zufall überlassen. Das kann böse Fehler erzeugen.Also erstmal:Sicherstellen, das alle in der gleichen Excel- und VBA Umgebung arbeiten.Danach beginnen wir sofort mit dem Programmieren. Keine Schonzeit. Wenn du schwimmen lernen willst musst du ins Wasser. Keine Angst ein paar Rettungsringe sind schon da.Programmieren:Wir nehmen Chis Hamburgtool und mein Programm „Monate“ und bauen eine neue, bessere Version.Beim erstellen der besseren Version werde ich nicht immer den schnellsten Weg aufzeigen. weil:Erstens: ich kenne ihn meistens nichtZweitens: soll es einfach sein, ich liebe sie, diese einfachen SachenDrittens: die verschiedenen Wege auszuprobieren, wie man an lauffähigen Code kommt Viertens: Es sollen viele Codeschnipsel anfallen die universal einsetzbar sind, quasi wie Bausteine.Danach wirst du den Makrocode von anderen lesen verstehen und verändern können und damit für deine Programmideen verwenden können. Mit den universellen Bausteinen kannst du dir schnell deine eigenen Programme stricken können.Als Abschluss wirst Du das entstanden Programm so anpassen das es für:das Wiesbadentool von Chi verwendet werden kann.Hast du das geschafft wird dich so schnell nichts mehr erschrecken.Den Thread „Programmieren mit dem Makrorecorder“ werde ich Splitten:In den reinen Lernteil mit meinen Posting............ hier bitte keine Postings..............................................................sonst wird alles unübersichtlichund in einen Frage und Antwortteil. Dazu wird dieser Thread missbraucht: Kurs Programmierung mit Visual BasicHier kann alles zum Thema gepostet werden.Findet jemand einen schönen Codeteil kann er ihn hier allen zur Verfügung stellen. Der Code sollte auch erklärt werden.Wie ihr wisst bin ich nur Sonntags im Netz und beantworte dann nach Möglichkeit die entstandenen Fragen.Alle Postings stelle ich komplett auch als .zip Datei ein.Einfach herunterladen und nach Möglichkeit ausdrucken.
Wenke Geschrieben November 7, 2004 Autor Geschrieben November 7, 2004 1. Excel einrichten:Öffne eine neue ExcelmappeÜberprüfe folgende Einstellungen in Excel, am besten schreibe ab.Menü - Extras – Optionen – AnsichtDie Bedeutung: Klicke im Menü Extra auf Optionen, klicke auf AnsichtDie rot markierten Einstellungen sollten übereinstimmen.Bild 1Menü - Extras – Optionen – BerechnungBild 2Menü - Extras – Optionen – BearbeitenBild 3Menü - Extras – Optionen – AllgemeinBild 4Eine leere Arbeitsmappe ist geöffnet, die obigen Einstellungen sind ausgeführt.Damit wir später besser arbeiten können holen wir jetzt eine neue Menüleiste.Klicke mit der rechten Maustaste direkt neben das Fragezeichen.Es klappt eine neue Menüleiste auf. In der aufgeklappten Menüleiste auf Visual Basic klicken.siehe Bild 5Bild 5Die Visual – Basic - Symbolleiste erscheint und lungert auf dem Arbeitsblatt rum.Bild 6Diese Symbolleiste mit der rechten Maustaste nach unten ziehen.Sie verankert sich im Excelblatt.Bild 7Das Arbeitsblatt sieht nun wie im Bild 7 aus.Jetzt kommt ein kniffliger Teil, ich bin daran fast verzweifelt.Wenn du anfängst den Computer zu beschimpfen, auf ihn losgehen willst um sonst was mit ihm an zu stellen.....dann mach einfach mal Pause. Es hilft wirklich. Nach dem dritten oder vierten Versuch klappt es schon. Wir sind doch Kummer gewohnt.Klicke ganz oben im Excelblatt auf Minimieren, vergrößere bzw. verkleinere so, das ungefähr halb so groß wie der Bildschirm ist.Klicke jetzt in der neuen Leiste auf den Editor siehe Bild 6Der Visual Basic Editor mit dem Codefenster öffnet sich, das ist ein weißes Fenster. Es kann auch grau erscheinen weil noch kein Modul geladen ist.Klicke im Editor ganz oben, wie im Excelblatt, auf Minimieren.Das neue Fenster ebenfalls, halb so groß wie den Bildschirm einstellen.Danach ganz unten am Bildschirm, auf die Taskleiste klicken,ein neues Menü wie im Bild 8 erscheint:Dort auf Nebeneinander klicken.Bild 8Mit der Maus:den Editor nach links verschieben und das Excelblatt nach rechts verschieben.Das Blatt sieht dann aus wie im Bild 8Diese Anordnung ist später eine große Hilfe. Damit können wir später beobachten welcher Code ausgeführt wird. Gleichzeitig sehen wir die Wirkung im Arbeitsblatt.Es wird beim programmieren eine große Hilfe sein!Hast du es langsam satt? Ich auch.OK, ich schenke dir eine fast leere Arbeitsmappe. Da ist ein kleines Makro drin. Es kann dir helfen das Excelblatt wie im Bild 8 einzurichten. Mit paar Handgriffen musst du nachhelfen. Wenn alles eingerichtet ist: Mappe schließen und Speichern. Wird später die Anordnung wie im Bild 8 gebraucht, reicht der Nebeneinander Befehl aus.Da hast du aber jetzt einen Haufen Arbeit.Fenster_anordnen.zip
Wenke Geschrieben November 7, 2004 Autor Geschrieben November 7, 2004 VBA Umgebung einrichtenDie Excelmappe ist eingerichtet und hat das Aussehen wie in Bild 8 gezeigt.Wenn nicht stelle diese Ansicht her.Jetzt stellen wir VBA Umgebung ein. Die rot markierten Optionen sollten übereinstimmen. Am besten abschreiben.In den verschiedenen Excelversionen können die Optionen andere Bezeichnungen haben.Du wirst sie aber ohne Schwierigkeiten erkennen können. Gehe ins Fenster „Visual Basic“ und klicke auf:Menü: Ansicht — Symbolleisten — AnpassenBild 9es erscheint:Bild 10klicke auf die Registerkarte Symbolleisten und setze die HäkchenGehe zum Menü: Extra — OptionenBild 11es erscheint:Klicke auf die Registerkarte Editor und nimm diese Einstellungen vorBild 12Wenn bei Variablendeklaration erforderlich, ein Häkchen gesetzt ist, kannst du es stehen lassen. Ich benutze in meinen Programmen keine Variablen. Macht das Programm später Ärger, setze den Harken einfach neu.Wechsle jetzt auf die Registerkarte Editorformat. Dort werden den Schriften im Modulfenster verschiedene Codefarben zu geordnet.Übernimm die Einstellungen aus Bild 13 und 13.1Bild 13Bei Markierungstext ist die Einstellung ebenfalls 3 mal AutoBild 13.1Die Einstellungen erfolgen durch Klick auf das umgedrehte Dreieck.Klicke nun noch auf die Registerkarte Allgemein und stelle folgendes ein:Bild 14wir sind damit durch. Endlich
Wenke Geschrieben November 7, 2004 Autor Geschrieben November 7, 2004 Nur so zum LesenComputer und Programme haben eine sehr lobenswerte Eigenschaft: Sie machen genau das was ihnen gesagt wird! Gut n’e! und das ist das Problem.Wenn du dem Computer sagst: „Fenster streichen!“Dann streicht er die Fenster:„Ohne Wenn und Aber“ ist ruck zuck fertig und legt sich auf die faule Haut.Fragt auf keinen Fall, ob er die Rahmen auch streichen soll.Da brauchst du nicht zu jammern: Die Kiste macht was sie will. Falsch!Er macht das, was du ihm gesagt hast.Es darf auch niemals: den Sinn deiner Befehle ergründen und ausführen wollen:Stell dir vor du fährst die Kiste mit der Startdiskette hoch, willst die Partition E formatieren.Also Diskette rein, hochfahren, Eingabe: Format: Z..........Frau hat gerufen, du warst abgelenktDas Programm denkt nun:1. Laufwerk Z?2. Gibt’s nicht!3. Immer wenn ich im Einsatz war, wurde auf die Systempartition zugegriffen!4. Er meint bestimmt Format C:5. Mach ich doch glatt!6. Er ist bestimmt froh, das ich das für Ihn gemacht habeDa kommt Freude auf!Also: Wenn er Rahmen streichen soll,......................sag es ihm auch Wenn er sich melden soll,................................sag es ihm auchNatürlich in Computersprache, das nennt man Programmieren.Bevor wir jetzt anfangen sollten wir uns die Frage stellen:Was ist das eigentlich “programmieren“?Ein Programm, ist schlicht eine Handlungsanweisung für die Kiste.Ein Beispiel:Wenn wir mit Excel reden wollen:1. erstellen wir ein Arbeitsblatt mit Spalten mit Überschriften kurz gesagt das Layout,2. erfinden wir Formeln und Funktionen sagen damit Excel was, wo gerechnet werden ,3. kopieren wir (abschreiben!) Spalten und Zeilen bis wir das gewünschte Ergebnis erhalten.4. Fertig: Neubeginn.Das war ein grober, vereinfachter Programmablauf.Die wichtigsten Arbeitsschritte beim Programmieren sind damit beschrieben. Hier kann dir keiner helfen. Das musst du allein erledigen.Der Rest ist dann nur noch Handwerk, nicht besonderes , nun ja, fast.
Wenke Geschrieben November 7, 2004 Autor Geschrieben November 7, 2004 Chi hatte sein Hamburgtool eingestellt. Für mich hatte es einen Mangel:- jeder Tag musste einzeln eingeben werden- nach dem Download musste jeder Tag in ein anderes Arbeitsblatt kopiert werden- war kein Download möglich, muss die Veränderung der Vorlage rückgängig gemacht werden.Mein Tool hat aber auch einen Mangel:- war kein Download möglich, wird das Blatt Hamburg geschlossen, es muss manuell gesucht und wieder geöffnet werden.Das hat folgende Ursache: Ich nicht weiß, einfach nicht wo da Hamburgtool gelagert ist. Das alles ist entschieden zuviel Arbeit.„Der Fahrplan“Oder:Das, soll das neue Programm können:A. Mit Hilfe des Hamburgtools eine Jahrespermanenz vom Server holenB. dabei will ich nur einmal die notwendigen Eingaben machen,C. DAS IST UNGHEUER WICHTIG: Dann eine Tasse Kaffee trinken! wenn ich wieder komme soll:1) die Jahrespermanenz nach Monaten gegliedert, in einer Excelmappe stehendie Aufgliederung der Permanenz soll nach Auswahl 2) in den Spalten B bis AFoder3) in der Spalte B, ab Zelle B5 getrennt, von einer Leerzelle eingetragen werden, das Tagesdatum ist dann, in der Spalte C beim ersten Tagescoup, eingetragen.4) Die Pleins sind in jeder Tagespermanenz ausgezähltEs wird ernst, legt die Schwimmweste an, als Rettungsring wieder ein Download.Du hast den ersten Teil abgearbeitet. Wenn du eine neue Excelmappe erstellst, sieht dein Desktop wie im Bild 8 aus. Erstelle im Ordner „Eigene Dateien“, einen neuen Ordner „Programmieren“.Da rein packst du:die Datei „Fenster anordnen“ vom letzten Malmein Programm Hamburger Permanenzen als .zip Datei vom:http://www.roulette-forum.de/index.php?showtopic=1704&st=30Posting vom May 16 2004, 01:03entpacke im Ordner „Programmieren“ die .zip DateiIm Ordner „Programmieren“ erstellst du einen Unterordner „Hamburger Permanenzen“Eine Woche Pause. Du hast ja genug zu tun. Nicht aufgeben, es wird einfacher. Beste GrüßeWenkeAlle Postings wie versprochen: als Zip DateiWenkeDie_Postings.zip
Wenke Geschrieben November 14, 2004 Autor Geschrieben November 14, 2004 Wie es weiter geht:Hier will ich aufzeigen, wie man mit ganz geringen Programmierkenntnissen sehr viel erledigen kann.Dazu verwende ich das Hamburger-Permanenz-Programm. Ich gehe davon aus: Du hattest noch nie etwas mit VBA zu tun. Jetzt willst du ein Programm erstellen.Alles wird mit dem Makrorecorder erledigt.Die Codebestandteile werden, in der notwendigen Reihenfolge, herausgearbeitet.In der Woche darauf erstellst du mit diesen Codeteilen, einen Teil, des Hamburger Programms. Die Makros sind immer in der Downloadmappe. Sieh sie dir erst an wenn du:A) alles abgearbeitet hastB) wenn nichts mehr geht.Es wird laufend fortgeschrieben.Mit diesem Verfahren wird eine realistische Programmierung simuliert.Das wäre der Normalfall:Mir ging es jedenfalls so:• Programmierbuch auf• Hilfe! wo finde ich was.....ich will doch nur......• Wer, soll sich das alles merken?• Buch zu• Aus die Maus.• Nach vielen Anläufen habe ich endlich angefangen.danach mit dem notwendigen Biss• Programmidee• die bekannten Teile programmieren• die unbekannten Teile ermitteln• für die unbekannten Teile den Code suchen........wo auch immer• den neuen Code für das Programm anpassen.Der Nachteil davon: Am Anfang muss noch zwischen der VBA Bedienung und dem eigentlichen Programmierung hin und her gesprungen werden.Mein erstes Programm lief übrigens so ab—Kann ich nicht (also händisch) —Makro1—Kann ich nicht (also händisch) —Makro2Der Vorteil hier:Alles steht in einem zeitlichen und logischen Zusammenhang und läst sich besser merken. Du brauchst nichts auswendig zu lernen. Einfach die Übungen mehrmals erledigen, dann hast du es einfach drauf.Also nicht erschrecken. Der Unterschied zwischen Bratkartoffeln und Programmieren:Vernünftige Bratkartoffeln zu machen ist schwerer. Was ich nicht machen kann: Ein vernünftiges Programmierbuch ersetzen.Ein guter Link:www.add-in-world.comlässt sich ein gratis Excel – News – Letter bestellen. Er scheint alle 14 Tage und ist für Anfänger und Fortgeschrittene empfehlenswert.Aus gegebenen Anlass ein Hinweis: In der Zeitschrift „Office Journal Excelpraxis“ Ausgabe 04/2004 Preis 12,90 € ist das Buch „EXCEL-VBA in 21 Tagen“ von Bernd Held(ca. 600 Seiten) enthalten. Üblicherweise liegt der Preis für solche Bücher bei 50 € aufwärts. Außerdem gibt es das Heftarchiv ab 2001 mit vielen Makrolösungen dazu.Da kann man sagen: „Preis-Leistung“ stimmt.
Wenke Geschrieben November 14, 2004 Autor Geschrieben November 14, 2004 Nach dieser Schinderei bist du noch dabei? Du bist hart im Nehmen.Nicht vergessen: Der Text ist nicht dein Feind, je mehr Text desto leicht.Das nutze ich auch gleich schamlos aus.Viel Text — Wenig ArbeitDas ist erledigt: Excelmappe und VBA Editor, beide sind auf dem Desktop sichtbar!Was wir heute machen: Die häufigsten Arbeiten im Excelblatt mittels VBA erledigen!!Häufige Aufgaben im Excelblatt sind:1. Text oder Zahlen eine Zelle eingeben2. Zellinhalt löschen3. Formeln in eine Zelle eingeben4. Zellen kopieren5. Zellen ausschneiden6. neue Zellen einfügenDas dürften so etwa 50% aller Aufgaben seinFür diese Aufgaben erstellen wir jetzt die Makros. Nicht nervös werden es ist ganz einfach.Anmerkung:Makrorecorder an: bedeutet immer „in der VB-Leiste anschalten“Aufzeichnung beenden: bedeutet immer „in der VB-Leiste ausschalten“es ist immer der gleiche SchalterEs geht los: Öffne eine leere Arbeitsmappe. Richte deinen Bildschirm so wie in Bild 8 ein.Ganz wichtig: Der Editor und das Excelblatt sind sichtbar. Dieses Makro werden wir noch einmal ausführlich besprechen. Das gibt noch mal viel Text. Das erste Makro:1.Klicke in der Excelmappe in die Zelle „C5“ 2.Makrorecorder an ....... unten! im BlattDas Dialogfeld „Makro aufzeichnen“ erscheint:Bild DialogfeldMakroname: Text_oder_Zahl_eingebenIm Makronamen dürfen keine Leerfelder enthalten, und müssen mit einem Buchstaben beginnen. Dieser Name wäre auch möglich: TextOderZahlEingeben. Üblich ist die obere Schreibweise.Tastenkombination: Strg +Umschalt +Kdie Umschalttaste ist direkt über der Strg TasteEine böse Falle: Es ist üblich, Makros in Verbindung mit der Umschalttaste zu starten. Würdest du z.B. die Kombination Strg + C wählen, dann überschreibst du diese Tastenkombination. Später würde dann mit Strg + C nicht mehr kopiert sondern dein Makro ausgeführt werden.Makro speichern in: Diese Arbeitsmappe Beschreibung: Eingabe von Texten und ZahlenEine Minisymbolleiste erscheint. Nicht beachten. Wir brauchen sie erst später. Mit OK bestätigen.Bild: MinileisteSchreibe in die Zelle A1: „Gewinn 1“ .....ohne Gänsefüßebestätige mit „Enter“ auf der Tastatur. Aufzeichnung beenden ....... unten! im BlattSchau? n wir mal, was wir angerichtet haben. Keine Ausreden!Im Modul 1 des Editors ist alles protokolliert. Einfach darauf klicken.Das Codefenster mit dem Makro erscheint.Das Modul 1 wurde von VBA angelegt. Immer wenn die Mappe geschlossen wurde, gibt es ein neues Modul. Wird die Mappe nicht geschlossen, erfolgt die Makroaufzeichnung im zuletzt angelegten Modul.Bild: Code 1. Makro:Was auf den ersten Blick auffällt:Blaue Schrift: Das sind vorbelegte VBA Schlüsselworte, braucht man sich nicht zu merken,.................................geht ja automatisch. Grüne Schrift: Das sind Kommentare. Also kein Code. Die grünen Zeilen werden von VBA ignoriert. Kommentare werden mit einen Hochkomma eingeleitet.Schwarze Schrift: Der Makrocode, das Programm. Rote Schrift: In roter Schrift wird die Codezeile gesetzt die einen Programmfehler enthält........................................................... Keine da. Die erste Zeile ist gemischt. Blau und Schwarz. In schwarz wurde der Makroname geschrieben. Der Name ist ein ausführbarer Code! Den Makronamen kann durch Löschen geändert werden. Dann wird an dieser Stelle der neue Namen eingeben und mit ( ) und Enter abgeschlossen.Überschreiben ist ebenfalls möglich, dann musst du die Klammern auch überschreiben.Der eigentliche Code ist schwarz. Range("A1").Select ActiveCell.FormulaR1C1 = "Gewinn1" Range("A2").SelectRange("A1").Select......Zelle A1 auswählen,.......A1 wird zur aktiven ZelleActiveCell.FormulaR1C1 = "Gewinn1"..........In die aktive Zelle Gewinn1 eintragen Range("A2").Select................Zelle A2 auswählen1. ZeileEs ist wichtig A1 in Gänsefüße zu setzten. Das ist der Zellenname, mit diesem kann die Zelle angesprochen werden.2. Zeilehier fällt auf, dass die Aktive Zelle ihren Wert mittels Gleichheitszeichen erhält. Der Wert wird in Gänsefüße gesetzt.Das müsste auch mit Range(„A1“) gehen?! wird noch untersucht.FormulaR1C1 kann weggelassen werden. 3. ZeileRange("A2").Select macht nur Sinn, wenn als nächstes die Zelle A2 bearbeitet werden soll. Makros ausführen Du musst die Makros testen.Es gibt mindestens 5 Möglichkeiten ein Makro zu starten:1. mit der festgelegten Tastenkombination 2. im Editor mit der Taste F8, der Einzelschrittmodus3. im Editor mit der Taste F5, das ganze Makro starten4. mit einem Makro5. mit einer SchaltflächeDie ersten drei Möglichkeiten probieren wir jetzt aus:1. Start mit der festgelegten Tastenkombination: Strg +Umschalt +KDas ist relativ schwierig. Lösche die Zelle A1, klicke in die Zelle D1Drücke auf Strg + Umschalt + KEs hat geklappt: Ruck zuck steht Gewinn1 in der Zelle A1. 2. Einzelschrittmodus: mit der Taste F8Im Einzelschrittmodus können wir rauskriegen, was nicht so toll warLösche im Excelblatt die die Zelle A1, klicke in die Zelle C5 — mal was anderes. klicke im Codefenster vor Sub in der ersten Zeile des MakrosBetätige die Taste F8die 1. Zeile wird gelb unterlegtGelb unterlegt bedeutet: wenn du wieder auf F8 drückst führe ich diese Codezeile aus...........................................so soll es sein, also:F8die erste Codezeile wird gelb, wie an der Ampel.............................peile F8 an und schau ins Excelblatt .......OKF8der schwarze Rahmen von C5 springt in die Zelle A1, wie geplant wird A1 zur aktiven ZelleF8........................anpeilen.......Weiterbeobachten........und Schussin die Zelle A1 wird Gewinn1 geschriebenF8........................anpeilen.......Weiterbeobachten........und Schussdie Zelle A2 wird zur aktiven ZelleF8........................anpeilen.......Weiterbeobachten........und Schussdas Makro wird beendet.3. Gesamtausführung: mit der Taste F5Lösche im Excelblatt die die Zelle A1, klicke in die Zelle C5F5........................anpeilen.......Excelblatt beobachten........und Schussmit affenartiger Geschwindigkeit wurde in A1 „Gewinn1“ geschriebenund die Zelle A2 aktiviert.Die anderen Möglichkeiten zeige ich später.
Wenke Geschrieben November 14, 2004 Autor Geschrieben November 14, 2004 Code optimierenSchön das Makro wird korrekt ausgeführt. Drei Aktionen um eine Zelle zufüllen, das dauert. Das wird verboten!Dazu müssen wir erst wissen, wie der Code funktioniert.Da hilft nur Makros bauen.Schreiben wir also das zweite Makro: Jetzt sollen Zahlen eingeben werdenZelle A2 bleibt im Excelblatt aktiviertMakrorecorder an: Im Dialogfeld „Makro aufzeichnen“ nichts eintragen nur mit OK bestätigenIn Zelle A2 „1“.......ohne Gänsefüße eintragenSieh in das Codefenster : Der Code für diese Aktion wird sofort geschrieben.Du musst nicht erraten: „Was bewirkt diese Codezeile“.Enter auf der Tastatur.Das pingelige und mühsame einrichten in der 1.Woche hat sich nun gelohnt.Makrorecorder ausHinweis: Das Excelblatt wurde wegen...............„Verschnaufens“ geschlossen.Dann wurde ein neues Modul angelegt, du kannst die Entstehung des Codes nicht sehen.Lösung: Einfach das Makro noch einmal aufzeichnen, an den Makronamen eine Zahl anhängen.Sonst kommt das Modul durcheinander. Der Code: ActiveCell.FormulaR1C1 = "1" Range("A3").SelectEs ist praktisch der gleiche Code wie im ersten Makro. Nur zwei Zeilen!Man muss nicht in eine Zelle springen, dann diese aktivieren und danach den Inhalt schreiben.Wenn wir jetzt noch ActiveCell durch Range A3 ersetzen?Zelle A2 löschen und mit F5 das Makro starten. Makro läuftKombinieren wir doch den Code wie oben gesagt.Programmier doch mal richtig. - alle Select werden entfernt - statt „ActiveCell.FormulaR1C1“ wird nur die Zelladresse geschrieben.Der neue Code:Range("A2")=1gleich mit F5 testen.Jetzt noch beide Makros zusammen fassen:Klicke im Codefenster unter das letzte Makro:Schreibe Sub und nach einen Leerschritt: Zahlen_und_Text mit Enter bestätigen.Die Makrohülle wird geschrieben.In der neuen Zeile gib diesen Code ein:Range („A1“) = “Gewinn 1“Range („A2“) = “1“Range („A3“) = “10“Range ("B1") =”Gewinn 2” ……………………………………nach den Gänsefüßen Enter und Aus die Maus.Hinweis: Nach der 1. Klammer wird dir eine Hilfe angeboten. Ist doch nett. Die Hilfe zeigt wie Bereiche eingeben werden. Schreibe einfach weiter.Das eigene Makro ausprobieren: Klicke vor Sub des neuen MakrosF5........................anpeilen.......Excelblatt beobachten........und SchussOhne Select zieht das Makro schneller als sein Schatten.Jetzt hast du den ersten universellen Baustein. Damit kannst du Überschriften und Zahlen eingeben. Du musst nur die Zellenadressen ändern.Du bist immer noch da? Mein Gott du bist ein harter Brocken. Ich werd dich schon erschrecken.Mach mal Pause.
Wenke Geschrieben November 14, 2004 Autor Geschrieben November 14, 2004 Zellinhalte löschenTrample nicht mit den Füßen, ich mach doch schon weiter.Empfehlung: Erst das komplette Posting lesen, dann BeginnenDie Eingaben waren alle falsch. Irrtum vom Amt. Der Zellinhalt von A3 bis B1 muss komplett gelöscht werden. Die Entf — Taste löscht nicht den gesamten Zellinhalt. Formatierungen z.B. werden damit nicht gelöscht. Wir müssen einen anderen Weg gehen.Mappe 1 öffnenKlicke in die Zelle C3Makrorecorder anMakroname: Zellinhalt_LöschenMakro speichern in: Persönliche ArbeitsmappeBei „Makro speichern in“ ist ein kleines Dreieck. Darauf klicken.Dort werden verschiedene Möglichkeiten zum Speichern der Makros angeboten.Mit der Auswahl „Persönliche Arbeitsmappe“ stehen die Makros allen Arbeitsmappen zur Verfügung. Damit kann man sich ein persönliches Nachschlagewerk schaffen.Beschreibung: Alles löschenBild: SpeicherorteZellen B1 bis A3 markieren...........................blöde Schreibweise, ich weißGehe im Excelblatt oben zu Bearbeiten — Löschen Bild LöschoptionenKlicke auf Alles. Recorder ausWie du gesehen hast, bietet das 4 Löschmöglichkeiten an. Was gelöscht wird ist selbsterklärend. Zeichne später den Code auch für diese Löschoptionen auf. Du musst ihn dir den Code nicht merken. Etwas bleibt immer hängen. Im Codefenster wird oft eine Hilfestellungen angeboten. Hast du verschiedene Bergriffe schon gesehen, lässt sich die Hilfe besser nutzen.Wo ist der Code? Bild: Persönliche ArbeitsmappeIm Projektexplorer ist die persönliche Arbeitsmappe mit dem Modul 1 hinzugekommen.Der Code: Range ("A1:B3").Select Selection .ClearWas neu ist:1. Zeile......nur der Doppelpunkt bei A1:B3............zusammen hängende Bereiche werden mit einem Doppelpunkt zusammengefasst.Selection . Clear......................................Clear war die LöschaktionMit dem Markieren haben wir ein Objekt erzeugt. Das Objekt hat Namen „Selection“ erhalten. Mit diesem Namen kann es angesprochen werden.Hier bedeutet der Code: „ausgewählten Bereich“ mit der Methode „Clear“ behandeln. Hä?Du arbeitest die ganze Zeit schon mit Objekten. Nur gemerkt hast du es noch nicht.Das lief alles hinter deinem Rücken ab. Oberfies so was!Objekte sind alles was du auf den Bildschirm sehen kannst. Das können die Arbeitsmappe, die Zellen der Arbeitsmappe, der ausgewählte Bereich, die Schrift in der Zelle sein.Alle Objekte haben Eigenschaften wie: Namen, Größe, Farben, Wert, Position, SchriftDie Eigenschaften können mit Methoden geändert werden.Das alles klingt für dich wie böhmische Dörfer. Das ist mir nicht anders gegangen. Merke dir erstmal nur, dass es solche Dinge wie Objekte, Eigenschaften und Methoden gibt.Eine allgemeine Regel für die Anwendung von Objekten und Methoden mit denen die Eigenschaften geändert werden:Name des Objektes gefolgt von einen Punk und der Methode.Lass dich nicht mit Fakten verwirren. Der Recorder zeichnet doch alles auf. Er hält diese Dinge erstmal für uns auseinander.Nach dem 20. Makro ist dir alles klar.Den Code straffen: Das Löschmakro sollte noch gestrafft werden.Auf das Objekt „Selection“ wurde die Methode „Clear“ angewendet. („A1:B3“) ist ebenfalls ein Objekt. Auch diesem Objekt kann auch die Methode „Clear“ verabreicht werden!Der Code dafür: Range(„A1:B3“).Clear Dazu führe das Makro Zahlen_und_Text noch mal aus. Es muss doch was zum Löschen vorhanden sein.Klicke unter das letzte Makro und gib die neue Zeile ein.Sub Zellinhalte_Löschen und Enter..............Das „e“ bei Zellinhalte muss sein, damit die Makros unterschieden werden können.danach Range(„A1:B3“).ClearMit F5 abchecken. Alles i.O?Dann hast du den 2. universellen Baustein. Wenn du etwas löschen willst, nur die Zelladressen löschen.Bevor wir es vergessen Lösche das erste Löschmakro. Etwas Übersicht ist viel Wert.
Wenke Geschrieben November 14, 2004 Autor Geschrieben November 14, 2004 Zellen ausschneiden und KopierenFür diese Aufgaben werden wir die Makros aufzeichnen und auf den Code straffen.Ich werde den aufgezeichneten Code wiedergeben und direkt darunter steht die Kurzform. Du bist ja jetzt Vollprofi, ich melde mich nur wenn es etwas Neues gibt.Kopieren und ausschneiden sind im Prinzip die gleichen Vorgänge. Beim Ausschneiden wird der Zellinhalt an eine andere Stelle verfrachtet. Die Ausgangszellen sind danach leer. Beim Kopieren bleibt der Zellinhalt der Herkunftszelle erhalten.Nach meiner glorreichen Löschaktion ist die Tabelle 1 wieder leer. Nichts zum Kopieren da.Es geht los: Makro Zahlen_und_Text ausführen. Klicke in die Zelle A5Makrorecorder an: Makroname: AusschneidenMakro speichern in: Diese Arbeitsmappe.....umstellen muss sein! Beschreibung: Zellinhalte ausschneidenMarkiere den Bereich A1:B3, drücke auf die Tasten Strg + XKlicke in die Zelle D1, drücke auf die Tasten Strg + VRecorder aus: Der Code:Range ("A1:B3").SelectSelection .CutRange ("D1") .SelectActiveSheet .PasteIm Code kaum Neues. Die ersten beiden Zeilen wie im Löschmakro.Cut ist die Methode „Ausschneiden“.Wie gehabt, zusammenfassen. Range ("D1") .Select ist auch klar.Hinzugekommen ist „ActiveSheet .Paste“. Der Code bedeutet: Inhalt aus der Zwischenablage einfügen. Das konntest du im Codefenster beobachten.Zeile 3 und 4, auch zusammenfassen. Der neue Code wäre:Range ("A1:B3") .CutRange ("D1") .ActiveSheet .PasteoderRange ("A1:B3") .CutRange ("D1") .PasteAusprobieren!! Egal welches Makro ausgeführt wird, eine Fehlermeldung mit ...........unterstützt diese Eigenschaft nicht........kracht dir auf den Bildschirm.Fehlermeldungen kann ich nicht leiden, also kein Bild. Du wirst sie sofort erkennen. Das Leben ist hart.Nach der Fehlermeldung auf Abbrechen.Die Methode „Cut“ braucht ein Objekt zum EinfügenWas kann man da machen? Alten Code stehen lassen und warten bis dir etwas Besseres einfällt oder in Netz einen besseren Code suchen.Hab ich schon mal gemacht.Schneide die Zellen D1:E3 wieder aus, füge sie in A1 wieder ein. Ohne Makro.Gib unter das letzte „Ausschneiden Makro“Sub Ausschneiden2 ein und Enter.Das Gerüst wird geschrieben.In die nächste Zeile:Range („A1:B3). ein.Fehler Zeile geändert....Gänsefüße fehlen richtig ist:Range („A1:B3"). ..............................................Der Punkt gehört dazu. Bild: VBA HilfeIm Codefenster wird Hilfe angeboten. Im aufgeklappten Fenster wird angezeigt was du mit dem Bereich A1:B3 machen kannst. Von vielen wirst du nicht wissen was es bedeutet. Hier hilft probieren.Schreibe weiter cu. Jetzt erkennst du auch das Cut. Der „Radiergummi“ davor besagt Cut ist eine Methode, die du auf das Objekt A1:B3 anwenden kannst.Klicke mit der Maus auf Cut. Betätige die Leertaste. Ein Schriftfeld wird eingeblendet. Schreibe einfach „Destination“ ab und gibt danach „:= „ ohne Gänsefüße ein. Mit „:=“ wird VBA gesagt wie die Methode Cut angewendet werden soll.Bestätige mit Enter. Eine Fehlermeldung saust aufs Tableau.VBA teilt dir in seiner schier grenzenlosen Güte mit:Gut ich schneide die Zellen A1:B3 aus. Wenn du mir sagst wo die Zellen hinkommen, könnte ich sogar damit anfangen. Da wollen wir ihm nicht im Wege stehen und sagen Range („D1“)Die Codezeile sieht dann so aus:Range („A1:B3).Cut Destination:= Range(„D1“) Fehler Zeile geändert....Gänsefüße fehlen richtig ist:Range („A1:B3").Cut Destination:= Range(„D1“) Testen!Lösche das erste Ausschneide-MakroDas war der dritte Streich, der nächste folgt so gleich.
Wenke Geschrieben November 14, 2004 Autor Geschrieben November 14, 2004 Formeln eingeben:Viel Neues hat sich auf dich gestürzt. Machen wir mal etwas Einfaches.Excel ohne Formeln hätte keinen Nutzen.VBA erlernen und die Formeln auslassen dito.Hauen wir rein.Klicke in die Zelle D1Recorder anMakroname: Formeln eingebenund OKIn der Zelle F1 sollen D2 und D3 addiert werden. Ich will Excel nicht überlasten. grins.Also in die Zelle „F1“: = D2+D3 eingeben. EnterMakrorecorder ausDer Code: Range("F1").Select ActiveCell.FormulaR1C1 = "=R[1]C[-2]+R[2]C[-2]" Range("F2").SelectDas wirst du kaum wieder brauchen.Man kann es glatt vergessen, und im verständlichen Teil weiter machen.Die 1. und 3. Zeile sind Klar. In der 2. sieht es wüst aus.ActiveCell.FormulaR1C1= geht auch noch aber dann....... nicht nervös werden.......Eine Formeleingabe ist erstmal nichts anderes als Text eingeben.Also = und den Text in Gänsefüße.Zur Formel gehört auch das Gleichheitszeichen.Da wären wir hier: ActiveCell.FormulaR1C1 = "=R[1] ...............von der aktiven Zelle eine Zeile (Row) nach untenC[-2] ..............von der aktiven Zelle 2 Spalten (Columns) nach links...............nach rechts wäre...... C[2] als ist die Zelle D2 gemeint das + Zeichen sollte kein Problem sein.Da wären wir hier:ActiveCell.FormulaR1C1 = "=R[1]C[-2]+ R[2]C[-2] ....Zwei Zeilen runter 2 Spalten nach links............also D3Jetzt können wir übersetzen:=R[1]C[-2]+R[2]C[-2]" bedeutet: D2+D3. Nur Angeber!Hier weiter! Probieren wir mal das: =“=D2+D3“Zelle F1 löschenSub Formeln2 Enter: Range („F1“) =“=D2+D3“ eingeben und OK.Da ist der Bus gerade so noch durchgekommen.Jetzt nur noch alle Formeln ins englische übersetzten. Dann sind wir mit den Formeln fertig. Trick AAber sicher doch:In der Zelle F1 steht das gute Stück welches übersetzt werden muss.Oben in der Formelzeile siehst du die Formel. klicke rein. Setze ein großes A dahinter. Bestätige mit Enter. Klar in der Zelle F1 gibt’s ne Fehleranzeige. Lass dich nicht aus der Ruhe bringen.Klicke in die Zelle F1Makrorecorder an: Makroname: Formeln3 und OKEntferne das A wieder. Schön der alte Code ist wieder da. Wozu ist das gut?Probier doch einmal mal, mit laufendem Recorder, eine richtig lange Formel einzugebenDer Nutzen dieser Methode besteht darin, dass du alle Formeln im Excelblatt fertig stellen kannst. Ist alles OK, hänge das A oder einen anderen Buchstaben an. Wirf den Recorder an und entferne die As wieder. Du wirst keine Eingabe vergessen und bist sehr schnell fertig. Übriges das geht auch mit richtigen Texten.
Wenke Geschrieben November 14, 2004 Autor Geschrieben November 14, 2004 Zellen kopierenMist gebaut, die Zellen A1 bis B3 sind jetzt leer. Ich hätte doch kopieren sollen. grins.Markiere im Excelblatt die Zellen D1:F3 und Strg + COben im Excelblatt auf Bearbeiten auf Inhalte einfügen klicken. Wie beim Löschen.Dieses Dialogfeld erscheint:Bild Inhalte einfügenMerke dir einfach so ungefähr was eingefügt werden kann. Diese Optionen wirst du bald wieder sehen, in englischer Sprache.Kopieren wir, schreiben wir den 1. Code ohne Recorder. Klar das kriegst du hin.Unter das letzte „Formel Makro“Sub Alles_Kopieren..................dann Enter Range(„D1:F3“). Das große Hilfefenster taucht wieder auf. Du kannst jetzt in Fenster nach unten scrollen. Suche dort den Begriff der fürs Kopieren zuständig ist. Oder gib nach dem Punkt co ein.Copy ist sofort sichtbar. Klicke drauf.Jetzt noch Destination mit dem Zielbereich anhängen.Der Code:Range ("D1:F3").Copy Destination :=Range ("A1")Klasse fertig.Die Copy Methode entspricht dem Alles unter Einfügen. Da Makro ist in Ordnung. Nur die Formel wird nicht immer gebraucht. Ab und an werden falsche Werte geliefert weil die Bezüge sich geändert haben. Dafür gibt es die Optionen im oberen Bild.Oft ist das nachteilig alles zu kopieren. Wir müssen an die anderen Optionen im obigen Bild rankommen.Erinnerst du dich noch an das „Ausschneiden Makro“. Dort tauchte der Begriff Paste auf.Damit kommt man in die Kopieroptionen.Unter das letzte MakroSub Kopieren2Range („D1:F3“).CopyRange („A1“).p eingeben.So’ ne Paste taucht auf, aber nur Spezial. Wenn die so arm sind, nehmen wir halt die.Drauf klicken und Leertaste. Da tauchen sie schon auf, die Optionen aus dem oberen Bild.Scroll sie einfach mal durch. Einige kommen dir bekannt vor. Genau, das Teil mit Values ist das Richtige. Deine Englischkenntnisse sind doch Klasse. Wehe es sagt wer was anders.Auf xlPasteValues klicken.Der vollständige Code:Range („D1:F3“).CopyRange („A1“).xlPasteValuesMit F5 ausprobieren.Das war’s für diese Woche.Im Modul 1 der neuen Arbeitsmappe sind die aufgezeichneten Makros zum Vergleich.Die Bausteine 1 bis 6 sind im Modul 2 der neuen Arbeitsmappe. Kopiere sie in deine persönliche Arbeitsmappe. Sie stehen dann immer zur Verfügung. Beim Löschen und Kopieren gab es mehre Möglichkeiten im Menü. Zeichne für diese Möglichkeiten die Makros auf. Danach straffe die Makros. Du musst nichts auswendig lernen, weil.......etwas........immer......hängen........bleibt.
Wenke Geschrieben November 14, 2004 Autor Geschrieben November 14, 2004 Baustelle HamburgprogrammÜblicherweise müssten wir uns jetzt über die Anordnung der Zeilen und Spalten des Programms Gedanken machen. Machen wir auch. Dazu wird..... die beste Programmiermethode wo gibt.........................genutzt: AbschreibenSituation:Der Nutzer darf nur in Zelle „A2“ die Tischnummer und in „B2“ die Jahreszahl eintragen!Usereingaben sind das ist der Supergau! Vermeide sie um jeden Preis.Alles andere soll mittels VBA erfolgen.Keine Tastenkombination vergeben. Nur die Module schreiben!Ablauf:Nimm die Mappe Monate und erstelle in einer Neuen Arbeitsmappe:in Tabelle1• die Zellen „A2 bis B4“ in B2 soll nur die Jahreszahl eingeben werden• jeder Jahreszahl in B2 soll 01.01. vorangestellt werden..........Funktion Verketten in einer beliebigen Zelle• von der Formel nur den Wert kopieren• über Menü Format Zellen Formatieren diesen Wert in ein Datum umwandeln• in der Zelle B2 soll dann das Datum in der Form 01.01.Jahreszahl stehenin Tabelle 2Der Nutzer soll keine Eingaben machen, wer weis was er einträgt. Zu hohes Risiko! grins• Die Einträge in den Zellen A1 bis A6 erstellen• wobei die Eingaben in A4 und A6 mit einer Formel übernommen werden• B1 bis D1 und AK1 erstellen• AK2 wird mit einer Formel aus Tabelle1 übernommen wird Die Formeln dürfen abgeschrieben werden, müssen aber als Modul vorliegenAlles muss mit VBA gemacht werdenAlle notwendigen Schritte hast du heute kennen gelernt. Du hast es drauf! Na dann viel Spaß beim knobeln.Wenn du schon beim Knobeln bist bringe in Erfahrung: Kann man aus der Jahreszahl schließen, ob ein Schaltjahr vorliegt?Ich ruhe mich jetzt aus! Beste GrüßeWenkePS:Du musst deinen Makrocode nicht unbedingt optimieren.In deinen Makros ist nur eins wichtig: Läuft der Code.Alles andere ist erstmal nebensächlich.Die Übersichtlichkeit spricht dafür.Die Geschwindigkeit kaum.Schön mit optimiertem Code ist das Makro 2 Minuten schneller. Na und?Da gibt’s die Nachricht 2,23% vom Umsatz halt 2 Minuten später.Über das Vorzeichen diskutieren wir späterBeste GrüßeWenke2.Woche.zip
Wenke Geschrieben November 21, 2004 Autor Geschrieben November 21, 2004 Klasse, das du dich soweit vorgekämpft hast.Die Auflösung:Der Code für die Zellen A1:B1:Texteingaben: sind Baustein 1Sub A1_und_B2Range („A1“) = „Tischnummer“Range („B1“) = “Jahr“..........Das ist genauer als der alte Eintrag.End SubZelle B2, das war schon etwas schwieriger:In Zelle B2 hat der User eine Jahreszahl eingeben z.B.: „2004“Das mit dem Umwandeln ist schon eine harte Nuss: Wenn du dieses Problem gelöst hast, Donnerwetter! Wenn nicht, Wenke ist schuld!Man bin ich am Montag ganz schön erschrocken. Ich hatte doch glatt übersehen, nach dem Verketten muss eine weitere Funktion genutzt werden. Noch dazu eine selten genutzte.Sonst hätte ich sie zumindest genannt.Irgendwas wird immer vergessen. Natürlich könnte man versuchen alles zu planen. Dann heißt es:Planst du noch, oder läuft es schon.Besser ist:Anfangen—Fehler, wie Zero hinnehmen—BerichtigenWas macht man eigentlich wenn man nicht weiter kommt? Die Fragen aller Fragen.Ganz einfach: Zerlege das Problem in kleinste Teile:Atomisieren: Damit lassen sich Probleme lösen!Bild: Das Problem zerlegenJetzt hast du schon mal einen Plan, er liegt meistens auf der Hand. Fast alles geht auf Anhieb. Für den kleinen Rest gibt es meistens irgendeine Funktion. Du musst sie nur finden.Excel kennt sich am besten mit Excel aus, frag ihn doch! Geh in die Funktionen und stelle deine Fräge!Bild Eine Fräge Excel:Es werden dir einige Funktionen angeboten. Unten steht gleich noch was sie machen, wie man sie bedient. Danke das genügt sagte der Staatsanwalt.Na dann geht’s los. Zuerst alles im Excelblatt.In der Zelle C21. mit „Verketten“ wird der Jahreszahl „01.01.“ vorgeschaltet. Die Zelle B2 angeben! Formeln eingeben: ist Baustein 4 mit Trick A nun sieht’s schon nach Datum aus — ist aber kein’s —Eine Funktion suchen, die aus Text ein Datum macht.Die findest du nun leicht. Also Funktion „DataWert“2. In die Zelle D2 die Funktion DataWert ausführen.Formeln eingeben: ist Baustein 4 mit Trick A Bedienung: Nur C2 eingeben„D2“ steht: die Zahl 38353Mit dieser Zahl zählt Excel die Tage seit 1900........oder soRecorder an3. alle A’s entfernen4. D2 nach B2 als Wert kopieren Werte kopieren: ist Baustein 6 ............................ein alter Hut5. Der Zelle B2 als Datum formatieren Mit Format — Zelle — Datum:6. Die Zellen C2 bis D2........Löschen Alles.........Oben mit dem Menü.............................Spuren verwischen...........................Recorder ausDer aufgezeichnete Code:Sub Lösung()' Lösung Makro' Makro am 16.11.2004 von a aufgezeichnet Range ("C1").Select ActiveCell.FormulaR1C1 = "=CONCATENATE (""01.01."", R [1] C [-1])" Range ("D1").Select ActiveCell.FormulaR1C1 = "=DATEVALUE (RC [-1])" Selection.Copy Range ("B2").Select Selection.PasteSpecial Paste: = xlPasteValues, Operation: =xlNone, SkipBlanks _ : = False, Transpose: =False Application.CutCopyMode = False Selection.NumberFormat = "m/d/yyyy" Range ("C1:D1").Select Selection.ClearEnd SubAlles bei Selection.PasteSpecial ist........wie böhmische Dörfer? Dann sieh dir das Bild „Inhalte einfügen“ noch einmal an. Einen Teil wird dann klarer.In den Modulen liegt der Code drei Varianten. Probiere sie alle mit F8 aus.Dein Code wird zusätzliche Zeilen in der Art: Range („C2“).Select enthalten. Das ist hängt damit zusammen, wie du die Eingaben in die Zellen abgeschlossen hast. Ich habe alles in der Eingabeleiste abgeschlossen. Da tauchen diese Select nicht auf.Denk einfach: Es gibt nur ein Kriterium für guten Code!Wenn der CODE LÄUFT ist er gut!und nun noch Tabelle2Das kann gleich im Codefenster erledigt werden. Einfach die Bausteine nutzen!Sub Tabelle2Range („A1“) = “Tag“Range („A2“) = „Hamburg“Range (“A3”) = “Januar”Range (“A4”) = “=Start! C2”Range (“A5”) =”Tisch”Range (“A6”) =”=Start! A2”Range (“B1”) =”1.”Range (“C1”) =”2.”Range (“D1”) =”3,”Range (“AK2”) =”Start! B2“End SubWeil das ganze so schwierig war schenke ich dir gleich zwei neue Bausteine.Beide werden gleich beim Öffnen der Arbeitsmappe ausgeführt.Mit dem ersten werden die Zellen A1 und B2 geschrieben.Das 2. beantwortet die Frage: Wann wurde diese Arbeitsmappe zuletzt geöffnet.Das ist ganz praktisch. Es hilft beim Suchen der letzten Permanenz.Der Code steht in der Mappe mit Automakro in „Diese Arbeitsmappe“. Einfach mal rum klicken.Beste GrüßeWenkeL_sung_Wo_2_.zip
Wenke Geschrieben November 21, 2004 Autor Geschrieben November 21, 2004 Die Schonzeit ist zu Ende, es wird ernst, die Butter zu den Fischen.Üblicherweise hat man am zu Beginn nur eine leere Arbeitsmappe. Du musst dir abhängig vom geplanten Programm Gedanken machen:• Was soll in welche Spalte, das ist Abhängig von:• was soll das Programm erledigen,• was Programmiere ich,• was erstelle ich mit VBADie Anordnung im Blatt „Monate“ ist soweit OK.Jede Monatspermanenz in einem Blatt ist sollten wir so lassen.aus dem ersten Posting:.....die Jahrespermanenz nach Monaten gegliedert, in einer Excelmappe stehen......Überleg mal was passiert wenn:Am 5. Januar soll die Jahrespermanenz geholt werden.Das Programm holt das ganze Jahr! Schade um die viele Zeit.Das Programm muss zusätzlich eine Schaltfläche erhalten, die den Import einer Jahres-Permanenz und eine mit die monatsweise importiert. Alles andere wird aus der Mappe Monate übernommen.Am effektivsten wäre es:• alle Blätter komplett zu übernehmen• nur die Codemodule werden programmiertHier lassen wir das Programm aus einer völlig leeren Mappe wachsen.Beim „erkunden einer Programmiersprache“ bringt diese vorgehensweise Vorteile.Damit steht für Blatt Januar der Ablauf fest:1. (fast) alle Texteingaben aus der Mappe „Monate“ übernehmen2. Eine Formel finden, die ermittelt ob ein Schaltjahr vorliegt.3. die Formel eintragen4. liegt ein Schaltjahr vor: das Programm verzweigen5. Aus der Jahreszahl ein kopierfähiges Datum machen 6. zusätzliche Blatter einfügen, sie sollen den Monatsnamen tragen7. Jede Arbeitsmappe soll den Namen des Permanenzjahres tragen. Gut wäre: „Per Ham Jahreszahl“ wie „Per Ham 20048. Button einbauen um das Makro mit der Maus auszulösenDas sieht gefährlich aus, viel Unbekanntes. Mal genauer hingucken:Punkt 1. Ein alter Hut Baustein 1 Punkt 2: die Lösung liegt irgendwo bei den Funktionen rumPunkt 3: Ein alter Hut Baustein 4 Punkt 4: muss irgendwas mit Schleifen sein PaukenPunkt 5: gerade erst gemacht, das Verketten DingsPunkt 6: schon gemacht, nur mit Recorder aufzeichnenPunkt 7: weiß nicht, brauche neuen BausteinPunkt 8: Sind im alten Programm da, rüberkopieren Das gucken hat sich gelohnt. Nur in den Punkten 4 und 7 liegt ein echtes Problem vor.Da wird was Neues gebraucht. Wenn man etwas braucht: Ebay? ......na, na!Eventuell sind Excelseiten die bessere Wahl, kost nix, einfach mal googln: Excel +VBAEs wird immer wieder vorkommen, dass du irgendwo nicht weiterkommst. Die Probleme atomisieren, hilft auch das nicht: Zuerst die anderen Punkte abarbeiten.Was beim Hausbau ein kleines Problem wäre, hier spielt es keine Rolle.Du kannst ohne weiteres:erst das Dach bauenim 2. Stock die Fenster einsetzendas Fundament setzenden Keller ausheben........Die VBA — Module machen es möglichKlar ist die Eintragungen in Tabelle 1 werden vom Automakro erstellt.Ist doch schon fertig. grinsAnfangen:• Kopiere die Arbeitsmappe, mit dem Automakro in den Ordner Hamburger Permanenzen.• Die Mappe erhält dort den neuen Namen: „Vorl Per Ham“• Öffne die neue Mappe „Vorl Per Ham“• Trage in die Zelle A2 „1“ für Tisch 1 ohne Gänsefüße• Trage in die Zelle B2 „2004“ ein......ein Schaltjahr sollte es schon sein.Arbeitsblätter umbenennen:Das erste Blatt soll nun seinen Namen „Start“ erhalten.Recorder an:Makroname: Blatt_umbenennen1ein Doppelklick auf die Zunge des ArbeitsblattesEingeben: StartKlick in Zelle A22.....sonst lässt sich der Recorder nicht ausschalten.Recorder ausCode guggen: Sheets ("Tabelle1").Select Sheets ("Tabelle1").Name = "Start" Range ("A22").SelectDie erste und die letzte Zeile sind überflüssig.Jedes mal schleicht sich der Select rein—RAUS!Neu dazugekommen ist:Sheets ("Tabelle1").Name = "Start"Die Bedeutung lässt sich leicht erraten:• Verpasse dem vorangehenden Objekt• den Namen der hinter dem Gleichheitszeichen, zwischen den Gänsefüßen steht.Dem Mutigen gehört die Welt, wenn er gelegentliche Beulen akzeptiert.Was passiert eigentlich, wenn ich dort einen Bereich wie Range(„B2“)? Ausprobieren! Achtung Tabelle 1 gibt es nicht mehr.Ab ins Codefenster:Sub Blatt_umbenennen2Sheets ("Tabelle2").Name = Range ("B2")End Subgleich mit F8 testen: Alles OK das hätten wir. Gleich als Baustein 7 speichern:Nimm die zusätzlichen Varianten gleich noch mit.Sub Blatt_umbenennen:‘Baustein 7 Sheets ("Tabelle1").Name = "Start"Sheets ("Tabelle2").Name = Range ("B2")ActiveSheet.Name = Range ("A3")Sheets(3).Name = Range("A3")End SubIn den beiden anderen istActiveSheet Bedeutung: Aktives BlattSheets(3) Bedeutung: drittes Blatt in der Mappe — Die Zahl immer eingeklammertIn ein anderes Blatt wechseln:Gib dem ersten Blatt wieder den Blattnahmen Start zurück.Jetzt müssen wir ins Blatt 2 Wenn du mit den Tastenkombinationen noch nicht so geübt bist probiere die Tastenkombinationen im Excelblatt.Recorder an:Makroname: nächstes_BlattDrücke auf die Strg Taste und dann auf die Bild ab Tasteegal wo sich die Aktive Zelle befindet, eine „1“ eintragenBild auf TasteRecorder ausCode guggen: ActiveSheet .Next .Select ActiveCell.FormulaR1C1 = "1" ActiveSheet .Previous .SelectAuch hier sollte es keine Schwierigkeiten geben.ActiveSheet .Next .Select...............Bedeutung: Blatt hinter dem Aktiven Blatt auswählenActiveSheet .Previous .Select..........Bedeutung: Blatt hinter dem Aktiven Blatt auswählenSelect darf bleiben, ausnahmsweiseSpeichern als Baustein 8Sub Blätter_auswählen: ‘Baustein 8 ActiveSheet.Next.Select ActiveSheet.Previous.SelectEnd SubNach dem wir uns nun ein Blatt einwählen können, kann es mit dem Programmieren losgehen.Holen wir uns vorher noch eine Schaltfläche für das Makro.Nehmen wir die aus der Mappe „Fenster anordnen“:Stelle sicher, dass im Blatt „Vorl Per Ham“ das Blatt „Start“ aktiv ist• Öffne zusätzlich die Mappe „Fenster anordnen“• Klicke in der Mappe „Fenster anordnen Tabelle 1, in die Zelle C16,• mit der Pfeil Ab—Taste nach C17• der Bereich unter der Schaltfläche ist schwarz umrandet.• den ganzen Bereich mit Strg + C kopieren.• die Mappe Vorl Per Ham aktivieren.• in die Zelle E6 klicken und mit Strg +V einfügen Beide Mappen bleiben geöffnet. • Drücke auf Strg, mit der rechten Maustaste auf die gelbe Schaltfläche in der Mappe • Vorl Per Ham ein Menü erscheint:Bild: Makro zuweisen 1in diesem Menü kannst du später die Beschriftung die Farbe und anderes ändern. probiere später einfach einiges aus.• nach dem Klick auf Makro zuweisen, erscheint dies Menü:Bild Makro zuweisen2Alle offenen Arbeitsmappen abwählen und Diese Arbeitsmappe auswählenwähle das Makro nächstes_Blatt aus und auf OK.die Schaltfläche ist jetzt scharf. Du kannst die Mappe Fenster schließen.Dieses Vorgehen erscheint auf dem ersten Blick kompliziert. Das ist es aber nicht. Damit sind noch andere Vorteile verbunden:• du brauchst dir Überschaltflächen keine Gedanken mehr zu machen• hast du einmal eine, hast du immer eine.• ist in einer Arbeitsmappe eine scharfe Schaltfläche, muss sie nur an die richtige Stelle kopiert werden.• Die Beschriftung und Makrozuweisung sind mit einem Klick geändert.Erhol dich erstmal und mach später weiter.Weiter mit der Mappe HamburgDie Bausteine sind in der persönlichen Arbeitsmappe gesichert.Wir sind immer noch in der Tabelle Start. Als nächstes müssen wir in die Tabelle2.Aber bitte per Makro, also ins Codefenster:Die Schaltfläche ist mit dem Makro „nächstes_Blatt“ verknüpft.• ändern wir erstmal den Makronamen in Vorl_Monate ()evtl.,• müssen die Klammern entfernt und neu gesetzt werde.• Im Makrocode bleibt nur: „ActiveSheet.Next.Select“• Alle anderen Makros löschen,• existieren in dieser Arbeitsmappe noch andere Module alle mit rechts Klick auf das Modul entfernen von Modul... exportieren Nein OK.• Pass bitte auf: !!!Die persönliche Arbeitsmappe nicht auswählen!!!• Die Arbeitsmappe schließen. Speichern :JA!Mit dem letzen punkt wird abgesichert das Excel bzw. VBA beim weiteren programmieren Neue Module anlegt. In das 1. Modul kommt ab jetzt nur noch der fertige Code für das Programm.Diesen Code solltest du im Einzelschritt Modus geprüft haben.Du weist schon, hinter jeder Ecke lauert eine Beule.Die anderen Module sind immer Löschkandidaten.Mappe auf:Überprüfen der Schaltfläche:Klick einfach drauf. Bist du im nächsten Blatt ist alles OK.Anmerkung:Ein Fehler kann nur entstehen wenn deine Schaltfläche nicht aktiviert ist. In diesem Fall gehe noch mal nach oben und die ganze Prozedur mit der Schaltfläche noch einmal durchlaufen.Im neuen Versuch setzte die Schaltfläche in die Zelle H6 ein.Hat alles geklappt schreiben wir jetzt den Code für Spalte A. Der Code wird gleich ins Makro Vorl_Monate geschrieben.Das sind die Baussteine 1 und 4: • Text und Zahlen eingeben• Formeln eingeben.• Notfalls nachsehen wies gemacht wirdDas Modul sieht jetzt so aus:Vorl_Monate()ActiveSheet.Next.SelectRange („A1“) = “Tag“Range („A2“) =”Hamburg”Range (“A3”) =”Januar”Range (“A4”) =”=Start! B2”Range (“A5”) =”Tisch”Range (“A6”)=”=Start!A2”End SubDie Schaltfläche testen. Der Code muss stimmen!Die Spalte A hätten wir. Es fehlt noch der Bereich B1 bis AF1.Klar könnten wir jetzt folgendes eingeben:Range(„B1“)=“1“Range(„C1“)=“2“..........Range(„AF1“)=“31“Der Code wird richtig lang. Wozu als Code eingeben, da wäre Excel schneller.Wie war das noch, Baustein 4, Formeln eingeben:Range("D1") = "=A1+D1"Damit wurde der Zelle ein Inhalt (eine Formel) zugewiesen.• Eine Zelle ist ein Objekt• Auch viele Zellen sind ebenfalls ein Objekt, wie beim Kopiermakro.OK, überlegen wir mal:Zelle B1 ist immer „1“ändern wir die Formel:Range("D1") = "=B1+1"..............Jetzt wird zu D1 eins zugezählt,.................................................soll ab C1 gelten alsoRange(„C1“) =“=B1+1“ .................................................jetzt das neue Objekt in mühsamer Kleinarbeit.................................................von mir ausgezählt „C1:AF1“ alsoRange (C1:AF1)=“=B1+1“..................................................sollte hinhauen aber noch..................................................voranstellen: Range(„B1“)=“1“Auf ins Codefenster und ausprobieren gleich auf ganze gehen Paroli!das hängen wir dem Makro Vorl_Monate an:Range („B1“) = “1“Range („C1:AF1“) = “=B1+1“Das neue Makro sieht jetzt so aus:Vorl_Monate ()ActiveSheet.Next.SelectRange („A1“) = “Tag“Range („A2“) =”Hamburg”Range (“A3”) =”Januar”Range (“A4”) =”=Start! B2”Range (“A5”) =”Tisch”Range (“A6”) =”=Start! A2”Range („B1“) = “1“Range („C1:AF1“) = “=B1+1“End SubSofort ausprobieren mit dem Klick auf die Schaltfläche.Der Code ist OK und sieht gleich manierlich aus.Das Speichern wir als Baustein: 9Sub Formeln_in_einen_Bereich ‘Baustein 9 Range („B1“) = “1“Range („C1:AF1“) = “B1+1“End SubAlles in allem sind wir wieder ein gutes Stück vorangekommen. Wir wollen doch nicht übertreiben.. Bitte daran denken: Nichts auswendig lernen. Es reicht wenn du Makros mehrmals aufzeichnest.Wenn es mal knapp wird hast du immer noch die Baussteine zum Nachschlagen.Die Bausteine und die heutigen Postings sind wie immer im Download.Bist du immer noch nicht satt: Schau dir das Verketten Dings noch mal an und überlege, wie man es ins Programm packt.Beste Grüße und viel Spaß beim Programmieren.Bis nächste WocheWenkeWoche_3.zip
Wenke Geschrieben November 21, 2004 Autor Geschrieben November 21, 2004 Wer seine Schaltflächen etwas persönlicher gestalten will:Dem empfehle ich diesen Link:Auszug aus der Seite:Techinfo: Excel-Makros Schritt für Schritt erfassen Schritt für Schritt: So können Sie Makros auch ohne Programmierkenntnisse in Excel eingebenDas Teil kann hier gefangen werden:http://www.add-in-world.com/katalog/techinfo-makro/Viele kostenlose Tools für Excel können ebenfalls geladen werden. Leider keine Rouletteprogramme. Man muss sich vorher registrieren lassen.Dafür erhält alle 14 Tage einen Excel „News -Letter“.Es ist für alle etwas dabei. Alle 14 Tage etwas Neues nicht schlecht.Das ist nicht so viel, daß man erschlagen wird,nicht zu wenig, daß man verhungert.Ich habe ihn ebenfalls abboniert. Den Spamverdacht schätze ich mit Null.Etwas Werbung für ihre Produkte sind im Letter. Für meine Begriffe ist das OK.Die Jungs und Mädels müssen leben um die Neuigkeiten unters Volk zu bringen.Beste GrüßeWenke
Wenke Geschrieben November 26, 2004 Autor Geschrieben November 26, 2004 Ein Posting mitten in der WocheAm letzten Sonntag war folgendes aktuell:• Blatt umbenennen.............3 Varianten in der pers. Arbeitsmappe• nächste Blatt und das Blatt vor dem aktiven Blatt aktivieren• Makrostart mit einer Schaltfläche• Makronamen im Codefenster ändernAn dieser Stelle hatte ich einen Schritt übersprungen, eine Fehlermeldung muss erscheinen.Die Erklärung dafür:Nach dem der Makroname „nächstes_Blatt“ in „Vorl_Monate geändert wurde,funktioniert der Button nicht mehr!Kein Wunder, das Makro „nächstes_Blatt“ gibt es nicht mehr. Das ist die Ursache der Fehlermeldung: „Excel kann das Makro nicht finden.Jetzt gibt es verschiedene Optionen:Du hastdie Schaltfläche mit dem neuen Makro Vorl_Monate verknüpftdas Makro Vorl_Monate mit F5 oder F8 geprüftoder es interessiert niemanden.In einem Rouletteforum, ist diese Möglichkeit nicht von der Hand zuweisen.Trifft die letzte Option zu stelle ich den Kurs ein.Für Rückfragen noch einmal den Plauderlink, vielleicht lag es nur daran. RückfragenNoch ein Hinweis: Den Code bitte nicht aus den Wordtext übertragen. Die Grammatik-Prüfung setzt hin und wieder an den Leerzeichen die den Code unbrauchbar machen können.Den Code immer aus den Excelmappen entnehmen.Beste GrüßeWenke,der gerade den Fehler entdeckt hat
Feuerstein Geschrieben Februar 28, 2005 Geschrieben Februar 28, 2005 (bearbeitet) Sorry Wenke,hab hinterher (nach posten) erst gesehen das Du darum bittest hier nicht zu posten. Hab mein Anliegen jetzt im anderen Thread veröffentlicht und hier jetzt zurückeditiert.Danke für die umfangreiche Beschreibung hier!Viele GrüßeMatthias s. bearbeitet Februar 28, 2005 von matthias s.
Recommended Posts
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden