• VBA-EditorVBA-Editor

Am 25. September 2018 führen wir für die Graduiertenakademie der TU Braunschweig ein Seminar für die Tabellenkalkulation Excel (VBA Programmierung) durch.

Das Microsoft Office Paket besitzt eine eingebaute Programmiertechnik : VBA - Visual Basic for Applications. Mit dieser Technik können Sie z. B. automatisch aufgezeichnete Excel-Makros professionell ergänzen oder ganz eigene Anwendungen erstellen.

Das Seminar bietet eine weitergehende Praxis in der VBA-Programmierung am Beispiel der Tabellenkalkulation Excel. Es wird auf entsprechende Erfahrungen aus dem Bereich „Excel – Automatisierungen und Makros“ oder vergleichbares Wissen aufgesetzt.

Inhalt:

  • VBA - Editor und Entwicklungsumgebung
  • Prozeduren programmieren (Schleifen, Verzweigungen)
  • Zellen, Zellbereiche, Tabellenblätter und Mappen manipulieren
  • Dateien verarbeiten (Import, Export)
  • Dialoge (Vordefinierte, eigene Formulare/ UserForms )
  • Datenverwaltung (mit Excel statt Datenbank)

Hier die Rahmendaten zum Seminar:

Ort: Gauß-IT-Zentrum, Hans-Sommer-Straße 65, HS 65.1 (Achtung: Bautätigkeit!)
Zeiten: Di., 25.09.18;  09.00 - 16.00 Uhr

Ich werde das Thema - in gewohnter Weise - mit täglichen Infos begleiten.
Ihr Trainer Joe Brandes

 

