Jump to content

„Programmieren mit dem Makrorecorder“


Recommended Posts

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ätze

Mit 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 Werbung
  • 2. 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 Fahrplan

Beim 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. Kein

e 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 nicht
  • Zweitens: soll es einfach sein, ich liebe sie, diese einfachen Sachen
  • Drittens: 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übersichtlich

und in einen Frage und Antwortteil. Dazu wird dieser Thread missbraucht: Kurs Programmierung mit Visual Basic

Hier 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

1. Excel einrichten:

Öffne eine neue Excelmappe

Überprüfe folgende Einstellungen in Excel, am besten schreibe ab.

Menü - Extras – Optionen – Ansicht

Die Bedeutung:

Klicke im Menü Extra auf Optionen, klicke auf Ansicht

Die rot markierten Einstellungen sollten übereinstimmen.

post-7-1099824830.jpg

Bild 1

Menü - Extras – Optionen – Berechnung

post-7-1099824997.jpg

Bild 2

Menü - Extras – Optionen – Bearbeiten

post-7-1099825116.jpg

Bild 3

Menü - Extras – Optionen – Allgemein

post-7-1099825225.jpg

Bild 4

Eine 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 5

post-7-1099825325.jpg

Bild 5

Die Visual – Basic - Symbolleiste erscheint und lungert auf dem Arbeitsblatt rum.

post-7-1099825419.jpg

Bild 6

Diese Symbolleiste mit der rechten Maustaste nach unten ziehen.

Sie verankert sich im Excelblatt.

post-7-1099825516.jpg

Bild 7

Das 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 6

Der 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.

post-7-1099826108.jpg

Bild 8

Mit der Maus:

den Editor nach links verschieben und das Excelblatt nach rechts verschieben.

Das Blatt sieht dann aus wie im Bild 8

Diese 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

Link zu diesem Kommentar
Auf anderen Seiten teilen

VBA Umgebung einrichten

Die 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 — Anpassen

post-7-1099828300.jpg

Bild 9

es erscheint:

post-7-1099828434.jpg

Bild 10

klicke auf die Registerkarte Symbolleisten und setze die Häkchen

Gehe zum

Menü: Extra — Optionen

post-7-1099828502.jpg

Bild 11

es erscheint:

Klicke auf die Registerkarte Editor und nimm diese Einstellungen vor

post-7-1099828572.jpg

Bild 12

Wenn 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.1

post-7-1099828648.jpg

Bild 13

Bei Markierungstext ist die Einstellung ebenfalls 3 mal Auto

post-7-1099828714.jpg

Bild 13.1

Die Einstellungen erfolgen durch Klick auf das umgedrehte Dreieck.

Klicke nun noch auf die Registerkarte Allgemein und stelle folgendes ein:

post-7-1099828786.jpg

Bild 14

wir sind damit durch. Endlich

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nur so zum Lesen

Computer 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 abgelenkt

Das 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 habe

Da kommt Freude auf!

Also:

Wenn er Rahmen streichen soll,......................sag es ihm auch

Wenn er sich melden soll,................................sag es ihm auch

Natü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 :lol: , nun ja, fast. :pfanne:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 holen

B. 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 stehen

die Aufgliederung der Permanenz soll nach Auswahl

2) in den Spalten B bis AF

oder

3) 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ählt

Es 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 Mal

mein Programm Hamburger Permanenzen als .zip Datei vom:

http://www.roulette-forum.de/index.php?showtopic=1704&st=30

Posting vom May 16 2004, 01:03

entpacke im Ordner „Programmieren“ die .zip Datei

Im Ordner „Programmieren“ erstellst du einen Unterordner „Hamburger Permanenzen“

Eine Woche Pause. Du hast ja genug zu tun. Nicht aufgeben, es wird einfacher. :lol::lol::pfanne:;-)

Beste Grüße

Wenke

Alle Postings wie versprochen: als Zip Datei

Wenke

Die_Postings.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 hast

B) 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) —Makro2

Der 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.com

lä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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 Arbeit

Das 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 eingeben

2. Zellinhalt löschen

3. Formeln in eine Zelle eingeben

4. Zellen kopieren

5. Zellen ausschneiden

6. neue Zellen einfügen

Das dürften so etwa 50% aller Aufgaben sein

Fü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 Schalter

Es 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 Blatt

Das Dialogfeld „Makro aufzeichnen“ erscheint:

post-7-1100425458.jpg

Bild Dialogfeld

