33
Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 1 / 33 Einführung in das Programmieren mit VBA Unterrichtseinheiten, mit dem Ziel den Schülern die typischen Denkweisen der Informatik näher zu bringen. Vorraussetzungen: Die Beispiele sind so ausgelegt, dass sie in Excel mit VBA programmiert werden können. Daher sollen die Schüler bereits im Excel gearbeitet haben und das Programm kennen. Weiters setzt das Programmieren ein Variablenverständnis voraus. Natürlich setze ich auch voraus, dass Excel und VBA in der Schule an den Schülercomputern installiert ist und Makros aktiviert sind (oder zumindest aktiviert werden können). Tag Einheit Übungsblätter 1 Schmackhaft machen des Programmierens Grundlegende Konzepte: Was ist ein Programm, wie kann man mit VBA in Excel ein Programm erstellen, wie werden Zeichen im Computer gespeichert Übungsblatt: Erster Kontakt Merkblatt: Wie kann man mit Excel ein Programm erstellen Übungsblatt: Nachbau einer Funktion aus Excel in VBA Übungsblatt : ASCII - Code 2 Einführung in die Konzepte Wiederholen: Wie kann ich mit VBA Programme in Excel erstellen? Wie kann ich Zellen ansprechen, auslesen oder etwas hinein schreiben? Welche Werkzeuge bietet VBA? Neu: Konzept der Schleifen, If – Then - Else Merkblatt: Schleifen Übungsblatt: Verbesserter Algorithmus für das arithmetische Mittel Übungsblatt: Der Passwort – Generator Merkblatt: If – Then – Else Übungsblatt: Ein Schalter 3 Selbstständiges erstellen eines Programms, Vorüberlegungen Übungsblatt: Schachbrett Übungsblatt: MessageBox Sammlung: MessageBox Übungsblatt: Lotto 4 Programmverständnis, Funktionen zum Reuse Übungsblatt: Verbessertes Lottoprogramm Übungsblatt: Cäsar - Codierung Hinweis zu den Unterlagen Die Aufgaben sind so ausgewählt, dass die 1. und 2. Einheit aufeinander Aufbauen und Vorraussetzungen für die 3. und 4. Einheiten sind. Die letzten zwei Einheiten sind relativ unabhängig und können auch auszugsweise an geeigneten Stellen im Unterricht bearbeitet und besprochen werden. Weiterführende Beispiele: Nach diesen Einheiten sollen die Schüler grundlegendes Wissen über Algorithmen, Bausteines von Algorithmen und Funktionen haben. Es ist empfehlenswert, dass in den folgenden Einheiten Theorien, zum Beispiel über Kryptographie, durch Praxis, zum Beispiel durch das Nachprogrammieren des einen oder anderen Verfahrens, ergänzt wird. In Access kann auf dieses Vorwissen bereits zurückgegriffen werden. Weitere Beispiele finden sich unter anderem unter: http://www.gym1.at/schulinformatik/unterrichtsinhalte/unterrichtsbeispiele

Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

  • Upload
    vomien

  • View
    252

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 1 / 33

Einführung in das Programmieren mit VBA Unterrichtseinheiten, mit dem Ziel den Schülern die typischen Denkweisen der Informatik näher zu bringen. Vorraussetzungen: Die Beispiele sind so ausgelegt, dass sie in Excel mit VBA programmiert werden können. Daher sollen die Schüler bereits im Excel gearbeitet haben und das Programm kennen. Weiters setzt das Programmieren ein Variablenverständnis voraus. Natürlich setze ich auch voraus, dass Excel und VBA in der Schule an den Schülercomputern installiert ist und Makros aktiviert sind (oder zumindest aktiviert werden können). Tag Einheit Übungsblätter 1 Schmackhaft machen des Programmierens

Grundlegende Konzepte: Was ist ein Programm, wie kann man mit VBA in Excel ein Programm erstellen, wie werden Zeichen im Computer gespeichert

Übungsblatt: Erster Kontakt Merkblatt: Wie kann man mit Excel ein Programm erstellen Übungsblatt: Nachbau einer Funktion aus Excel in VBA Übungsblatt : ASCII - Code

2 Einführung in die Konzepte Wiederholen: Wie kann ich mit VBA Programme in Excel erstellen? Wie kann ich Zellen ansprechen, auslesen oder etwas hinein schreiben? Welche Werkzeuge bietet VBA? Neu: Konzept der Schleifen, If – Then - Else

Merkblatt: Schleifen Übungsblatt: Verbesserter Algorithmus für das arithmetische Mittel Übungsblatt: Der Passwort – Generator Merkblatt: If – Then – Else Übungsblatt: Ein Schalter

3 Selbstständiges erstellen eines Programms, Vorüberlegungen

Übungsblatt: Schachbrett Übungsblatt: MessageBox Sammlung: MessageBox Übungsblatt: Lotto

4 Programmverständnis, Funktionen zum Reuse

Übungsblatt: Verbessertes Lottoprogramm Übungsblatt: Cäsar - Codierung