Dienstag, 25.09.2018, 09.00 - 16.00 Uhr

  • Orientierungsphase, TN-Themen, Zeiten/Pausenregelungen
  • Aus TN-Kreisen GradTUBS (siehe Feedbackbögen) wird als Verbesserung manchmal eine Vorbereitung/Bereitstellung der Inhalte gewünscht. Dem komme ich mit den hier vorbereiteten inhaltlichen Themen für unsere Seminare nach.
    Inhaltliche Strukturierung (Curriculi / LZKs / Idee für 1-Tagesseminare)
    Excel SeminareInhalte
    Automatisierung und Makros Einstieg in Automatisierungen
    Makros: der Makrorecorder
    Eigene Funktionen in Excel
    Einstieg in den VBA-Editor
    VBA Programmierung VBA-Editor
    VBA Prozeduren
    Programmierung: Dateien, Zellen, Blätter
    UserForms - Formulare, Dialoge
    Downloads zu VBA-Snippets (Anm.: temporär!) auf
    Onedrive-Laufwerk Trainer J. Brandes (inkl. beispielhaften VBA-PDFs aus dem Netz)
    Hinweis: manche Bücher zu diesen Themen heißen "... in 14 Tagen ..."
  • Hinweis auf Online-Resourcen und Tools für die weiteren Arbeiten mit Excel
    Erstellung von Screenshots mit Windows 10 Bordmittel (Tastenkombi: Win + Druck; png-Dateien in Ordner Bilder\Bildschirmfotos, bzw. Pictures\Screenshots)
    und Bildschirmlupe mit Win + "+" (bzw. Win + "-"; Lupe deaktivieren mit Win + ESC)
    früher: Trainer-Tools (Bildschirmlupe "Virtual Magnifiying Glass" und Screenshots erstellen mit "Lightscreen") über Portal portableapps.com (Nachfrage aus Seminar)
    Ansprechpartner an der TU Braunschweig - GradTUBS
    Freies WikiBook: https://de.wikibooks.org/wiki/VBA_in_Excel (auch als PDF verfügbar)
    Skripte des Herdt-Verlag über das RRZN Uni Hannover zum kleinen Preis über das GITZ: (siehe Bestellform für Software und Skripte)
    Link: http://www.rrzn.uni-hannover.de/buecher.html
  • Arbeitsmappen mit Makros - eigener Dateityp: *.xlsm (bzw. *.xltm für Vorlagen)
    beim Öffnen muss außerdem noch die Sicherheitswarnung beachtet werden, die dann überhaupt erst die "Aktivierung" der aktiven Inhalte - sprich unsere Makros - ermöglicht. Ohne diese Aktivierung sind die Makros nicht nutzbar!
    Version Dateiformate
    Excel 97-2003 xls - das klassische Excel-Sheet (Arbeitsmappen)
    xlt - die passenden Vorlagen (engl.: Templates)
    Excel 2007 / 2010 / ... xlsx - XML basiertes Dokumentformat (ohne Makros)
    xltx - die passenden Vorlagen
    xlsm - XML basierte Mappen inkl. Makros
    xltm - die passenden Vorlagen inkl. Makros
  • Makros (Erste Gehversuche mit VBA-Techniken über Aufzeichnungen von Makros)
    an dieser Stelle sei auf die Seminare mit entsprechendem Schwerpunkt "Excel - Makros" verwiesen.
    Tastenkombinationen:
    ALT+F8 öffnet Makro-Dialogfenster;
    ALT+F11 öffnet Visual-Basic-Editor
    Erinnerung: Menüband Entwicklertools einblenden!
  • Makros - Sicherheit
    Konfiguration über Excel-Optionen - Vertrauensstellungscenter - Einstellungen für Vertrauensstellungscenter
    Hier: Einstellungen für Makros (möglichst unverändert lassen); Vertrauenswürdige Speicherorte
    alternativ erreichbar über Schaltfläche "Makrosicherheit" im Menüband Entwicklertools
    Bei Laufwerkspfaden im Netzwerk (UNC) muss extra ein Kontrollkästchen für diese Nutzung aktiviert werden
    Tipp: bei den "Vertrauenswürdigen Speicherorten" finden Sie auch Ihre Verzeichnisse für Benutzer und Templates!
    Speicherorte auf Netzwerkressourcen müssen noch extra erlaubt werden.
  • VBA-Editor nutzen (siehe Alt + F11 )
    manuelles Einfügen von Sub Routinen (Makros) oder Function (neue eigene Funktionen; Beispiel: NettoMwst)
    Wichtig: falls noch keine Struktur "Module" im Projekt-Explorer vorhanden ist, dann bitte mittels Einfügen - Module diese notwendige Struktur erstellen
    Mit mehreren Modulen lassen sich die VBA-Codes sauber organisieren!
    Manuelles (zeilenweise) Abarbeiten mit Funktionstaste F8
    Mehrzeiliger Code mit " _" als Zeilenumbruch:
    View source
    1. ' Über mehrere Zeilen mit Leertaste _ (in MsgBox Konstante vbLf)
    2. Sub MsgBoxMehrzeiligAnzeigen()
    3. MsgBox "Heute ist der " & Date & vbLf & _
    4. "Es ist jetzt genau: " & Time & vbLf & _
    5. "Sie sind der Anwender: " & Environ("username"), _
    6. vbOKOnly, "Meldung"
    7. End Sub
    Tipp: bei Code mit Vorgestellten Optionen bitte jeweils ein einzelnes Modul nutzen (siehe: Option Explicit )!
    Debugging: bei Fehlern lässt sich im Editor der fragliche Quellcode begutachten und korrigieren.
    Für eine weitere Excel/VBA-Nutzung muss man den Fehler beheben oder die Ausführung des Makros stoppen (Stopptaste im Editor).
    Symbolleiste "Bearbeiten" einfügen lassen im VBA-Editor: Einzüge, Haltepunkte, Sub/Makro (F5), Kommentierungen
    Einstellungen für Tab-Schrittweite (z.B. 2 statt 4 Leerzeichen) und automatische "Option Explicit" für neue Module
    Codeeingaben gerne in Small und ohne Leerzeichen:
    View source
    worksheets("Tabelle1").range("a1").value=100 
    ' wird zu
    Worksheets("Tabelle1").Range("a1").Value = 100 
    Aber: erstellten Code immer kontrollieren/checken!
  • Eigenschaften (F4)
    Übung: Sichtbarkeiten von Tabellenblättern manipulieren
    -1 – xlSheetVisible : Die Tabelle ist sichtbar.
    0 – xlSheetHidden : Die Tabelle ist ausgeblendet.
    2 – xlSheetVeryHidden : Die Tabelle ist sicher ausgeblendet, das heißt, der »normale« Anwender kann diese Tabelle nicht mehr einblenden.
    Übung: ScrollArea
  • Workbook_Open()
    Routinen direkt beim Laden einer Arbeitsmappe automatisch ausführen lassen:
    View source
    1. Private Sub Workbook_Open()
    2. 'Dieses Ereignis wird beim Öffnen der Mappe ausgeführt
    3. Tabelle1.Visible = xlSheetVeryHidden
    4. 'Die ScrollArea für Tabelle2 setzen
    5. Tabelle2.ScrollArea = "A1:D10"
    6. End Sub
    Wichtig: dieser Code gehört jetzt mal nicht in die Module, sondern sozusagen "wortwörtlich" zu "Diese Arbeitsmappe".
  • Tabellen ansprechen - die Tabellennamen
    die Tabellenblattnamen lassen sich ändern in der Blattansicht und über das Eigenschaftenfenster; z.B.:
    Codename: Tabelle3 
    Normaler Name: tbl_Daten  (hier: Objekt Worksheets nutzen)
    Empfehlung: Codename ; wegen besserer Code/Syntaxcompletion, sicherer, weniger Pflegeaufwand!
    Varianten zum Ansprechen eines Tabellenblatts:
    View source
    1. ' Codename:
    2. Tabelle3.Range("A1").Value = 100
    3. ' Vollqualifiziert mit Worksheets
    4. Worksheets("tbl_Daten").Range("A4").Value = 10
    5. ' Vollqualifiziert mit Worksheets und Index
    6. Worksheets(3).Range("A2").Value = 10
    7. ' teilweise qualifiziert - Sheets arbeitet auch mit Diagrammblättern
    8. Sheets("tbl_Daten").Range("A5").Value = 10
    9. ' völlig ungenau/gefährlich
    10. Range("A6").Value = 10
    Conclusio: Tabellenblätter genau planen und strukturieren!
  • Direktfenster (Strg + G)
    beispielhafte Direktaufrufe:
    ?Environ("username")  
    ?Environ("computername")   
    Übung: Funktionsnamen im Englischen Original ermitteln -  wie heißt die Funktion MITTELWERT() ?
    ?range("A1").Formula
    =AVERAGE(D1:D8)
    Tipp: Formel in Zelle eintragen: Tabelle3.Range("A1").Formula = "=AVERAGE(D1:D8)" 
    Hinweis: FormulaLocal hat dann die länderspezifische Benennung!
  • Berechnungen (automatisch / manuell)
    Anm.: siehe SAP-Excel-Exports (sind oft manuell eingestellt); Aufrufe auch gerne auch im Direktfenster:
    Application.Calculation=xlCalculationManual 
    oder dann wieder:
    Application.Calculation=xlCalculationAutomatic     
  • Debug Ausgaben
    z.B. zur Laufzeitmessung:
    Debug.Print "Start: " & Now    
    ....
    Debug.Print "Ende: " & Now    
    oder einfach manuell einen Wert / Variable ausgeben!
  • Objektorientierung
    Excel-VBA-Objekt haben
    Eigenschaften (Property - 80%) und Methoden (Methods - 20%)
    Übung/Test mit Objekt "Application"
    View source
    1. Sub UnterschiedMethodeUndEigenschaft()
    2.  
    3. With tbl_Matrix.Range("A1:D10")
    4.  
    5. 'Eigenschaft
    6. .Borders(xlInsideHorizontal).ColorIndex = 4
    7.  
    8. 'Methode
    9. .BorderAround Weight:=xlThick, ColorIndex:=3
    10.  
    11. End With
    12.  
    13. End Sub
    Beachte: Zuweisungen mit "=" und ":="
    Bitte auch an Code-Completion mit Strg + Leertaste denken und die automatischen Auswahllistenfelder nutzen.
  • Variablen
    Deklarieren mit Dim ; Sonderzeichen vermeiden
    lowCamelCase empfohlen: intBeispielVar   (Prefix empfohlen)
    am Anfang der Sub-Routinen deklarieren (lokale Variablen)
    beispielhafte Prefixes für die Datentypen:
    bool Boolean , byte Byte , cur Currency , dtm Date , dec Decimal , dbl Double , int Integer , lng Long , obj Object , sng Single , str String , var Variant , rng Range , wkb Workbook
    Speziell: Typ Enum 
    Übersicht zu Variablentypen: (Beachten: VB weicht teils von VBA ab; z.B. decimal not supported, ...)
    Beispielhafte Links:
    https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/data-type-summary
    https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/data-types/
    https://docs.microsoft.com/de-de/office/vba/language/reference/user-interface-help/dim-statement
    https://www.vba-tutorial.de/variablen/datentypen.htm   
    Anm.: nur eine kleine Linkauswahl ohne Anspruch auf Vollständigkeit ;-)
    Statische/Static Variablen    bleiben nach Laufzeitende erhalten!
    View source
    1. Sub VariablenInhaltBleibtBestehen()
    2. Static lngAufrufe As Long
    3.  
    4. lngAufrufe = lngAufrufe + 1
    5. MsgBox "Makro wurde " & lngAufrufe & " Mal ausgeführt!"
    6.  
    7. End Sub
    Öffentliche/Public Variablen   Public dtmStartzeit As Date    sind auch über Modulgrenzen hinweg nutzbar!
    Private/Private Variablen  Private strPasswort As String    sind nur in ihrem Modul verfügbar!
  • Konstanten
    sind schneller als Variablen!
    View source
    1. Const strArbeitsmappe as String = "Mappe1.xls"
    2. Const dteStartDatum As Date = #1/1/2015#
    3. Const strFehlermeldung as String = "Fehler beim Druck!"
    4. Const sngMWST as Single = 1.19
    Auch hier: möglichst Type definieren.
  • Textdateien einlesen
    Übungen zu unterschiedlichen Varianten
    View source
    .... 
    Open ConstTxtDatei For Input As #1
     
    Do Until EOF(1)
    Line Input #1, strText
    Debug.Print strText
    Loop
     
    Close #1
     
    ....
     Open ConstTxtDatei For Input As #1
    VarDat = Input$(LOF(1), 1)
    Debug.Print VarDat
    Close #1
    Zweite Variante ist schneller, da man keine VBA-Schleife (Loop) nutzt.
  • Kontrollstrukturen
    Inklusive Übungen und Beispielen
    If ... End If   bzw. If ... Then ... Else ... End If  bzw.   IIf( Bedingung, Then, Else)   
    Select Case ... Case(s) ... End Select   
    ... Übungen / Beispiel-Codes für TN
  • Schleifen
    For ... To ... Next  
    For Each ... Next  
    With ...  End With  
    Do Until ... Loop  
    Do While ... Loop  
    ... Übungen / Beispiel-Codes für TN
  • UserForms
    Übung mit Herdt-Taschenrechner: Einbau einer neuen Schaltfläche (CommandButton cmdMultiplikation) und Code für eine Multiplikationsfunktion des Taschenrechners
    Für weitere vertiefende Beschäftigungen mit dem Thema "UserForms" hier eine beispielhafte Anleitung im Internet:
    VBA Tutorials (Link Übung Eingabemasken mit Excel)
    Nutzung von UserForms: hier wichtig, dass die aktiven Elemente / VBA-Codes den Elementen des Formulars zugeordnet werden.
    Das eigentliche Formular wird durch eine einfache Schaltfläche im Arbeitsblatt per  aufgerufen!
    Beispiele für Sub / Prozeduren: cmdMulti_Click()  oder  txtZahl1_Exit()
    also immer der Name eines Form-Steuerelements und ein angehängtes Ereignis
  • TN-Bescheinigungen, Feedback-Bögen, Letzte Fragen

 

  • Option ExplicitOption Explicit
  • Tabelle ansprechenTabelle ansprechen
  • DirektbereichDirektbereich
  • Datentypen - HilfeDatentypen - Hilfe
  • neuer CommandButtonneuer CommandButton
  • Zellen-DropdownZellen-Dropdown