Makroname: Text_oder_Zahl_eingeben

Im 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 +K

die Umschalttaste ist direkt über der Strg Taste

Eine 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 Zahlen

Eine Minisymbolleiste erscheint. Nicht beachten. Wir brauchen sie erst später. Mit OK bestätigen.

post-7-1100425553.jpg

Bild: Minileiste

Schreibe in die Zelle A1: „Gewinn 1“ .....ohne Gänsefüße

bestätige mit „Enter“ auf der Tastatur.

Aufzeichnung beenden ....... unten! im Blatt

Schau? 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.

post-7-1100425633.jpg

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. :wink:

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. :D

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").Select

Range("A1").Select......Zelle A1 auswählen,.......A1 wird zur aktiven Zelle

ActiveCell.FormulaR1C1 = "Gewinn1"..........In die aktive Zelle Gewinn1 eintragen

Range("A2").Select................Zelle A2 auswählen

1. Zeile

Es ist wichtig A1 in Gänsefüße zu setzten. Das ist der Zellenname, mit diesem kann die Zelle angesprochen werden.

2. Zeile

hier 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. Zeile

Range("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 Einzelschrittmodus

3. im Editor mit der Taste F5, das ganze Makro starten

4. mit einem Makro

5. mit einer Schaltfläche

Die ersten drei Möglichkeiten probieren wir jetzt aus:

1. Start mit der festgelegten Tastenkombination: Strg +Umschalt +K

Das ist relativ schwierig. :D

Lösche die Zelle A1, klicke in die Zelle D1

Drücke auf Strg + Umschalt + K

Es hat geklappt: Ruck zuck steht Gewinn1 in der Zelle A1.

2. Einzelschrittmodus: mit der Taste F8

Im Einzelschrittmodus können wir rauskriegen, was nicht so toll war

Lösche im Excelblatt die die Zelle A1, klicke in die Zelle C5 — mal was anderes. :topp:

klicke im Codefenster vor Sub in der ersten Zeile des Makros

Betätige die Taste F8

die 1. Zeile wird gelb unterlegt

Gelb unterlegt bedeutet: wenn du wieder auf F8 drückst führe ich diese Codezeile aus

...........................................so soll es sein, also:

F8

die erste Codezeile wird gelb, wie an der Ampel

.............................peile F8 an und schau ins Excelblatt :wink: .......OK

F8

der schwarze Rahmen von C5 springt in die Zelle A1, wie geplant wird A1 zur aktiven Zelle

F8........................anpeilen.......Weiterbeobachten........und Schuss

in die Zelle A1 wird Gewinn1 geschrieben

F8........................anpeilen.......Weiterbeobachten........und Schuss

die Zelle A2 wird zur aktiven Zelle

F8........................anpeilen.......Weiterbeobachten........und Schuss

das Makro wird beendet.

3. Gesamtausführung: mit der Taste F5

Lösche im Excelblatt die die Zelle A1, klicke in die Zelle C5

F5........................anpeilen.......Excelblatt beobachten........und Schuss

mit affenartiger Geschwindigkeit wurde in A1 „Gewinn1“ geschrieben

und die Zelle A2 aktiviert.

Die anderen Möglichkeiten zeige ich später.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Code optimieren

Schö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 werden

Zelle A2 bleibt im Excelblatt aktiviert

Makrorecorder an:

Im Dialogfeld „Makro aufzeichnen“ nichts eintragen nur mit OK bestätigen

In Zelle A2 „1“.......ohne Gänsefüße eintragen

Sieh in das Codefenster :topp: : 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 aus

Hinweis: 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. :wink:

Der Code:

ActiveCell.FormulaR1C1 = "1"

Range("A3").Select

Es 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äuft

Kombinieren 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")=1

gleich 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 Makros

F5........................anpeilen.......Excelblatt beobachten........und Schuss

Ohne 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? :wink: Mein Gott du bist ein harter Brocken. Ich werd dich schon erschrecken.

Mach mal Pause.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zellinhalte löschen

Trample nicht mit den Füßen, ich mach doch schon weiter.

Empfehlung: Erst das komplette Posting lesen, dann Beginnen

Die Eingaben waren alle falsch. Irrtum vom Amt. :wink: 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 öffnen

Klicke in die Zelle C3

Makrorecorder an

Makroname: Zellinhalt_Löschen

Makro speichern in: Persönliche Arbeitsmappe

Bei „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öschen

post-7-1100425817.jpg

Bild: Speicherorte

Zellen B1 bis A3 markieren...........................blöde Schreibweise, ich weiß

Gehe im Excelblatt oben zu Bearbeiten — Löschen

post-7-1100425960.jpg

Bild Löschoptionen

Klicke auf Alles.

Recorder aus

Wie 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?

post-7-1100426078.jpg

Bild: Persönliche Arbeitsmappe

Im Projektexplorer ist die persönliche Arbeitsmappe mit dem Modul 1 hinzugekommen.

Der Code:

Range ("A1:B3").Select

Selection .Clear

Was 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öschaktion

Mit 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, Schrift

Die 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“).Clear