Hinweis zu den Unterlagen Die Aufgaben sind so ausgewählt, dass die 1. und 2. Einheit aufeinander Aufbauen und Vorraussetzungen für die 3. und 4. Einheiten sind. Die letzten zwei Einheiten sind relativ unabhängig und können auch auszugsweise an geeigneten Stellen im Unterricht bearbeitet und besprochen werden. Weiterführende Beispiele: Nach diesen Einheiten sollen die Schüler grundlegendes Wissen über Algorithmen, Bausteines von Algorithmen und Funktionen haben. Es ist empfehlenswert, dass in den folgenden Einheiten Theorien, zum Beispiel über Kryptographie, durch Praxis, zum Beispiel durch das Nachprogrammieren des einen oder anderen Verfahrens, ergänzt wird. In Access kann auf dieses Vorwissen bereits zurückgegriffen werden. Weitere Beispiele finden sich unter anderem unter: http://www.gym1.at/schulinformatik/unterrichtsinhalte/unterrichtsbeispiele

Page 2: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 2 / 33

Übungsblatt: Erster Kontakt Mit einem Programm ist es möglich, dass der Computer direkt auf Aktivitäten des Benutzers reagieren kann. Es gibt unterschiedliche Arten von Programmen, die unterschiedlich Komplex sind. So ist das Betriebssystem Windows selbst nur ein, zugegeben sehr komplexes, Programm. Die Anwendung Excel besteht aus vielen kleinen Programmzeilen. Zusätzlich zu den vorhanden Programmen erlaubt es eine Programmiersprache wie zum Beispiel VBA (Visual Basic) Benutzerdefinierte Programme zu erstellen, welche helfen kann Routinearbeiten zu automatisieren. Aufgabe: Erstelle, unter Anleitung des Professors, folgendes Programm. Notiere dir gegebenenfalls Arbeitsschritte, damit du in der Lage bis das Programm alleine nachzubauen. Fertiges Programm:

Der Code hinter dem Programm:

Private Sub hallo_Click() hallo = MsgBox("Hallo!") End Sub

Was passiert, wenn man auf den Button „Hallo Computer“ klickt?

Page 3: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 3 / 33

Merkblatt: Wie kann man in Excel Programme erstellen?

Dazu benötigt man die Symbolleiste von VisualBasic und die Toolbox.

Klickt man auf das Symbol , und anschließend auf einen Button (der natürlich vorher erzeugt werden muss) so kommt man automatisch in die Entwurfsansicht. Hier können Algorithmen eingegeben werden.

Der Algorithmus Ein Algorithmus ist eine exakte Anleitung zur Lösung eines Problems Allgemeine Kennzeichen eines Algorithmus:

• Aufbau aus einzelnen Schritten, jeder Schritt bezeichnet eine Tätigkeit

• Verständlich jeder Schritt muss dem der ihn ausführt (also dem Computer) verständlich sein

• Eindeutig Welche Tätigkeit soll wie ausgeführt werden? Welcher Schritt folgt?

• Ausführbar Der Computer muss diesen Schritt tatsächlich durchführen können!

• Endlich Sowohl endlicher Beschreibungstext, als auch endlich viele Schritte. Der Algorithmus soll in endlicher Zeit ausführbar sein.

• Null oder mehr Eingangsgrößen, 1 oder mehr Ausgangsgrößen sonst ist der Algorithmus sinnlos.

Page 4: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 4 / 33

Übungsblatt: Nachbau einer Funktion aus Excel in VBA Excel bietet Funktionen an, die alle bereits von Softwareentwicklern programmiert wurden. Mit Visual Basic ist es möglich diese Funktionen nachzubauen, oder auch weitere Funktionen zu konstruieren. Aufgabe: Baue die Funktion für das arithmetische Mitteln MITTELWERT(A4:E4) nach. Das fertige Programm kann so aussehen:

Notwendiges Wissen:

Eine Zelle des Excel Arbeitsplattes spricht man mit dem Befehl cells(zeilennummer,spaltennummer) an. So kann man den Inhalt auslesen oder die Zelle beschreiben.

Achte darauf, dass der Variable summe, die Summe der Zahlen aus den angesprochenen Zellen mit dem = - Zeichen zugewiesen wird. Es gilt allgemein:

Werte werden mit dem Zeichen: = Variablen oder Zellen zugewiesen.

Page 5: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 5 / 33

Lösung zum Übungsblatt: Nachbau einer Funktion aus Excel in VBA Excel bietet Funktionen an, die alle bereits von Softwareentwicklern programmiert wurden. Mit Visual Basic ist es möglich diese Funktionen nachzubauen, oder auch weitere Funktionen zu konstruieren. Aufgabe: Baue die Funktion für das arithmetische Mitteln MITTELWERT(A4:E4) nach. Das fertige Programm kann so aussehen:

Notwendiges Wissen:

Eine Zelle des Excel Arbeitsplattes spricht man mit dem Befehl cells(zeilennummer,spaltennummer) an. So kann man den Inhalt auslesen oder die Zelle beschreiben.

Achte darauf, dass der Variable summe, die Summe der Zahlen aus den angesprochenen Zellen mit dem = - Zeichen zugewiesen wird. Es gilt allgemein:

Werte werden mit dem Zeichen: = Variablen oder Zellen zugewiesen. Program hinter 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 / 5 End Sub

Es ist darauf zu achten, dass den Schülern deutlich wird, dass Methoden immer denselben Aufbau, Private Sub Bezeichnung_Ereignis(Übergabeparameter) und End Sub, haben. Ich empfehle, dass dieses Programm in einem Blockdiagramm verdeutlicht beziehungsweise von den Schülern niedergeschrieben wird.

