11.07.2015 Aufrufe

Einführung in das Programmieren mit VBA - zurück

Einführung in das Programmieren mit VBA - zurück

Einführung in das Programmieren mit VBA - zurück

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: Erster KontaktMit e<strong>in</strong>em Programm ist es möglich, <strong>das</strong>s der Computer direkt auf Aktivitäten des Benutzersreagieren kann. Es gibt unterschiedliche Arten von Programmen, die unterschiedlich Komplexs<strong>in</strong>d. So ist <strong>das</strong> Betriebssystem W<strong>in</strong>dows selbst nur e<strong>in</strong>, zugegeben sehr komplexes,Programm. Die Anwendung Excel besteht aus vielen kle<strong>in</strong>en Programmzeilen. Zusätzlich zuden vorhanden Programmen erlaubt es e<strong>in</strong>e Programmiersprache wie zum Beispiel <strong>VBA</strong>(Visual Basic) Benutzerdef<strong>in</strong>ierte Programme zu erstellen, welche helfen kannRout<strong>in</strong>earbeiten zu automatisieren.Aufgabe:Erstelle, unter Anleitung des Professors, folgendes Programm. Notiere dir gegebenenfallsArbeitsschritte, da<strong>mit</strong> du <strong>in</strong> der Lage bis <strong>das</strong> Programm alle<strong>in</strong>e nachzubauen.Fertiges Programm:Der Code h<strong>in</strong>ter dem Programm:Private Sub hallo_Click()hallo = MsgBox("Hallo!")End SubWas passiert, wenn man auf den Button „Hallo Computer“ klickt?E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 2 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienMerkblatt:Wie kann man <strong>in</strong> Excel Programme erstellen?Dazu benötigt man die Symbolleiste von VisualBasic und die Toolbox.Klickt man auf <strong>das</strong> Symbol , und anschließend auf e<strong>in</strong>en Button (der natürlichvorher erzeugt werden muss) so kommt man automatisch <strong>in</strong> die Entwurfsansicht. Hierkönnen Algorithmen e<strong>in</strong>gegeben werden.Der AlgorithmusE<strong>in</strong> Algorithmus ist e<strong>in</strong>e exakte Anleitung zur Lösung e<strong>in</strong>es ProblemsAllgeme<strong>in</strong>e Kennzeichen e<strong>in</strong>es Algorithmus:• Aufbau aus e<strong>in</strong>zelnen Schritten,jeder Schritt bezeichnet e<strong>in</strong>e Tätigkeit• Verständlichjeder Schritt muss dem der ihn ausführt (also dem Computer) verständlich se<strong>in</strong>• E<strong>in</strong>deutigWelche Tätigkeit soll wie ausgeführt werden? Welcher Schritt folgt?• AusführbarDer Computer muss diesen Schritt tatsächlich durchführen können!• EndlichSowohl endlicher Beschreibungstext, als auch endlich viele Schritte. DerAlgorithmus soll <strong>in</strong> endlicher Zeit ausführbar se<strong>in</strong>.• Null oder mehr E<strong>in</strong>gangsgrößen, 1 oder mehr Ausgangsgrößensonst ist der Algorithmus s<strong>in</strong>nlos.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 3 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: Nachbau e<strong>in</strong>er Funktion aus Excel <strong>in</strong> <strong>VBA</strong>Excel bietet Funktionen an, die alle bereits von Softwareentwicklern programmiert wurden.Mit Visual Basic ist es möglich diese Funktionen nachzubauen, oder auch weitere Funktionenzu konstruieren.Aufgabe:Baue die Funktion für <strong>das</strong> arithmetische Mitteln MITTELWERT(A4:E4) nach.Das fertige Programm kann so aussehen:Notwendiges Wissen:E<strong>in</strong>e Zelle des Excel Arbeitsplattes spricht man <strong>mit</strong> dem Befehlcells(zeilennummer,spaltennummer) an. So kann man den Inhalt auslesenoder die Zelle beschreiben.Achte darauf, <strong>das</strong>s der Variable summe, die Summe der Zahlen aus den angesprochenenZellen <strong>mit</strong> dem = - Zeichen zugewiesen wird.Es gilt allgeme<strong>in</strong>:Werte werden <strong>mit</strong> dem Zeichen: = Variablen oder Zellen zugewiesen.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 4 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: Nachbau e<strong>in</strong>er Funktion ausExcel <strong>in</strong> <strong>VBA</strong>Excel bietet Funktionen an, die alle bereits von Softwareentwicklern programmiert wurden.Mit Visual Basic ist es möglich diese Funktionen nachzubauen, oder auch weitere Funktionenzu konstruieren.Aufgabe:Baue die Funktion für <strong>das</strong> arithmetische Mitteln MITTELWERT(A4:E4) nach.Das fertige Programm kann so aussehen:Notwendiges Wissen:E<strong>in</strong>e Zelle des Excel Arbeitsplattes spricht man <strong>mit</strong> dem Befehlcells(zeilennummer,spaltennummer) an. So kann man den Inhalt auslesenoder die Zelle beschreiben.Achte darauf, <strong>das</strong>s der Variable summe, die Summe der Zahlen aus den angesprochenenZellen <strong>mit</strong> dem = - Zeichen zugewiesen wird.Es gilt allgeme<strong>in</strong>:Werte werden <strong>mit</strong> dem Zeichen: = Variablen oder Zellen zugewiesen.Program h<strong>in</strong>ter dem Button:Private Sub CommandButton1_Click()summe = Cells(4, 1) + Cells(4, 2) + Cells(4, 3) +Cells(4, 4) + Cells(4, 5)Cells(8, 2) = summe / 5End SubEs ist darauf zu achten, <strong>das</strong>s den Schülern deutlich wird, <strong>das</strong>s Methoden immer denselbenAufbau, Private Sub Bezeichnung_Ereignis(Übergabeparameter) undEnd Sub, haben. Ich empfehle, <strong>das</strong>s dieses Programm <strong>in</strong> e<strong>in</strong>em Blockdiagramm verdeutlichtbeziehungsweise von den Schülern niedergeschrieben wird.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 5 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: ASCII – CodeDef<strong>in</strong>ition: (nach DIN 44300)E<strong>in</strong> Code ist e<strong>in</strong>e Vorschrift für die e<strong>in</strong>deutige Zuordnung e<strong>in</strong>es Zeichenvorrates zudenjenigen e<strong>in</strong>es anderen Zeichenvorrates. Die Umwandlung von e<strong>in</strong>em <strong>in</strong> den anderenZeichenvorrat wird als Codierung bezeichnet.Aufgabe:Da der Computer alle Zeichen nur B<strong>in</strong>är, also <strong>in</strong> e<strong>in</strong>em Zahlensystem darstellen kann, werdenBuchstaben <strong>in</strong>tern als achtstellige b<strong>in</strong>äre Zahlen gespeichert. Diesen Zusammenhang kannman <strong>mit</strong> e<strong>in</strong>em Programm zeigen:Das fertige Programm kann so aussehen:ListBox1Notwendige Funktionen:ListBox1.Clear‚Leert die ListBox, sofern bereits Zeichen <strong>in</strong> dieser Box s<strong>in</strong>d’ListBox1.AddItem (z) & " -> " & Chr(z)‘Fügt e<strong>in</strong> Item am Ende der ListBox e<strong>in</strong>’E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 6 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: ASCII – CodeDef<strong>in</strong>ition: (nach DIN 44300)E<strong>in</strong> Code ist e<strong>in</strong>e Vorschrift für die e<strong>in</strong>deutige Zuordnung e<strong>in</strong>es Zeichenvorrates zudenjenigen e<strong>in</strong>es anderen Zeichenvorrates. Die Umwandlung von e<strong>in</strong>em <strong>in</strong> den anderenZeichenvorrat wird als Codierung bezeichnet.Aufgabe:Da der Computer alle Zeichen nur B<strong>in</strong>är, also <strong>in</strong> e<strong>in</strong>em Zahlensystem darstellen kann, werdenBuchstaben <strong>in</strong>tern als achtstellige b<strong>in</strong>äre Zahlen gespeichert. Diesen Zusammenhang kannman <strong>mit</strong> e<strong>in</strong>em Programm zeigen:Das fertige Programm kann so aussehen:ListBox1Notwendige Funktionen:ListBox1.Clear‚Leert die ListBox, sofern bereits Zeichen <strong>in</strong> dieser Box s<strong>in</strong>d’ListBox1.AddItem (z) & " -> " & Chr(z)‘Fügt e<strong>in</strong> Item am Ende der ListBox e<strong>in</strong>’E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 7 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienDas Programm h<strong>in</strong>ter dem Button:Private Sub ASCII_Click()ListBox1.ClearFor z = 32 To 255ListBox1.AddItem (z) & " -> " & Chr(z)NextEnd SubBesondere Aufmerksamkeit ist auf die For – Schleife zu richten. Den SchülerInnen solldeutlich gemacht werden, <strong>das</strong>s For – Schleifen <strong>in</strong> jeder Programmiersprache vorkommen undüberall e<strong>in</strong>en ähnlichen Aufbau haben.Weiterführende Beispiele:B<strong>in</strong>ärsystem und Zahlendarstellungen, Informationstheorien, Methoden derFehlererkennung, u.v.mE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 8 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienMerkblatt: SchleifenUm Wiederholungen e<strong>in</strong>es Arbeitsschrittes zu <strong>Programmieren</strong> stehen uns <strong>in</strong> <strong>VBA</strong> folgendedrei sogenannte Schleifen zur Verfügung.Aufbau der FOR – Schleife:FOR zählvariable = anfangswert TO endwertHier stehen AnweißungenNEXTDie Zählvariable, die beliebig benannt werden kann (meistens verwendet man die Buchstabeni, j und k), wird automatisch nach jedem durchlauf der Schleife um e<strong>in</strong>s erhöht. DieAnweißungen <strong>in</strong> der Schleife werden so lange wiederholt, bis die Zählvariable denangegebenen Entwert erreicht, und <strong>mit</strong> diesem Entwert <strong>das</strong> letzte mal durchgeführt. Dadurchist garantiert, <strong>das</strong>s die Schleife irgendwann den Entwert erreicht. Das Programm wird dannam Ende der Schleife, nach dem NEXT, fortgesetzt. Weiß man, wie oft e<strong>in</strong>e Schleifedurchlaufen werden muss, so empfiehlt es sich <strong>mit</strong> diesem Schleifentyp zu arbeiten. Er istweniger Fehleranfällig als die folgenden Schleifentypen.Aufbau der DO … LOOP UNTILDOHier stehen AnweißungenLOOP UNTIL Abbruchbed<strong>in</strong>gungOder:DO UNTIL Abbruchbed<strong>in</strong>gungHier stehen AnweißungenLOOPDie Schleife wird solange ausgeführt, bis die Abbruchbed<strong>in</strong>gung am Ende der Schleife wahrist. Der Programmierer ist hier und <strong>in</strong> allen anderen DO LOOP – Schleifen dafürverantwortlich <strong>das</strong>s die Schleife irgendwann term<strong>in</strong>iert (d.h. abgearbeitet ist und <strong>das</strong>Programm die Schleife verlassen kann).Im zweiten Fall wird die Schleife nicht mehr ausgeführt, wenn die Abbruchbed<strong>in</strong>gung wahrwird. Das Programm spr<strong>in</strong>gt sofort zum Ende der Schleife und arbeitet die Anweißungen nachdem Schlüsselwort LOOP ab.Aufbau der DO … LOOP WHILEDOHier stehen AnweißungenLOOP WHILE Abbruchbed<strong>in</strong>gungOder:DO WHILE Abbruchbed<strong>in</strong>gungHier stehen AnweißungenLOOPAuch hier ist der Programmierer für die Term<strong>in</strong>ierung der Schleife selbst verantwortlich. Imoberen Fall wird die Schleife so lange ausgeführt, bis die Abbruchbed<strong>in</strong>gung falsch wird. Imzweiten Fall wird die Schleife nicht ausgeführt, wenn die Abbruchbed<strong>in</strong>gung falsch wird, <strong>das</strong>Programm wird die Anweißungen nach dem Schlüsselwort LOOP ausführen.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 9 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: Verbesserter Algorithmus für <strong>das</strong>arithmetische MittelDas Übungsbeispiel: Nachbauen e<strong>in</strong>er Funktion, funktioniert nur dann, wenn genau <strong>in</strong> denfünf angegebenen Zellen e<strong>in</strong> Wert steht.Aufgabe:Lies unter Verwendung von Schleifen so lange Zahlen e<strong>in</strong> und summiere sie, bis du auf e<strong>in</strong>leeres Feld stößt. Berechne dann <strong>das</strong> arithmetische Mittel aller e<strong>in</strong>gegebenen unde<strong>in</strong>gelesenen Zahlen.Das fertige Programm kann so aussehen:Notwendige Funktionen:Es s<strong>in</strong>d ke<strong>in</strong>e neuen Funktionen notwendig.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 10 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: Verbesserter Algorithmus für<strong>das</strong> arithmetische MittelDas Übungsbeispiel: Nachbauen e<strong>in</strong>er Funktion, funktioniert nur dann, wenn genau <strong>in</strong> denfünf angegebenen Zellen e<strong>in</strong> Wert steht.Aufgabe:Lies unter Verwendung von Schleifen so lange Zahlen e<strong>in</strong> und summiere sie, bis du auf e<strong>in</strong>leeres Feld stößt. Berechne dann <strong>das</strong> arithmetische Mittel aller e<strong>in</strong>gegebenen unde<strong>in</strong>gelesenen Zahlen.Das fertige Programm kann so aussehen:Notwendige Funktionen:Es s<strong>in</strong>d ke<strong>in</strong>e neuen Funktionen notwendig.Das Programm h<strong>in</strong>ter dem Button:Private Sub CommandButton1_Click()summe = 0anzahl = 1End SubDo Until Cells(4, anzahl) = ""summe = Cells(4, anzahl) + summeanzahl = anzahl + 1Loopanzahl = anzahl - 1Cells(8, 2) = summe / anzahlE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 11 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienAn dieser Stelle wird erwartet, <strong>das</strong>s die Lehrperson die Lernenden auf die Problematik0/0 aufmerksam macht und <strong>das</strong> Programm auf zum Beispiel folgende Art verbessert:Private Sub CommandButton1_Click()summe = 0anzahl = 1Do Until Cells(4, anzahl) = ""LoopEnd Subsumme = Cells(4, anzahl) + summeanzahl = anzahl + 1anzahl = anzahl - 1If anzahl = 0 ThenCells(8, 2) = "undef"Else: Cells(8, 2) = summe / anzahlEnd IfE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 12 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: Der Passwort – GeneratorAufgabe zum Festigen des bisher gelernten, ASCII – Code, Zellen beschreiben, Schleifen.Aufgabe:Erstelle e<strong>in</strong> Programm, <strong>das</strong> acht zufällige Zeichen (Großbuchstaben, Kle<strong>in</strong>buchstaben undSonderzeichen) ausgibt, die e<strong>in</strong> Passwort ergeben.Das fertige Programm kann so aussehen:Notwendige Funktionen:RndErzeugt Zufallszahlen von 0 bis 1 aus der Menge der reellen ZahlenRnd * 90Erzeugt Zufallszahlen zwischen 0 und 90, durch die Funktion Integer(Rnd *90) kann man die Menge der reellen Zahlen auf die Menge der natürlichen Zahlene<strong>in</strong>schränken.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 13 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: Der Passwort – GeneratorAufgabe zum Festigen des bisher gelernten, ASCII – Code, Zellen beschreiben, Schleifen.Aufgabe:Erstelle e<strong>in</strong> Programm, <strong>das</strong> acht zufällige Zeichen (Großbuchstaben, Kle<strong>in</strong>buchstaben undSonderzeichen) ausgibt, die e<strong>in</strong> Passwort ergeben.Das fertige Programm kann so aussehen:Notwendige Funktionen:RndErzeugt Zufallszahlen von 0 bis 1 aus der Menge der reellen ZahlenRnd * 90Erzeugt Zufallszahlen zwischen 0 und 90, durch die Funktion Integer(Rnd *90) kann man die Menge der reellen Zahlen auf die Menge der natürlichen Zahlene<strong>in</strong>schränken.Das Programm h<strong>in</strong>ter dem Button:Private Sub generieren_Click()End SubFor zeichen = 2 To 9Cells(4, zeichen) = Chr(33 + Rnd * 90)NextE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 14 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienMerkblatt: If – Then – ElseDie Programme s<strong>in</strong>d so ausgerichtet, <strong>das</strong>s die Anweisungen schrittweise ausgeführt werden.Manchmal will man aber die auszuführenden Schritte abhängig von e<strong>in</strong>er, oder mehrererBed<strong>in</strong>gungen machen. E<strong>in</strong> E<strong>in</strong>griff <strong>in</strong> die sequenzielle Abarbeitung haben wir <strong>mit</strong> denSchleifen bereits kenne gelernt. Die IF- THEN – ELSE Abfragen s<strong>in</strong>d die zweite vom Pr<strong>in</strong>zipher <strong>in</strong> jeder Programmiersprache existierende Möglichkeit die Anweisungsreihenfolgen zubee<strong>in</strong>flussen.Grundlegender Aufbau:IF Bed<strong>in</strong>gung = bestimmter Wert THENENDIFAnweisungen …Ist die Bed<strong>in</strong>gung gleich dem angegebenen Wert, so werden die Anweisungen zwischenTHEN und ENDIF ausgeführt.In diesem Beispiel wird auf Gleichheit, im Zeichen =, abgeprüft. Es gibt aber <strong>in</strong> <strong>VBA</strong> auchandere Möglichkeiten zwei Ausdrücke zu vergleichen.Vergleichsoperatoren:< Kle<strong>in</strong>er als> Größer als= Gleich= Größer gleich UngleichWichtig ist, die Anweisungen werden genau dann ausgeführt, wenn die angegebenenBed<strong>in</strong>gung hält. Sprich die Aussage (Variable Vergleichsoperator Wert) ist wahr. Ist dieAussage falsch, so setzt <strong>das</strong> Programm im obigen Fall nach dem Schlüsselwort ENDIF <strong>mit</strong>den Anweisungen fort.Manchmal möchte man entweder e<strong>in</strong>e oder e<strong>in</strong>e andere Anweisung ausführen, <strong>in</strong> diesem Fallempfiehlt sich die IF – THEN – ELSE, Abfrage:IF Variabe Vergleichsoperator Wert THENAnweisungen, wenn Aussage wahrELSEAnweisungen, wenn Aussage falschENDIFWeiters gibt es die Möglichkeit die IF – Anweisungen zu Schachteln, oder im ELSE – Zweig<strong>mit</strong> der Anweisung ELSEIF e<strong>in</strong>e weitere IF – Anweisung e<strong>in</strong>zuleiten. Muss man auf mehrereBed<strong>in</strong>gungen gleichzeitig Abfragen und will man die Abfragen nicht Schachteln, so kann manzwei oder mehr Bed<strong>in</strong>gungen <strong>mit</strong> AND oder OR verknüpfen.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 15 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: E<strong>in</strong> SchalterJeder von uns weiß, wie e<strong>in</strong> Schalter funktioniert. E<strong>in</strong> mal klicken, und es fließt Strom <strong>in</strong> dieLeitung, <strong>das</strong> angeschlossene Gerät (zum Beispiel <strong>das</strong> Licht) läuft (bzw. leuchtet). In dieserAufgabe soll nun e<strong>in</strong> virtueller Schalter nachgebaut werden.Aufgabe:Erstelle e<strong>in</strong> Programm, <strong>mit</strong> e<strong>in</strong>em Button. Zu beg<strong>in</strong>n soll der Button auf AUS gestellt se<strong>in</strong>.Klickt man auf den Button, so wird der Schalter e<strong>in</strong>geschalten, und auf dem Button soll EINstehen. Bei nochmaligem Klicken ist der Schalter wieder ausgeschalten (am Button soll dannwieder AUS stehen).Das fertige Programm kann so aussehen:Notwendige Funktionen:SchalterName.CaptionDa<strong>mit</strong> kann man den Button direkt ansprechen, beschriften bzw. die Beschriftungändern.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 16 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: E<strong>in</strong> SchalterJeder von uns weiß, wie e<strong>in</strong> Schalter funktioniert. E<strong>in</strong> mal klicken, und es fließt Strom <strong>in</strong> dieLeitung, <strong>das</strong> angeschlossene Gerät (zum Beispiel <strong>das</strong> Licht) läuft (bzw. leuchtet). In dieserAufgabe soll nun e<strong>in</strong> virtueller Schalter nachgebaut werden.Aufgabe:Erstelle e<strong>in</strong> Programm, <strong>mit</strong> e<strong>in</strong>em Button. Zu beg<strong>in</strong>n soll der Button auf AUS gestellt se<strong>in</strong>.Klickt man auf den Button, so wird der Schalter e<strong>in</strong>geschalten, und auf dem Button soll EINstehen. Bei nochmaligem Klicken ist der Schalter wieder ausgeschalten (am Button soll dannwieder AUS stehen).Das fertige Programm kann so aussehen:Notwendige Funktionen:SchalterName.CaptionDa<strong>mit</strong> kann man den Button direkt ansprechen, beschriften bzw. die Beschriftungändern.Das Programm h<strong>in</strong>ter dem Button:Private Sub Schalter_Click()End SubIf Schalter.Caption = "EIN" ThenSchalter.Caption = "AUS"ElseSchalter.Caption = "EIN"End IfE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 17 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: Schachbrett:Dieses Blatt dient zum Wiederholen der gelernten Bauste<strong>in</strong>e. Es kann dazu dienen,Algorithmen <strong>mit</strong> Blockdiagrammen oder Flussdiagrammen zu strukturieren, um dieVerschachtelung der Befehle sichtbar zu machen.Aufgabe:E<strong>in</strong> Schachbrett besteht aus 32 Feldern (8*8), ist quadratisch und die Quadrate am Brett habenabwechselnd die Farbe weiß und schwarz. Erstelle e<strong>in</strong> Programm, welches <strong>in</strong> Excel e<strong>in</strong> Feldder Größe 8*8 schwarz – weiß e<strong>in</strong>färbt.Das fertige Programm kann so aussehen:Notwendige Funktionen:Cells(zeile, spalte).Interior.ColorIndex = 1Dieser Befehl färbt die Zelle an der Stelle (zeile, spalte) schwarz. (1 entsprichtschwarz, 0 entspricht weiß).Weiters kann der Befehl mod hilfreich se<strong>in</strong>. Mit:spalte Mod 2berechnet sich <strong>VBA</strong> den Rest bei der Division der Spaltenanzahl durch 2. In diesemFall kann der Rest = 0 oder =1 se<strong>in</strong>.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 18 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: Schachbrett:Dieses Blatt dient zum Wiederholen der gelernten Bauste<strong>in</strong>e. Es kann dazu dienen,Algorithmen <strong>mit</strong> Blockdiagrammen oder Flussdiagrammen zu strukturieren, um dieVerschachtelung der Befehle sichtbar zu machen.Aufgabe:E<strong>in</strong> Schachbrett besteht aus 32 Feldern (8*8), ist quadratisch und die Quadrate am Brett habenabwechselnd die Farbe weiß und schwarz. Erstelle e<strong>in</strong> Programm, welches <strong>in</strong> Excel e<strong>in</strong> Feldder Größe 8*8 schwarz – weiß e<strong>in</strong>färbt.Das fertige Programm kann so aussehen:Notwendige Funktionen:Cells(zeile, spalte).Interior.ColorIndex = 1Dieser Befehl färbt die Zelle an der Stelle (zeile, spalte) schwarz. (1 entsprichtschwarz, 0 entspricht weiß).Weiters kann der Befehl mod hilfreich se<strong>in</strong>. Mit:spalte Mod 2berechnet sich <strong>VBA</strong> den Rest bei der Division der Spaltenanzahl durch 2. In diesemFall kann der Rest = 0 oder =1 se<strong>in</strong>.Das Programm h<strong>in</strong>ter dem Button Ausfüllen:Private Sub faerben_Click()‚Variablen, ab hier soll e<strong>in</strong> 8*8 Felder großer Bereiche<strong>in</strong>gefärbt werden’zeile = 3E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 19 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienspalte = 1Do While spalte < 9Do While zeile < 11‘E<strong>in</strong>färben: Schwarz’Cells(zeile, spalte).Interior.ColorIndex = 1‚Gehe zwei Felder weiter’zeile = zeile + 2Loop‘Gehe <strong>in</strong> die nächste Spalte’spalte = spalte + 1‘B<strong>in</strong> ich <strong>in</strong> e<strong>in</strong>er “geraden” Spalte, so färbe ich dieFelder 2,4,6,81, 3, 5, 7; ansonsten färbe die Felder 1, 3,5, 7’If spalte Mod 2 = 0 Thenzeile = 4Elsezeile = 3End IfLoopEnd SubDas Programm h<strong>in</strong>ter dem Button Leeren:Private Sub CommandButton1_Click()For spalte = 1 To 8For zeile = 3 To 10Cells(zeile, spalte).Interior.ColorIndex = 0NextNextEnd SubE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 20 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: Message - BoxManchmal will man e<strong>in</strong>en User vor den folgen se<strong>in</strong>er Tätigkeit warnen, oder e<strong>in</strong>fach nur <strong>das</strong>Gefühl ver<strong>mit</strong>teln, <strong>das</strong>s der Computer <strong>mit</strong> dem User kommuniziert. Will man zum Beispiele<strong>in</strong>e Datei löschen, die gerade <strong>in</strong> Verwendung ist, so reagiert W<strong>in</strong>dows <strong>mit</strong> e<strong>in</strong>em Pop-Up,oder e<strong>in</strong>er Message – Box. Diese kann man auch <strong>in</strong> <strong>VBA</strong> programmieren.Aufgabe:Programmiere e<strong>in</strong>e Message – Box, die beim betätigen des Buttons „Hallo“ aufgeht und denBenutzer grüßt. Außerdem soll der Computer Fragen: „Geht es dir gut?“ und dieAntwortmöglichkeiten JA und NEIN zur Verfügung stellen. Selbstverständlich soll dieMessage-Box auf die Antworten des Users angemessen reagieren.Notwendige Funktionen:Variable = MsgBox(„Text“, Option)Das Ergebnis des Aufrufes MsgBox() muss nicht <strong>in</strong> e<strong>in</strong>er Variable abgefangenwerden, aber so ist es mir möglich auf die Reaktion des Users erneut zu reagieren.Um die Alternativen JA und NEIN anzeigen zu können benötigen wir die Option 4.Default-mäßig wird nur der OKAY – Button angeboten (Option = 0).Der Rückgabewert der Funktion ist für JA = 6 für Ne<strong>in</strong> = 7.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 21 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: Message - BoxManchmal will man e<strong>in</strong>en User vor den folgen se<strong>in</strong>er Tätigkeit warnen, oder e<strong>in</strong>fach nur <strong>das</strong>Gefühl ver<strong>mit</strong>teln, <strong>das</strong>s der Computer <strong>mit</strong> dem User kommuniziert. Will man zum Beispiele<strong>in</strong>e Datei löschen, die gerade <strong>in</strong> Verwendung ist, so reagiert W<strong>in</strong>dows <strong>mit</strong> e<strong>in</strong>em Pop-Up,oder e<strong>in</strong>er Message – Box. Diese kann man auch <strong>in</strong> <strong>VBA</strong> programmieren.Aufgabe:Programmiere e<strong>in</strong>e Message – Box, die beim betätigen des Buttons „Hallo“ aufgeht und denBenutzer grüßt. Außerdem soll der Computer Fragen: „Geht es dir gut?“ und dieAntwortmöglichkeiten JA und NEIN zur Verfügung stellen. Selbstverständlich soll dieMessage-Box auf die Antworten des Users angemessen reagieren.Notwendige Funktionen:Variable = MsgBox(„Text“, Option)Das Ergebnis des Aufrufes MsgBox() muss nicht <strong>in</strong> e<strong>in</strong>er Variable abgefangenwerden, aber so ist es mir möglich auf die Reaktion des Users erneut zu reagieren.Um die Alternativen JA und NEIN anzeigen zu können benötigen wir die Option 4.Default-mäßig wird nur der OKAY – Button angeboten (Option = 0).Der Rückgabewert der Funktion ist für JA = 6 für Ne<strong>in</strong> = 7.Das Programm h<strong>in</strong>ter dem Button:Private Sub hallo_Click()Entscheidung = MsgBox("Hallo! Geht es dir gut?", 4)If Entscheidung = 6 ThenMsgBox "Das it ja wunderbar!"ElseMsgBox "Na dann gute Besserung!"End IfEnd SubE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 22 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienSammlung: Message BoxUm e<strong>in</strong>e Message Box (zu Deutsch: Dialogfelder) zu erstellen verwendet man <strong>in</strong> <strong>VBA</strong> denBefehl MsgBox(„Text“, Code ), wobei <strong>in</strong> der Klammer der Text steht, welcher von derBox ausgegeben wird. In diesem Fall hat der Benutzer nur mehr die Möglichkeit se<strong>in</strong>E<strong>in</strong>verständnis bekannt zu geben, da ausschließlich der Button: OK ersche<strong>in</strong>t.Um den Benutzer mehr Auswahlmöglichkeiten zu geben bietet <strong>VBA</strong> folgende Codierungenan:CodeButton0 Es wird nur „OK“ angezeigt1 „OK“ und „Abbrechen“ wird angezeigt2 „Abbrechen“, „Wiederholen“ und „Ignorieren“3 „Ja“, „Ne<strong>in</strong>“ und „Abbrechen“4 „Ja“ und „Ne<strong>in</strong>“5 „Wiederholen“ und „Abbrechen“Klickt der Benutzer auf e<strong>in</strong>en Button, so wird e<strong>in</strong> Signal an <strong>das</strong> Programm zurückgesendet.Diese kann man <strong>mit</strong> e<strong>in</strong>er beliebigen Variabel (Integer) abfangen. Zum Beispiel durch denBefehl: Entscheidung = MsgBox("Hallo! Geht es dir gut?", 4)(Siehe oben)Dabei verbergen sich h<strong>in</strong>ter den Buttons folgende Integer – Zahlen:Wert Button1 OK2, 3 Abbrechen4 Wiederholen5 Ignorieren6 Ja7 Ne<strong>in</strong>Erst dadurch ist es möglich auf die Aktion des Benutzers zu reagieren. Ob der Computer <strong>das</strong>gewünschte macht, liegt <strong>in</strong> der Hand des Programmierers.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 23 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: LottoDie Wahrsche<strong>in</strong>lichkeit bei Lotto e<strong>in</strong>en 6er zu tippen ist <strong>mit</strong> ca. 1: 8 Mio. sehr ger<strong>in</strong>g. Wennman jedoch e<strong>in</strong>mal e<strong>in</strong>en 6er oder auch nur e<strong>in</strong>en 5er tippt, so möchte man den Gew<strong>in</strong>n <strong>mit</strong>möglichst wenig anderen Spielteilnehmern teilen. Da die Menschen jedoch dazu neigen aufTippsche<strong>in</strong>en Muster zu tippen, s<strong>in</strong>d Tipphilfen immer sehr gefragt.Aufgabe:Programmiere <strong>in</strong> <strong>VBA</strong> e<strong>in</strong>en Lottosche<strong>in</strong> nach. Durch betätigen e<strong>in</strong>es Buttons sollen sechszufällig ausgewählte Zahlen am Sche<strong>in</strong> angezeichnet werden.Das fertige Programm soll <strong>in</strong> etwa so aussehen:Notwendige Funktionen:Interior.ColorIndex = 0Befehl zum E<strong>in</strong>färben von Zellen, (0=weiß)Rnd * 45Dieser Befehl erzeugt Zufallszahlen zwischen 0 und 45 (reelle Zahlen)Zahl1 Mod Zahl2Der Modulooperator gibt mir den Rest zurück, der entsteht, wenn die Zahl1 durch dieZahl2 dividiert wird.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 24 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: LottoDie Wahrsche<strong>in</strong>lichkeit bei Lotto e<strong>in</strong>en 6er zu tippen ist <strong>mit</strong> ca. 1: 8 Mio. sehr ger<strong>in</strong>g. Wennman jedoch e<strong>in</strong>mal e<strong>in</strong>en 6er oder auch nur e<strong>in</strong>en 5er tippt, so möchte man den Gew<strong>in</strong>n <strong>mit</strong>möglichst wenig anderen Spielteilnehmern teilen. Da die Menschen jedoch dazu neigen aufTippsche<strong>in</strong>en Muster zu tippen, s<strong>in</strong>d Tipphilfen immer sehr gefragt.Aufgabe:Programmiere <strong>in</strong> <strong>VBA</strong> e<strong>in</strong>en Lottosche<strong>in</strong> nach. Durch betätigen e<strong>in</strong>es Buttons sollen sechszufällig ausgewählte Zahlen am Sche<strong>in</strong> angezeichnet werden.Das fertige Programm soll <strong>in</strong> etwa so aussehen:Notwendige Funktionen:Interior.ColorIndex = 0Befehl zum E<strong>in</strong>färben von Zellen, (0=weiß)Rnd * 45Dieser Befehl erzeugt Zufallszahlen zwischen 0 und 45 (reelle Zahlen)Zahl1 Mod Zahl2Der Modulooperator gibt mir den Rest zurück, der entsteht, wenn die Zahl1 durch dieZahl2 dividiert wird.So könnte e<strong>in</strong> vorläufiges Programm h<strong>in</strong>ter dem Button aussehen:Private Sub Tipp_Click()‘ Initialisierungsrout<strong>in</strong>enFor i = 3 To 10For j = 1 To 8Cells(i, j).Interior.ColorIndex = 0NextNext‘Hier beg<strong>in</strong>nt die eigentliche ArbeitFor i = 1 To 6Zahl = Int(1 + Rnd * 45)E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 25 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienspalte = Int((Zahl - 1) Mod 7)zeile = Int((Zahl - 1) / 7)Cells(zeile + 3, spalte + 1).Interior.ColorIndex =6NextEnd SubE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 26 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: Verbesserter LottoalgorithmusE<strong>in</strong> Programmieranfänger hat e<strong>in</strong>en Lottotipp <strong>mit</strong> folgendem Algorithmus simuliert:Private Sub Tipp_Click()For i = 3 To 10For j = 1 To 8Cells(i, j).Interior.ColorIndex = 0NextNextFor i = 1 To 6Zahl = Int(1 + Rnd * 45)spalte = Int((Zahl - 1) Mod 7)zeile = Int((Zahl - 1) / 7)Cells(zeile + 3, spalte + 1).Interior.ColorIndex=6NextEnd SubAufgabe 1:Kommentiere den Code aus und beschreibe <strong>in</strong> eigenen Worte, wie der Algorithmus arbeitet.Als der Programmierer se<strong>in</strong>en ersten Lottotipp <strong>mit</strong> se<strong>in</strong>em neuen Programm ausprobierenwill, schlägt ihm der Computer folgende Zahlen vor:Aufgabe 2:Wo liegt de<strong>in</strong>er Me<strong>in</strong>ung nach der Fehler. Wie könnte man den Algorithmus verbessern?Versuche <strong>in</strong> eigenen Worten e<strong>in</strong>en Verbesserungsvorschlag zu beschreiben, und <strong>in</strong> e<strong>in</strong>emBlockdiagramm zu strukturieren.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 27 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: Verbesserter LottoalgorithmusE<strong>in</strong> Programmieranfänger hat e<strong>in</strong>en Lottotipp <strong>mit</strong> folgendem Algorithmus simuliert:Private Sub Tipp_Click()Beg<strong>in</strong>n der Rout<strong>in</strong>e. Wird der Button <strong>mit</strong> dem Namen Tipp betätigt (daher Click), sowerden die folgenden Codezeilen ausgeführt:For i = 3 To 10For j = 1 To 8Cells(i, j).Interior.ColorIndex = 0NextNextDie 1. For – Schleife dient dazu <strong>das</strong> eventuell bereits gefärbte Felder wieder weißwerden. Dabei geht die äußere Schleife von 3 bis 10 über die Zeilen, und die <strong>in</strong>nereSchleife von 1 bis 8 über die Spalten. Siehe Cells(i,j).For i = 1 To 6Zahl = Int(1 + Rnd * 45)Hier werden die Zufallszahlen erzeugt (von 0 bis 45). Da diese Zahlen imAllgeme<strong>in</strong>en reelle Zahlen s<strong>in</strong>d, muss ich sie noch zu Integer – Zahlen machen.spalte = Int((Zahl - 1) Mod 7)Hier wurde die Spalte berechnet, <strong>in</strong> der die Zahl ist, die ich E<strong>in</strong>färben möchte. (DerRest bei Division durch 7, denn ich habe 7 Spalten)zeile = Int((Zahl - 1) / 7)Die Zeilen erhalte ich als den Integer – Anteil bei der Division durch 7, denn ich habe6 Zeilen.Cells(zeile + 3, spalte + 1).Interior.ColorIndex=6Nachdem ich die Zeilen und Spalten noch zurecht gerückt habe (denn ich fange <strong>mit</strong>dem Tippsche<strong>in</strong> erst bei Zelle (3,1) an), kann die betreffende Zeile e<strong>in</strong>gefärbt werden.NextEnde der For - SchleifeEnd SubEnde der Rout<strong>in</strong>eAufgabe 1:Kommentiere den Code aus und beschreibe <strong>in</strong> eigenen Worte, wie der Algorithmus arbeitet.Als der Programmierer se<strong>in</strong>en ersten Lottotipp <strong>mit</strong> se<strong>in</strong>em neuen Programm ausprobierenwill, schlägt ihm der Computer folgende Zahlen vor:E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 28 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienAufgabe 2:Wo liegt de<strong>in</strong>er Me<strong>in</strong>ung nach der Fehler. Wie könnte man den Algorithmus verbessern?Versuche <strong>in</strong> eigenen Worten e<strong>in</strong>en Verbesserungsvorschlag zu beschreiben, und <strong>in</strong> e<strong>in</strong>emBlockdiagramm zu strukturieren.Ergänzt man den Code wie folgt, so stellt man fest, <strong>das</strong>s e<strong>in</strong>fach gewisse Zahlen doppeltgezogen wurden:Private Sub Tipp_Click()For i = 3 To 10For j = 1 To 8Cells(i, j).Interior.ColorIndex = 0NextNextFor i = 1 To 6Zahl = Int(1 + Rnd * 45)Cells(11, i) = Zahlspalte = Int((Zahl - 1) Mod 7)zeile = Int((Zahl - 1) / 7)Cells(zeile + 3, spalte + 1).Interior.ColorIndex =6NextEnd SubBeim nächsten Tipp erhält der Programmierer folgende Rückmeldung:E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 29 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienDer Algorithmus lässt also zu, <strong>das</strong>s gewisse Zahlen zweimal (oder öfters) gezogen werden.Dieses Manko wäre zu beheben, wenn nach Ziehen e<strong>in</strong>er neuen Zahl überprüft wird, ob dieseZahl bereits gezogen wurde. Nachdem die Schüler ihre Verbesserungsvorschläge sprachlichbeschreiben haben, kann e<strong>in</strong> Vorschlag aufgegriffen werden, der nun <strong>mit</strong>tels Blockdiagramm<strong>in</strong> e<strong>in</strong>e strukturierte Form gebracht wird. Das endgültige, verfe<strong>in</strong>erte Blockbild kann wie folgtaussehen:zahl = Int(1 + Rnd * 45)For h = 1 To (i - 1)If zahl = Cells(11, h) Thenzahl = Int(1 + Rnd * 45)End IfNextCells(11, i) = zahlE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 30 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienÜbungsblatt: Cäsar CodierungSeit es Schriftzeichen gibt, verwenden Menschen Codierungsmethoden, da<strong>mit</strong> geheime,Nachrichten verschlüsselt über<strong>mit</strong>telt werden können. E<strong>in</strong>e der ältesten und e<strong>in</strong>fachstenMethoden ist hierbei die Cäsar – Codierung. Hier werden e<strong>in</strong>fach die Buchstaben dergeheimen Nachricht durch andere Buchstaben des Alphabets ersetzt.Aufgabe:Erstelle e<strong>in</strong> Blockdiagramm, <strong>in</strong> dem du den Algorithmus zuerst <strong>in</strong> eigenen Worten und später<strong>mit</strong> Codezeilen beschreibst. Erstelle e<strong>in</strong> Programm, welches e<strong>in</strong>en beliebigen Text nach derCäsar Methode verschlüsselt. Der Schlüssel sei dabei L1 (Verschieben des Alphabets um e<strong>in</strong>eStelle nach L<strong>in</strong>ks, d. h. A wird zu B, B zu C und so weiter)Das Programm kann so aussehen:Notwendige Funktionen:text = TextBox1.TextBefehl, um e<strong>in</strong>en Text aus e<strong>in</strong>er Textbox <strong>in</strong> e<strong>in</strong>e Str<strong>in</strong>g Variable text e<strong>in</strong>zulesen.neuertext = ""Da<strong>mit</strong> erhält man e<strong>in</strong>e Str<strong>in</strong>g Variable, die zu beg<strong>in</strong> leer ist.Len(text)Gibt die Länge des e<strong>in</strong>gelesenen Textes zurückMid(text, i, 1)Da<strong>mit</strong> kann man genau e<strong>in</strong> Zeichen an der Stelle i aus dem Str<strong>in</strong>g text auslesen.Asc(zeichen)Wandelt e<strong>in</strong> Zeichen aus dem Alphabet <strong>in</strong> e<strong>in</strong>e Zahl, <strong>in</strong> den zugehörigen ASCII –Code, umChr(ascii)Wandelt e<strong>in</strong>e Zahl <strong>in</strong> e<strong>in</strong> Zeichen um.TextBox1.Text = neuertextBefehl um e<strong>in</strong>en Text <strong>in</strong> die Text Box zu schreibenE<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 31 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialienLösung zum Übungsblatt: Cäsar CodierungSeit es Schriftzeichen gibt, verwenden Menschen Codierungsmethoden, da<strong>mit</strong> geheime,Nachrichten verschlüsselt über<strong>mit</strong>telt werden können. E<strong>in</strong>e der ältesten und e<strong>in</strong>fachstenMethoden ist hierbei die Cäsar – Codierung. Hier werden e<strong>in</strong>fach die Buchstaben dergeheimen Nachricht durch andere Buchstaben des Alphabets ersetzt.Aufgabe:Erstelle e<strong>in</strong> Blockdiagramm, <strong>in</strong> dem du den Algorithmus zuerst <strong>in</strong> eigenen Worten und später<strong>mit</strong> Codezeilen beschreibst. Erstelle e<strong>in</strong> Programm, welches e<strong>in</strong>en beliebigen Text nach derCäsar Methode verschlüsselt. Der Schlüssel sei dabei L1 (Verschieben des Alphabets um e<strong>in</strong>eStelle nach L<strong>in</strong>ks, d. h. A wird zu B, B zu C und so weiter)Das Programm kann so aussehen:Lösung:Private Sub codieren_Click()t = TextBox1.Textneuertext = ""For i = 1 To Len(t)zeichen = Mid(t, i, 1)a = Asc(zeichen)asci<strong>in</strong>eu = (a + 1) Mod 255neuertext = neuertext + Chr(asci<strong>in</strong>eu)NextTextBox1.Text = neuertextEnd SubPrivate Sub decodieren_Click()t = TextBox1.Textneuertext = ""For i = 1 To Len(t)zeichen = Mid(t, i, 1)E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 32 / 33


Mar<strong>in</strong>a GlatzUnterrichtsmaterialiena = Asc(zeichen)asci<strong>in</strong>eu = (a - 1) Mod 255neuertext = neuertext + Chr(asci<strong>in</strong>eu)NextTextBox1.Text = neuertextEnd SubDer E<strong>in</strong>fachheit halber wurde <strong>in</strong> diesem Algorithmus nicht kontrolliert, ob Sonderzeichenenthalten s<strong>in</strong>d, ob die Verschiebung <strong>in</strong>nerhalb des Alphabets bleibt, oder nicht. Außerdems<strong>in</strong>d diese Algorithmen sehr kostspielig. Durch geeignete Funktionen könnte Softwarereusedemonstriert werden. In diese Richtungen könnte man zum Beispiel den Algorithmusverfe<strong>in</strong>ern.E<strong>in</strong>führung <strong>in</strong> <strong>das</strong> <strong>Programmieren</strong> <strong>mit</strong> <strong>VBA</strong> Seite 33 / 33

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!