Mit 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zellen ausschneiden und Kopieren

Fü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 A5

Makrorecorder an:

Makroname: Ausschneiden

Makro speichern in: Diese Arbeitsmappe.....umstellen muss sein!

Beschreibung: Zellinhalte ausschneiden

Markiere den Bereich A1:B3, drücke auf die Tasten Strg + X

Klicke in die Zelle D1, drücke auf die Tasten Strg + V

Recorder aus:

Der Code:

Range ("A1:B3").Select

Selection .Cut

Range ("D1") .Select

ActiveSheet .Paste

Im 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") .Cut

Range ("D1") .ActiveSheet .Paste

oder

Range ("A1:B3") .Cut

Range ("D1") .Paste

Ausprobieren!!

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ügen

Was 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.

post-7-1100426259.jpg

Bild: VBA Hilfe

Im 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. :wink::D:D

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-Makro

Das war der dritte Streich, der nächste folgt so gleich.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 D1

Recorder an

Makroname: Formeln eingeben

und OK

In der Zelle F1 sollen D2 und D3 addiert werden. Ich will Excel nicht überlasten. grins.

Also in die Zelle „F1“: = D2+D3 eingeben. Enter

Makrorecorder aus

Der Code:

Range("F1").Select

ActiveCell.FormulaR1C1 = "=R[1]C[-2]+R[2]C[-2]"

Range("F2").Select

Das 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 unten