Page 6: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 6 / 33

Übungsblatt: ASCII – Code Definition: (nach DIN 44300) Ein Code ist eine Vorschrift für die eindeutige Zuordnung eines Zeichenvorrates zu denjenigen eines anderen Zeichenvorrates. Die Umwandlung von einem in den anderen Zeichenvorrat wird als Codierung bezeichnet. Aufgabe: Da der Computer alle Zeichen nur Binär, also in einem Zahlensystem darstellen kann, werden Buchstaben intern als achtstellige binäre Zahlen gespeichert. Diesen Zusammenhang kann man mit einem Programm zeigen: Das fertige Programm kann so aussehen:

Notwendige Funktionen: ListBox1.Clear

‚Leert die ListBox, sofern bereits Zeichen in dieser Box sind’

ListBox1.AddItem (z) & " -> " & Chr(z) ‘Fügt ein Item am Ende der ListBox ein’

ListBox1

Page 7: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 7 / 33

Lösung zum Übungsblatt: ASCII – Code Definition: (nach DIN 44300) Ein Code ist eine Vorschrift für die eindeutige Zuordnung eines Zeichenvorrates zu denjenigen eines anderen Zeichenvorrates. Die Umwandlung von einem in den anderen Zeichenvorrat wird als Codierung bezeichnet. Aufgabe: Da der Computer alle Zeichen nur Binär, also in einem Zahlensystem darstellen kann, werden Buchstaben intern als achtstellige binäre Zahlen gespeichert. Diesen Zusammenhang kann man mit einem Programm zeigen: Das fertige Programm kann so aussehen:

Notwendige Funktionen: ListBox1.Clear

‚Leert die ListBox, sofern bereits Zeichen in dieser Box sind’

ListBox1.AddItem (z) & " -> " & Chr(z) ‘Fügt ein Item am Ende der ListBox ein’

ListBox1

Page 8: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 8 / 33

Das Programm hinter dem Button: Private Sub ASCII_Click() ListBox1.Clear For z = 32 To 255 ListBox1.AddItem (z) & " -> " & Chr(z) Next End Sub

Besondere Aufmerksamkeit ist auf die For – Schleife zu richten. Den SchülerInnen soll deutlich gemacht werden, dass For – Schleifen in jeder Programmiersprache vorkommen und überall einen ähnlichen Aufbau haben. Weiterführende Beispiele:

Binärsystem und Zahlendarstellungen, Informationstheorien, Methoden der Fehlererkennung, u.v.m

Page 9: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 9 / 33

Merkblatt: Schleifen Um Wiederholungen eines Arbeitsschrittes zu Programmieren stehen uns in VBA folgende drei sogenannte Schleifen zur Verfügung. Aufbau der FOR – Schleife:

FOR zählvariable = anfangswert TO endwert Hier stehen Anweißungen NEXT

Die Zählvariable, die beliebig benannt werden kann (meistens verwendet man die Buchstaben i, j und k), wird automatisch nach jedem durchlauf der Schleife um eins erhöht. Die Anweißungen in der Schleife werden so lange wiederholt, bis die Zählvariable den angegebenen Entwert erreicht, und mit diesem Entwert das letzte mal durchgeführt. Dadurch ist garantiert, dass die Schleife irgendwann den Entwert erreicht. Das Programm wird dann am Ende der Schleife, nach dem NEXT, fortgesetzt. Weiß man, wie oft eine Schleife durchlaufen werden muss, so empfiehlt es sich mit diesem Schleifentyp zu arbeiten. Er ist weniger Fehleranfällig als die folgenden Schleifentypen. Aufbau der DO … LOOP UNTIL

DO Hier stehen Anweißungen LOOP UNTIL Abbruchbedingung

Oder: DO UNTIL Abbruchbedingung Hier stehen Anweißungen LOOP

Die Schleife wird solange ausgeführt, bis die Abbruchbedingung am Ende der Schleife wahr ist. Der Programmierer ist hier und in allen anderen DO LOOP – Schleifen dafür verantwortlich dass die Schleife irgendwann terminiert (d.h. abgearbeitet ist und das Programm die Schleife verlassen kann). Im zweiten Fall wird die Schleife nicht mehr ausgeführt, wenn die Abbruchbedingung wahr wird. Das Programm springt sofort zum Ende der Schleife und arbeitet die Anweißungen nach dem Schlüsselwort LOOP ab. Aufbau der DO … LOOP WHILE

DO Hier stehen Anweißungen LOOP WHILE Abbruchbedingung

Oder: DO WHILE Abbruchbedingung Hier stehen Anweißungen LOOP

Auch hier ist der Programmierer für die Terminierung der Schleife selbst verantwortlich. Im oberen Fall wird die Schleife so lange ausgeführt, bis die Abbruchbedingung falsch wird. Im zweiten Fall wird die Schleife nicht ausgeführt, wenn die Abbruchbedingung falsch wird, das Programm wird die Anweißungen nach dem Schlüsselwort LOOP ausführen.

Page 10: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 10 / 33

Übungsblatt: Verbesserter Algorithmus für das arithmetische Mittel Das Übungsbeispiel: Nachbauen einer Funktion, funktioniert nur dann, wenn genau in den fünf angegebenen Zellen ein Wert steht. Aufgabe: Lies unter Verwendung von Schleifen so lange Zahlen ein und summiere sie, bis du auf ein leeres Feld stößt. Berechne dann das arithmetische Mittel aller eingegebenen und eingelesenen Zahlen. Das fertige Programm kann so aussehen:

Notwendige Funktionen: Es sind keine neuen Funktionen notwendig.

Page 11: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 11 / 33

Lösung zum Übungsblatt: Verbesserter Algorithmus für das arithmetische Mittel Das Übungsbeispiel: Nachbauen einer Funktion, funktioniert nur dann, wenn genau in den fünf angegebenen Zellen ein Wert steht. Aufgabe: Lies unter Verwendung von Schleifen so lange Zahlen ein und summiere sie, bis du auf ein leeres Feld stößt. Berechne dann das arithmetische Mittel aller eingegebenen und eingelesenen Zahlen. Das fertige Programm kann so aussehen:

Notwendige Funktionen: Es sind keine neuen Funktionen notwendig. Das Programm hinter dem Button: Private Sub CommandButton1_Click()

summe = 0 anzahl = 1 Do Until Cells(4, anzahl) = "" summe = Cells(4, anzahl) + summe anzahl = anzahl + 1 Loop anzahl = anzahl - 1 Cells(8, 2) = summe / anzahl

End Sub

Page 12: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 12 / 33

An dieser Stelle wird erwartet, dass die Lehrperson die Lernenden auf die Problematik 0/0 aufmerksam macht und das Programm auf zum Beispiel folgende Art verbessert: Private Sub CommandButton1_Click()

summe = 0 anzahl = 1 Do Until Cells(4, anzahl) = "" summe = Cells(4, anzahl) + summe anzahl = anzahl + 1 Loop anzahl = anzahl - 1 If anzahl = 0 Then Cells(8, 2) = "undef" Else: Cells(8, 2) = summe / anzahl End If

End Sub

Page 13: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 13 / 33

Übungsblatt: Der Passwort – Generator Aufgabe zum Festigen des bisher gelernten, ASCII – Code, Zellen beschreiben, Schleifen. Aufgabe: Erstelle ein Programm, das acht zufällige Zeichen (Großbuchstaben, Kleinbuchstaben und Sonderzeichen) ausgibt, die ein Passwort ergeben. Das fertige Programm kann so aussehen:

Notwendige Funktionen:

Rnd Erzeugt Zufallszahlen von 0 bis 1 aus der Menge der reellen Zahlen Rnd * 90 Erzeugt Zufallszahlen zwischen 0 und 90, durch die Funktion Integer(Rnd * 90) kann man die Menge der reellen Zahlen auf die Menge der natürlichen Zahlen einschränken.

Page 14: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 14 / 33

Lösung zum Übungsblatt: Der Passwort – Generator Aufgabe zum Festigen des bisher gelernten, ASCII – Code, Zellen beschreiben, Schleifen. Aufgabe: Erstelle ein Programm, das acht zufällige Zeichen (Großbuchstaben, Kleinbuchstaben und Sonderzeichen) ausgibt, die ein Passwort ergeben. Das fertige Programm kann so aussehen:

Notwendige Funktionen:

Rnd Erzeugt Zufallszahlen von 0 bis 1 aus der Menge der reellen Zahlen Rnd * 90 Erzeugt Zufallszahlen zwischen 0 und 90, durch die Funktion Integer(Rnd * 90) kann man die Menge der reellen Zahlen auf die Menge der natürlichen Zahlen einschränken.

Das Programm hinter dem Button: Private Sub generieren_Click() For zeichen = 2 To 9 Cells(4, zeichen) = Chr(33 + Rnd * 90) Next End Sub

Page 15: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 15 / 33

Merkblatt: If – Then – Else Die Programme sind so ausgerichtet, dass die Anweisungen schrittweise ausgeführt werden. Manchmal will man aber die auszuführenden Schritte abhängig von einer, oder mehrerer Bedingungen machen. Ein Eingriff in die sequenzielle Abarbeitung haben wir mit den Schleifen bereits kenne gelernt. Die IF- THEN – ELSE Abfragen sind die zweite vom Prinzip her in jeder Programmiersprache existierende Möglichkeit die Anweisungsreihenfolgen zu beeinflussen. Grundlegender Aufbau: IF Bedingung = bestimmter Wert THEN Anweisungen … ENDIF Ist die Bedingung gleich dem angegebenen Wert, so werden die Anweisungen zwischen THEN und ENDIF ausgeführt. In diesem Beispiel wird auf Gleichheit, im Zeichen =, abgeprüft. Es gibt aber in VBA auch andere Möglichkeiten zwei Ausdrücke zu vergleichen. Vergleichsoperatoren:

< Kleiner als > Größer als = Gleich <= Kleiner gleich >= Größer gleich <> Ungleich

Wichtig ist, die Anweisungen werden genau dann ausgeführt, wenn die angegebenen Bedingung hält. Sprich die Aussage (Variable Vergleichsoperator Wert) ist wahr. Ist die Aussage falsch, so setzt das Programm im obigen Fall nach dem Schlüsselwort ENDIF mit den Anweisungen fort. Manchmal möchte man entweder eine oder eine andere Anweisung ausführen, in diesem Fall empfiehlt sich die IF – THEN – ELSE, Abfrage: IF Variabe Vergleichsoperator Wert THEN Anweisungen, wenn Aussage wahr ELSE Anweisungen, wenn Aussage falsch ENDIF Weiters gibt es die Möglichkeit die IF – Anweisungen zu Schachteln, oder im ELSE – Zweig mit der Anweisung ELSEIF eine weitere IF – Anweisung einzuleiten. Muss man auf mehrere Bedingungen gleichzeitig Abfragen und will man die Abfragen nicht Schachteln, so kann man zwei oder mehr Bedingungen mit AND oder OR verknüpfen.