Bibliothek "Excel Makros / VBA"

  • VBA mit Excel
  • VBA mit Excel
  • Excel-VBA-Referenz
  • Excel-VBA-Referenz
  • Excel Programmieren
  • Excel Programmieren
  • Excel-VBA
  • Excel-VBA
  • VBA-Programmierung Office
  • VBA-Programmierung Office
  • Formeln und Funktionen
  • Formeln und Funktionen
  

 

Vielen Dank für Ihre Aufmerksamkeit und rege Mitarbeit trotz störender Bautätigkeit.
Und vielen Dank auch wieder für Ihre sehr positiven Rückmeldungen.
Ihr Trainer Joe Brandes

  Privates

... zu Joe Brandes

Sie finden auf dieser Seite - als auch auf meiner privaten Visitenkarte joe-brandes.de einige Hintergrundinformationen zu mir und meinem Background.
Natürlich stellt die IT einen Schwerpunkt in meinem Leben dar - aber eben nicht nur ...

joe brandes 600px

Private Visitenkarte / Technik: HTML & CSS /
  joe-brandes.de

  Jobs

... IT-Trainer & Dozent

Ich erarbeite und konzipiere seit über 20 Jahren IT-Seminare und -Konzepte. Hierfür stehen der "PC-Systembetreuer / FITSN" und der "CMS Online Designer / CMSOD". Ich stehe Ihnen gerne als Ansprechpartner für Ihre Fragen rund um diese und andere IT-Themen zur Verfügung!

becss 600px

BECSS Visitenkarte / Technik: HTML & CSS /
  becss.de

  Hobby

... Snooker & more

Wer einmal zum Snookerqueue gegriffen hat, der wird es wohl nicht wieder weglegen. Und ich spiele auch immer wieder gerne eine Partie Billard mit den Kumpels und Vereinskameraden. Der Verein freut sich über jeden, der einmal in unserem schicken Vereinsheim vorbeischauen möchte.

bsb 2011 600px

Billard Sport BS / Joomla 3.x /
  billard-bs.de

PC Systembetreuer ist J. Brandes - IT seit über 35 Jahren - Technik: Joomla 3.4+, Bootstrap 3.3.4 und "Knowledge"

© 2018 - Websitedesign und Layout seit 07/2015 - Impressum - Datenschutzerklärung
Nach oben