C[-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 D3

Jetzt 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öschen

Sub 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. :wink:

Trick A

Aber 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 F1

Makrorecorder an:

Makroname: Formeln3 und OK

Entferne 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 einzugeben

Der 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zellen kopieren

Mist 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 + C

Oben im Excelblatt auf Bearbeiten auf Inhalte einfügen klicken. Wie beim Löschen.

Dieses Dialogfeld erscheint:

post-7-1100426460.jpg

Bild Inhalte einfügen

Merke 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 Makro

Sub Kopieren2

Range („D1:F3“).Copy

Range („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“).Copy

Range („A1“).xlPasteValues

Mit 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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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: Abschreiben

Situation:

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 stehen

in Tabelle 2

Der 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 vorliegen

Alles muss mit VBA gemacht werden

Alle 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üße

Wenke

PS:

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äter

Beste Grüße

Wenke

2.Woche.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

Klasse, das du dich soweit vorgekämpft hast.

Die Auflösung:

Der Code für die Zellen A1:B1:

Texteingaben: sind Baustein 1

Sub A1_und_B2

Range („A1“) = „Tischnummer“

Range („B1“) = “Jahr“..........Das ist genauer als der alte Eintrag.

End Sub

Zelle 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—Berichtigen

Was 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!

post-7-1101031315.jpg

Bild: Das Problem zerlegen

Jetzt 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!

post-7-1101031465.jpg

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 C2

1. 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 38353

Mit dieser Zahl zählt Excel die Tage seit 1900........oder so

Recorder an

3. alle A’s entfernen

4. D2 nach B2 als Wert kopieren

Werte kopieren: ist Baustein 6 ............................ein alter Hut

5. 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 aus

Der 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.Clear

End Sub

Alles 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 Tabelle2

Das kann gleich im Codefenster erledigt werden. Einfach die Bausteine nutzen!

Sub Tabelle2

Range („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 Sub

Weil 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üße

Wenke

L_sung_Wo_2_.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 VBA

Die 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 programmiert

Hier 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“ übernehmen

2. Eine Formel finden, die ermittelt ob ein Schaltjahr vorliegt.

3. die Formel eintragen

4. liegt ein Schaltjahr vor: das Programm verzweigen

5. Aus der Jahreszahl ein kopierfähiges Datum machen

6. zusätzliche Blatter einfügen, sie sollen den Monatsnamen tragen

7. Jede Arbeitsmappe soll den Namen des Permanenzjahres tragen. Gut wäre: „Per Ham Jahreszahl“ wie „Per Ham 2004

8. Button einbauen um das Makro mit der Maus auszulösen

Das 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 rum

Punkt 3: Ein alter Hut Baustein 4

Punkt 4: muss irgendwas mit Schleifen sein Pauken

Punkt 5: gerade erst gemacht, das Verketten Dings

Punkt 6: schon gemacht, nur mit Recorder aufzeichnen

Punkt 7: weiß nicht, brauche neuen Baustein

Punkt 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 +VBA

Es 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 bauen

im 2. Stock die Fenster einsetzen

das Fundament setzen

den Keller ausheben........

Die VBA — Module machen es möglich

Klar ist die Eintragungen in Tabelle 1 werden vom Automakro erstellt.

Ist doch schon fertig. grins

Anfangen:

• 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_umbenennen1

ein Doppelklick auf die Zunge des Arbeitsblattes

Eingeben: Start

Klick in Zelle A22.....sonst lässt sich der Recorder nicht ausschalten.

Recorder aus

Code guggen:

Sheets ("Tabelle1").Select

Sheets ("Tabelle1").Name = "Start"

Range ("A22").Select

Die 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_umbenennen2

Sheets ("Tabelle2").Name = Range ("B2")

End Sub

gleich 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 Sub

In den beiden anderen ist

ActiveSheet Bedeutung: Aktives Blatt

Sheets(3) Bedeutung: drittes Blatt in der Mappe — Die Zahl immer eingeklammert

In 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_Blatt

Drücke auf die Strg Taste und dann auf die Bild ab Taste

egal wo sich die Aktive Zelle befindet, eine „1“ eintragen

Bild auf Taste

Recorder aus

Code guggen:

ActiveSheet .Next .Select

ActiveCell.FormulaR1C1 = "1"

ActiveSheet .Previous .Select

Auch hier sollte es keine Schwierigkeiten geben.

ActiveSheet .Next .Select...............Bedeutung: Blatt hinter dem Aktiven Blatt auswählen

ActiveSheet .Previous .Select..........Bedeutung: Blatt hinter dem Aktiven Blatt auswählen

Select darf bleiben, ausnahmsweise

Speichern als Baustein 8

Sub Blätter_auswählen:

‘Baustein 8

ActiveSheet.Next.Select

ActiveSheet.Previous.Select

End Sub

Nach 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:

post-7-1101034235.jpg

Bild: Makro zuweisen 1

in 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ü:

post-7-1101034329.jpg

Bild Makro zuweisen2

Alle offenen Arbeitsmappen abwählen und Diese Arbeitsmappe auswählen

wä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 Hamburg

Die 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 wird

Das Modul sieht jetzt so aus:

Vorl_Monate()

ActiveSheet.Next.Select

Range („A1“) = “Tag“

Range („A2“) =”Hamburg”

Range (“A3”) =”Januar”

Range (“A4”) =”=Start! B2”

Range (“A5”) =”Tisch”

Range (“A6”)=”=Start!A2”

End Sub

Die 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 also

Range(„C1“) =“=B1+1“

.................................................jetzt das neue Objekt in mühsamer Kleinarbeit

.................................................von mir ausgezählt „C1:AF1“ also

Range (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.Select

Range („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 Sub

Sofort ausprobieren mit dem Klick auf die Schaltfläche.

Der Code ist OK und sieht gleich manierlich aus.

Das Speichern wir als Baustein: 9

Sub Formeln_in_einen_Bereich

‘Baustein 9

Range („B1“) = “1“

Range („C1:AF1“) = “B1+1“

End Sub

Alles 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 Woche

Wenke

Woche_3.zip

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 eingeben

Das 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. :smhair:

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üße

Wenke :warn:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein Posting mitten in der Woche

Am 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 ändern

An 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 hast

die Schaltfläche mit dem neuen Makro Vorl_Monate verknüpft

das Makro Vorl_Monate mit F5 oder F8 geprüft

oder

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ückfragen

Noch 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üße

Wenke,

der gerade den Fehler entdeckt hat

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 months later...

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üße

Matthias s.

bearbeitet von matthias s.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie ist deine Meinung dazu?

Du kannst jetzt schreiben und dich später registrieren. Bereits registrierter Teilnehmer? Dann melde dich jetzt an, um einen Kommentar zu schreiben.
Hinweis: Dein Beitrag wird nicht sofort sichtbar sein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Neu erstellen...