Page 16: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 16 / 33

Übungsblatt: Ein Schalter Jeder von uns weiß, wie ein Schalter funktioniert. Ein mal klicken, und es fließt Strom in die Leitung, das angeschlossene Gerät (zum Beispiel das Licht) läuft (bzw. leuchtet). In dieser Aufgabe soll nun ein virtueller Schalter nachgebaut werden. Aufgabe: Erstelle ein Programm, mit einem Button. Zu beginn soll der Button auf AUS gestellt sein. Klickt man auf den Button, so wird der Schalter eingeschalten, und auf dem Button soll EIN stehen. Bei nochmaligem Klicken ist der Schalter wieder ausgeschalten (am Button soll dann wieder AUS stehen). Das fertige Programm kann so aussehen:

Notwendige Funktionen:

SchalterName.Caption Damit kann man den Button direkt ansprechen, beschriften bzw. die Beschriftung ändern.

Page 17: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 17 / 33

Lösung zum Übungsblatt: Ein Schalter Jeder von uns weiß, wie ein Schalter funktioniert. Ein mal klicken, und es fließt Strom in die Leitung, das angeschlossene Gerät (zum Beispiel das Licht) läuft (bzw. leuchtet). In dieser Aufgabe soll nun ein virtueller Schalter nachgebaut werden. Aufgabe: Erstelle ein Programm, mit einem Button. Zu beginn soll der Button auf AUS gestellt sein. Klickt man auf den Button, so wird der Schalter eingeschalten, und auf dem Button soll EIN stehen. Bei nochmaligem Klicken ist der Schalter wieder ausgeschalten (am Button soll dann wieder AUS stehen). Das fertige Programm kann so aussehen:

Notwendige Funktionen:

SchalterName.Caption Damit kann man den Button direkt ansprechen, beschriften bzw. die Beschriftung ändern.

Das Programm hinter dem Button:

Private Sub Schalter_Click() If Schalter.Caption = "EIN" Then Schalter.Caption = "AUS" Else Schalter.Caption = "EIN" End If End Sub

Page 18: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 18 / 33

Übungsblatt: Schachbrett: Dieses Blatt dient zum Wiederholen der gelernten Bausteine. Es kann dazu dienen, Algorithmen mit Blockdiagrammen oder Flussdiagrammen zu strukturieren, um die Verschachtelung der Befehle sichtbar zu machen. Aufgabe: Ein Schachbrett besteht aus 32 Feldern (8*8), ist quadratisch und die Quadrate am Brett haben abwechselnd die Farbe weiß und schwarz. Erstelle ein Programm, welches in Excel ein Feld der Größe 8*8 schwarz – weiß einfärbt. Das fertige Programm kann so aussehen:

Notwendige Funktionen:

Cells(zeile, spalte).Interior.ColorIndex = 1 Dieser Befehl färbt die Zelle an der Stelle (zeile, spalte) schwarz. (1 entspricht schwarz, 0 entspricht weiß). Weiters kann der Befehl mod hilfreich sein. Mit: spalte Mod 2 berechnet sich VBA den Rest bei der Division der Spaltenanzahl durch 2. In diesem Fall kann der Rest = 0 oder =1 sein.

Page 19: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 19 / 33

Lösung zum Übungsblatt: Schachbrett: Dieses Blatt dient zum Wiederholen der gelernten Bausteine. Es kann dazu dienen, Algorithmen mit Blockdiagrammen oder Flussdiagrammen zu strukturieren, um die Verschachtelung der Befehle sichtbar zu machen. Aufgabe: Ein Schachbrett besteht aus 32 Feldern (8*8), ist quadratisch und die Quadrate am Brett haben abwechselnd die Farbe weiß und schwarz. Erstelle ein Programm, welches in Excel ein Feld der Größe 8*8 schwarz – weiß einfärbt. Das fertige Programm kann so aussehen:

Notwendige Funktionen:

Cells(zeile, spalte).Interior.ColorIndex = 1 Dieser Befehl färbt die Zelle an der Stelle (zeile, spalte) schwarz. (1 entspricht schwarz, 0 entspricht weiß). Weiters kann der Befehl mod hilfreich sein. Mit: spalte Mod 2 berechnet sich VBA den Rest bei der Division der Spaltenanzahl durch 2. In diesem Fall kann der Rest = 0 oder =1 sein.

Das Programm hinter dem Button Ausfüllen:

Private Sub faerben_Click() ‚Variablen, ab hier soll ein 8*8 Felder großer Bereich eingefärbt werden’ zeile = 3

Page 20: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 20 / 33

spalte = 1 Do While spalte < 9 Do While zeile < 11 ‘Einfärben: Schwarz’ Cells(zeile, spalte).Interior.ColorIndex = 1 ‚Gehe zwei Felder weiter’ zeile = zeile + 2 Loop ‘Gehe in die nächste Spalte’ spalte = spalte + 1 ‘Bin ich in einer “geraden” Spalte, so färbe ich die Felder 2,4,6,81, 3, 5, 7; ansonsten färbe die Felder 1, 3, 5, 7’ If spalte Mod 2 = 0 Then zeile = 4 Else zeile = 3 End If Loop End Sub

Das Programm hinter dem Button Leeren:

Private Sub CommandButton1_Click() For spalte = 1 To 8 For zeile = 3 To 10 Cells(zeile, spalte).Interior.ColorIndex = 0 Next Next End Sub

Page 21: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 21 / 33

Übungsblatt: Message - Box Manchmal will man einen User vor den folgen seiner Tätigkeit warnen, oder einfach nur das Gefühl vermitteln, dass der Computer mit dem User kommuniziert. Will man zum Beispiel eine Datei löschen, die gerade in Verwendung ist, so reagiert Windows mit einem Pop-Up, oder einer Message – Box. Diese kann man auch in VBA programmieren. Aufgabe: Programmiere eine Message – Box, die beim betätigen des Buttons „Hallo“ aufgeht und den Benutzer grüßt. Außerdem soll der Computer Fragen: „Geht es dir gut?“ und die Antwortmöglichkeiten JA und NEIN zur Verfügung stellen. Selbstverständlich soll die Message-Box auf die Antworten des Users angemessen reagieren.

Notwendige Funktionen:

Variable = MsgBox(„Text“, Option) Das Ergebnis des Aufrufes MsgBox() muss nicht in einer Variable abgefangen werden, 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 Nein = 7.

Page 22: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 22 / 33

Lösung zum Übungsblatt: Message - Box Manchmal will man einen User vor den folgen seiner Tätigkeit warnen, oder einfach nur das Gefühl vermitteln, dass der Computer mit dem User kommuniziert. Will man zum Beispiel eine Datei löschen, die gerade in Verwendung ist, so reagiert Windows mit einem Pop-Up, oder einer Message – Box. Diese kann man auch in VBA programmieren. Aufgabe: Programmiere eine Message – Box, die beim betätigen des Buttons „Hallo“ aufgeht und den Benutzer grüßt. Außerdem soll der Computer Fragen: „Geht es dir gut?“ und die Antwortmöglichkeiten JA und NEIN zur Verfügung stellen. Selbstverständlich soll die Message-Box auf die Antworten des Users angemessen reagieren.

Notwendige Funktionen:

Variable = MsgBox(„Text“, Option) Das Ergebnis des Aufrufes MsgBox() muss nicht in einer Variable abgefangen werden, 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 Nein = 7.

Das Programm hinter dem Button:

Private Sub hallo_Click() Entscheidung = MsgBox("Hallo! Geht es dir gut?", 4) If Entscheidung = 6 Then MsgBox "Das it ja wunderbar!" Else MsgBox "Na dann gute Besserung!" End If End Sub

Page 23: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 23 / 33

Sammlung: Message Box Um eine Message Box (zu Deutsch: Dialogfelder) zu erstellen verwendet man in VBA den Befehl MsgBox(„Text“, Code ), wobei in der Klammer der Text steht, welcher von der Box ausgegeben wird. In diesem Fall hat der Benutzer nur mehr die Möglichkeit sein Einverständnis bekannt zu geben, da ausschließlich der Button: OK erscheint. Um den Benutzer mehr Auswahlmöglichkeiten zu geben bietet VBA folgende Codierungen an:

Code Button 0 Es wird nur „OK“ angezeigt 1 „OK“ und „Abbrechen“ wird angezeigt 2 „Abbrechen“, „Wiederholen“ und „Ignorieren“ 3 „Ja“, „Nein“ und „Abbrechen“ 4 „Ja“ und „Nein“ 5 „Wiederholen“ und „Abbrechen“

Klickt der Benutzer auf einen Button, so wird ein Signal an das Programm zurückgesendet. Diese kann man mit einer beliebigen Variabel (Integer) abfangen. Zum Beispiel durch den Befehl: Entscheidung = MsgBox("Hallo! Geht es dir gut?", 4) (Siehe oben) Dabei verbergen sich hinter den Buttons folgende Integer – Zahlen:

Wert Button 1 OK 2, 3 Abbrechen 4 Wiederholen5 Ignorieren 6 Ja 7 Nein

Erst dadurch ist es möglich auf die Aktion des Benutzers zu reagieren. Ob der Computer das gewünschte macht, liegt in der Hand des Programmierers.

Page 24: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 24 / 33

Übungsblatt: Lotto Die Wahrscheinlichkeit bei Lotto einen 6er zu tippen ist mit ca. 1: 8 Mio. sehr gering. Wenn man jedoch einmal einen 6er oder auch nur einen 5er tippt, so möchte man den Gewinn mit möglichst wenig anderen Spielteilnehmern teilen. Da die Menschen jedoch dazu neigen auf Tippscheinen Muster zu tippen, sind Tipphilfen immer sehr gefragt. Aufgabe: Programmiere in VBA einen Lottoschein nach. Durch betätigen eines Buttons sollen sechs zufällig ausgewählte Zahlen am Schein angezeichnet werden. Das fertige Programm soll in etwa so aussehen:

Notwendige Funktionen:

Interior.ColorIndex = 0 Befehl zum Einfärben von Zellen, (0=weiß)

Rnd * 45 Dieser Befehl erzeugt Zufallszahlen zwischen 0 und 45 (reelle Zahlen)

Zahl1 Mod Zahl2 Der Modulooperator gibt mir den Rest zurück, der entsteht, wenn die Zahl1 durch die Zahl2 dividiert wird.

Page 25: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 25 / 33

Lösung zum Übungsblatt: Lotto Die Wahrscheinlichkeit bei Lotto einen 6er zu tippen ist mit ca. 1: 8 Mio. sehr gering. Wenn man jedoch einmal einen 6er oder auch nur einen 5er tippt, so möchte man den Gewinn mit möglichst wenig anderen Spielteilnehmern teilen. Da die Menschen jedoch dazu neigen auf Tippscheinen Muster zu tippen, sind Tipphilfen immer sehr gefragt. Aufgabe: Programmiere in VBA einen Lottoschein nach. Durch betätigen eines Buttons sollen sechs zufällig ausgewählte Zahlen am Schein angezeichnet werden. Das fertige Programm soll in etwa so aussehen:

Notwendige Funktionen:

Interior.ColorIndex = 0 Befehl zum Einfärben von Zellen, (0=weiß)

Rnd * 45 Dieser Befehl erzeugt Zufallszahlen zwischen 0 und 45 (reelle Zahlen)

Zahl1 Mod Zahl2 Der Modulooperator gibt mir den Rest zurück, der entsteht, wenn die Zahl1 durch die Zahl2 dividiert wird.

So könnte ein vorläufiges Programm hinter dem Button aussehen:

Private Sub Tipp_Click() ‘ Initialisierungsroutinen For i = 3 To 10 For j = 1 To 8 Cells(i, j).Interior.ColorIndex = 0 Next Next ‘Hier beginnt die eigentliche Arbeit For i = 1 To 6 Zahl = Int(1 + Rnd * 45)

Page 26: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 26 / 33

spalte = Int((Zahl - 1) Mod 7) zeile = Int((Zahl - 1) / 7) Cells(zeile + 3, spalte + 1).Interior.ColorIndex = 6 Next End Sub

Page 27: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 27 / 33

Übungsblatt: Verbesserter Lottoalgorithmus Ein Programmieranfänger hat einen Lottotipp mit folgendem Algorithmus simuliert:

Private Sub Tipp_Click() For i = 3 To 10 For j = 1 To 8 Cells(i, j).Interior.ColorIndex = 0 Next Next For i = 1 To 6 Zahl = Int(1 + Rnd * 45) spalte = Int((Zahl - 1) Mod 7) zeile = Int((Zahl - 1) / 7) Cells(zeile + 3, spalte + 1).Interior.ColorIndex=6 Next End Sub

Aufgabe 1: Kommentiere den Code aus und beschreibe in eigenen Worte, wie der Algorithmus arbeitet. Als der Programmierer seinen ersten Lottotipp mit seinem neuen Programm ausprobieren will, schlägt ihm der Computer folgende Zahlen vor:

Aufgabe 2: Wo liegt deiner Meinung nach der Fehler. Wie könnte man den Algorithmus verbessern? Versuche in eigenen Worten einen Verbesserungsvorschlag zu beschreiben, und in einem Blockdiagramm zu strukturieren.

Page 28: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 28 / 33

Lösung zum Übungsblatt: Verbesserter Lottoalgorithmus Ein Programmieranfänger hat einen Lottotipp mit folgendem Algorithmus simuliert:

Private Sub Tipp_Click() Beginn der Routine. Wird der Button mit dem Namen Tipp betätigt (daher Click), so werden die folgenden Codezeilen ausgeführt: For i = 3 To 10 For j = 1 To 8 Cells(i, j).Interior.ColorIndex = 0 Next Next Die 1. For – Schleife dient dazu das eventuell bereits gefärbte Felder wieder weiß werden. Dabei geht die äußere Schleife von 3 bis 10 über die Zeilen, und die innere Schleife von 1 bis 8 über die Spalten. Siehe Cells(i,j). For i = 1 To 6 Zahl = Int(1 + Rnd * 45) Hier werden die Zufallszahlen erzeugt (von 0 bis 45). Da diese Zahlen im Allgemeinen reelle Zahlen sind, muss ich sie noch zu Integer – Zahlen machen. spalte = Int((Zahl - 1) Mod 7) Hier wurde die Spalte berechnet, in der die Zahl ist, die ich Einfärben möchte. (Der Rest 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 habe 6 Zeilen. Cells(zeile + 3, spalte + 1).Interior.ColorIndex=6 Nachdem ich die Zeilen und Spalten noch zurecht gerückt habe (denn ich fange mit dem Tippschein erst bei Zelle (3,1) an), kann die betreffende Zeile eingefärbt werden. Next Ende der For - Schleife End Sub Ende der Routine

Aufgabe 1: Kommentiere den Code aus und beschreibe in eigenen Worte, wie der Algorithmus arbeitet. Als der Programmierer seinen ersten Lottotipp mit seinem neuen Programm ausprobieren will, schlägt ihm der Computer folgende Zahlen vor:

Page 29: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 29 / 33

Aufgabe 2: Wo liegt deiner Meinung nach der Fehler. Wie könnte man den Algorithmus verbessern? Versuche in eigenen Worten einen Verbesserungsvorschlag zu beschreiben, und in einem Blockdiagramm zu strukturieren. Ergänzt man den Code wie folgt, so stellt man fest, dass einfach gewisse Zahlen doppelt gezogen wurden:

Private Sub Tipp_Click() For i = 3 To 10 For j = 1 To 8 Cells(i, j).Interior.ColorIndex = 0 Next Next For i = 1 To 6 Zahl = Int(1 + Rnd * 45) Cells(11, i) = Zahl spalte = Int((Zahl - 1) Mod 7) zeile = Int((Zahl - 1) / 7) Cells(zeile + 3, spalte + 1).Interior.ColorIndex = 6 Next End Sub

Beim nächsten Tipp erhält der Programmierer folgende Rückmeldung:

Page 30: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 30 / 33

Der Algorithmus lässt also zu, dass gewisse Zahlen zweimal (oder öfters) gezogen werden. Dieses Manko wäre zu beheben, wenn nach Ziehen einer neuen Zahl überprüft wird, ob diese Zahl bereits gezogen wurde. Nachdem die Schüler ihre Verbesserungsvorschläge sprachlich beschreiben haben, kann ein Vorschlag aufgegriffen werden, der nun mittels Blockdiagramm in eine strukturierte Form gebracht wird. Das endgültige, verfeinerte Blockbild kann wie folgt aussehen: zahl = Int(1 + Rnd * 45) For h = 1 To (i - 1) If zahl = Cells(11, h) Then zahl = Int(1 + Rnd * 45) End If Next Cells(11, i) = zahl

Page 31: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 31 / 33

Übungsblatt: Cäsar Codierung Seit es Schriftzeichen gibt, verwenden Menschen Codierungsmethoden, damit geheime, Nachrichten verschlüsselt übermittelt werden können. Eine der ältesten und einfachsten Methoden ist hierbei die Cäsar – Codierung. Hier werden einfach die Buchstaben der geheimen Nachricht durch andere Buchstaben des Alphabets ersetzt. Aufgabe: Erstelle ein Blockdiagramm, in dem du den Algorithmus zuerst in eigenen Worten und später mit Codezeilen beschreibst. Erstelle ein Programm, welches einen beliebigen Text nach der Cäsar Methode verschlüsselt. Der Schlüssel sei dabei L1 (Verschieben des Alphabets um eine Stelle nach Links, d. h. A wird zu B, B zu C und so weiter) Das Programm kann so aussehen:

Notwendige Funktionen:

text = TextBox1.Text Befehl, um einen Text aus einer Textbox in eine String Variable text einzulesen. neuertext = "" Damit erhält man eine String Variable, die zu begin leer ist. Len(text) Gibt die Länge des eingelesenen Textes zurück Mid(text, i, 1) Damit kann man genau ein Zeichen an der Stelle i aus dem String text auslesen. Asc(zeichen) Wandelt ein Zeichen aus dem Alphabet in eine Zahl, in den zugehörigen ASCII – Code, um Chr(ascii) Wandelt eine Zahl in ein Zeichen um. TextBox1.Text = neuertext Befehl um einen Text in die Text Box zu schreiben

Page 32: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 32 / 33

Lösung zum Übungsblatt: Cäsar Codierung Seit es Schriftzeichen gibt, verwenden Menschen Codierungsmethoden, damit geheime, Nachrichten verschlüsselt übermittelt werden können. Eine der ältesten und einfachsten Methoden ist hierbei die Cäsar – Codierung. Hier werden einfach die Buchstaben der geheimen Nachricht durch andere Buchstaben des Alphabets ersetzt. Aufgabe: Erstelle ein Blockdiagramm, in dem du den Algorithmus zuerst in eigenen Worten und später mit Codezeilen beschreibst. Erstelle ein Programm, welches einen beliebigen Text nach der Cäsar Methode verschlüsselt. Der Schlüssel sei dabei L1 (Verschieben des Alphabets um eine Stelle nach Links, 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.Text neuertext = "" For i = 1 To Len(t) zeichen = Mid(t, i, 1) a = Asc(zeichen) asciineu = (a + 1) Mod 255 neuertext = neuertext + Chr(asciineu) Next TextBox1.Text = neuertext End Sub Private Sub decodieren_Click() t = TextBox1.Text neuertext = "" For i = 1 To Len(t) zeichen = Mid(t, i, 1)

Page 33: Einführung in das Programmieren mit VBAmglatz/VBA_Einfuehrung.pdf · Marina Glatz Unterrichtsmaterialien Einführung in das Programmieren mit VBA Seite 3 / 33 Merkblatt: Wie kann

Marina Glatz Unterrichtsmaterialien

Einführung in das Programmieren mit VBA Seite 33 / 33

a = Asc(zeichen) asciineu = (a - 1) Mod 255 neuertext = neuertext + Chr(asciineu) Next TextBox1.Text = neuertext End Sub

Der Einfachheit halber wurde in diesem Algorithmus nicht kontrolliert, ob Sonderzeichen enthalten sind, ob die Verschiebung innerhalb des Alphabets bleibt, oder nicht. Außerdem sind diese Algorithmen sehr kostspielig. Durch geeignete Funktionen könnte Softwarereuse demonstriert werden. In diese Richtungen könnte man zum Beispiel den Algorithmus verfeinern.