Im Rahmen der EDV-Mitarbeiterfortbildungen der TU Braunschweig findet am 08.02.2021 als Online-Seminar das Seminar "Microsoft Excel 2016 – Makros und VBA" statt.

Hier unsere Ausschreibung: Sie lernen in diesem praxisorientierten Seminar die Handhabung und den Umgang mit dem Programm Excel aus dem Hause Microsoft:

Oft werden bei der Arbeit mit Excel immer wieder die gleichen Arbeitsschritte und Abläufe durchgeführt. In diesem Online-Seminar lernen Sie diese Arbeiten mit Hilfe von Makros und VBA-Skripten zu automatisieren, um Ihre tägliche Arbeit mit Excel effizienter zu machen:

  • Dateitypen für Mappen mit aktiven Elementen
  • Nutzung von Arbeitsmappenvorlagen
  • Makros aufzeichnen (Makrorekorder)
  • VBA-Editor nutzen (Debugging)
  • Makros manuell anpassen (Editing)
  • Eigener VBA-Makrocode (Module)
  • Eigene Excel-Funktionen für die Nutzung von Arbeitsmappen per VBA Functionerstellen
  • VBA-Beispiele

Hier die Rahmendaten zum Seminar:

Ort: Online per BigBlueButton
Zeiten: Mo., 08.02.2021; 09.00 - 16.00 Uhr

Ich werde das Thema - in gewohnter Weise - mit ausführlichen Infos begleiten.
Ihr Trainer Joe Brandes

 

Montag, 08.02.2021, 09.00 - 16.00 Uhr

Orientierungsphase, TN-Fragen, ...

 

Hinweis auf Online-Resourcen und Tools

...für die weiteren Arbeiten in Excel-Seminaren... zu beachten: Temporärer Download-Ordner für TN im Seminar

Downloads (Onedrive-Laufwerk Trainer J. Brandes)

Anm.: temporär - aber auch noch nach den Seminaren inkl. Trainerdatei(en)!) auf Onedrive-Laufwerk Trainer J. Brandes
Anleitung: bitte einfach Dokumente sauber markieren und mit Schaltfläche "Herunterladen" auf eigenen Rechner downloaden!
Falls Ihr Browser keine Rückfrage zum Speicherort stellt, dann sollten sich die heruntergeladenen Dateien in Ihrem Ordner Downloads finden lassen.

Trainer-Tools:

Screenshots mit Windows Boardmitteln ( Win + Druck )
Screenshot-Snipping-Tool mit Windows Boardmitteln ( Umschalten + Win + Druck )
Bildschirmlupe mit Windows Boardmitteln ( Win + + ;weglegen der Lupe mit Win + ESC
Alternative/ehemalige Lösungen:
Bildschirmlupe "Virtual Magnifiying Glass" und Screenshots erstellen mit "Lightscreen"); z.B. über Portal portableapps.com

Anm.: Bildschirmlupen bzw. Vergrößerungen lassen sich in Online-Seminaren oft nicht optimal einsetzen!

Linksammlung (Kurzauflistung)

Seminarende: bitte das Online-Seminar rechts oben (Drei-Punkte-Menü) über die Schaltfläche "Ausloggen" verlassen!

Ausloggen aus BBB 800px

Anm.: sonst schmeißen Sie ALLE aus der Konferenz!

Buchempfehlung: "VBA mit Excel", Bernd Held, (aktueller Link zur 4. Auflage)
Rheinwerk Verlag, 1016 Seiten, 4., aktualisierte und erweiterte Auflage 2019, gebunden
Rheinwerk Computing, ISBN 978-3-8362-7398-5
Anm.: Beispiele lassen sich downloaden, im Bundle erhältlich: +5,- € Aufschlag für DRM-freie PDF/EPUB/MOBI!

 

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 (aktive Inhalte) 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
xlsb - spezielles Binärformat (siehe PERSONAL.xlsb)

Arbeitsmappenvorlagen (*.xltm)

Sammeln von Inhalten, Funktionen oder auch Makros in einer Mappe und bereitstellen als Template
Über neue Mappe - Meine Vorlagen lassen sich dann die Mappen inkl. der aktiven Elemente nutzen

Arbeitsmappenvorlagen einfach mittels "Speichern unter..." und Dateityp *.xltx  in passenden Vorlagenordner des Office-Users speichern.
Vorlagen für Mappen mit Makros natürlich mit *.xltm  speichern!

Aktueller Standardordner: C:\Users\benutzername\Documents\Benutzerdefinierte Office-Vorlagen   
Anm.: im Windows Explorer einfach deutschen Ordner "Dokumente" aufsuchen...
Die Vorlagen über Menüband Datei - Neu - Rubrik: Persönlich aufrufen/nutzen.

Speicherort für Vorlagen in Vorgänger-Windows/Office:
..\AppData\Roaming\Microsoft\Templates 

Tipp: Unterordner im Templates-Ordner des Office lassen Registerkarten für Meine Vorlagen entstehen!

PERSONAL.XLSB: Excel kennt auch "Persönliche Makro-Arbeitsmappen":
..\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB  (siehe also Benutzerprofil)

Einfache Erstellung der PERSONAL.XLSB: Makro erstellen mit "Makro speichern in: Persönliche Makroarbeitsmappe"

Danach lässt sich diese Technik über den VBA-Editor - Projektexplorer verwalten (Code hinzufügen/hinkopieren).

Makros

... Erste Gehversuche mit VBA-Techniken über Aufzeichnungen von Makros

An dieser Stelle sei auf die Seminare mit entsprechendem Schwerpunkt "Excel - Makros" verwiesen (also ohne weitere Vertiefungen in VBA).

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 Pfade - Universal Naming Convention) 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 (siehe PERSONAL.xlsb in Ordner .\XLSTART ) !
Und wieder: 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 individuellen Modulen lassen sich die VBA-Codes besser und effizienter organisieren!

Manuelles (zeilenweise) Abarbeiten mit Funktionstaste F8

Aufruf der Hilfen zu VBA Befehlen und Aufrfen F1

Manuelles (zeilenweise) Abarbeiten mit Strg + Leertaste 

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), Schrift/Schriftgröße oder automatische "Option Explicit" für neue Module

Codeeingaben gerne in Small (kleinen Zeichen) 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.

Siehe auch: ScrollArea

VBA per Copy & Paste

Eine Idee für unsere Einführung in die Automatisierungen mit Makros und VBA-Code ist die praktische Umsetzung "quasi fertiger" VBA-Lösungen aus diversen Quellen:

  • Fachbücher
    siehe Herdt-Skript, VBA Buch Rheinwerk-Verlag (über 600 Beispiele), ...
  • Online-Recherchen
    neben der reinen Suche natürlich auch diverse Fachportale zu VBA

Hier mal ein Beispiel: Internet-Recherche mit "excel VBA tabellenblätter sortieren" ergibt aktuell mit Google gut 26.000 Suchergebnisse!

Darunter findet sich (z.B.) auch eines der erwähnten Portale rund um Excel:
https://www.excel-inside.de/vba-loesungen/datei/951-tabellenbl%C3%A4tter-alphabetisch-sortieren 

Und schon hat man ein "Copy & Paste" Beispiel für die Sortierung von Tabellenblättern

View source
  1. Sub Sheets_alphabetisch_sortieren()
  2. '** Dieses Makro sortiert die Blätter in alphabetischer Reihenfolge
  3. '** Reihenfolge: Sonderzeichen, Ziffern, Buchstaben
  4.  
  5. '** Dimensionierung der Variablen
  6. Dim intAnz As Integer
  7. Dim a, b As Integer
  8. Dim strSortKrit As String
  9.  
  10. '** Sortierreihenfolge festlegen
  11. '** "<" = Aufsteigend von 0-9 und A-Z
  12. '** ">" = Absteigend von Z-A und 9-0
  13. strSortKrit = ">" 'Nach Bedarf anpassen!
  14.  
  15. '** Ermittlung Anzahl Tabellenblätter
  16. intAnz = ActiveWorkbook.Worksheets.Count
  17.  
  18. '** Blätter nacheinander durchlaufen und sortieren
  19. For a = 1 To intAnz
  20.      For b = a To intAnz
  21.          If strSortKrit = "<" Then
  22.              If Worksheets(b).Name < Worksheets(a).Name Then
  23.                  Worksheets(b).Move Before:=Worksheets(a)
  24.              End If
  25.          ElseIf strSortKrit = ">" Then
  26.              If Worksheets(b).Name > Worksheets(a).Name Then
  27.                  Worksheets(b).Move Before:=Worksheets(a)
  28.              End If
  29.          End If
  30.     Next b
  31. Next a
  32.  
  33. End Sub
Den Code einfach in ein Modul Ihrer Wahl kopieren und austesten!

Und diese beispielhafte Suche kratzt nur an der Oberfläche der möglichen Umsetzungen - wie ich immer sage: "Das Rad wurde schon erfunden". Was in diesem Zusammenhang heißen soll, dass es bereits Lösungen für Ihre Probleme gibt. Es liegt an uns diese sauber mit Excel-Technik umsetzen zu können.

Eigene Funktionen mit VBA

Mit ein wenig function VBA-Code lassen sich eigene Funktionen deklarieren, die man dann in Excel wie die eingebauten Funktionen nutzen kann.

View source
  1. Public Function NettoMwst(Betrag, Optional SteuerSatz As Single = 0.19)
  2. 'Quelle: Helmut Pirklbauer
  3. Dim Netto As Double
  4. Netto = Betrag / (1 + SteuerSatz)
  5. NettoMwst = Excel.Application.Round(Netto, 4)
  6. End Function
Hinweis: diese functions müssen sich bis auf Weiteres in den Modulen von Arbeitsmappen befinden (Anm.: also nicht in der personal.xlsb - der persönlichen Arbeitsmappe).

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.Range("A1").Value = 100
  4. 'Die ScrollArea für Tabelle1 setzen
  5. Tabelle1.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 mit unterschiedlicher Ansprache ...

Die Tabellenblattnamen lassen sich ändern in der Blattansicht und über das Eigenschaftenfenster; z.B.:

  • Codename:
    Tabelle3 
  • Normaler Name: (hier: Objekt Worksheets nutzen)
    tbl_Daten

Empfehlung (bzw. häufig Best Practise): 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/Empfehlung: 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() in Zelle A1?
?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.: SAP-Excel-Exports sind oft manuell eingestellt, sodass Excel diese Blätter nicht automatisch aktualisiert!

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-Objekte 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. ' Eigenschaft
  5. .Borders(xlInsideHorizontal).ColorIndex = 4
  6. ' Methode
  7. .BorderAround Weight:=xlThick, ColorIndex:=3
  8. End With
  9.  
  10. End Sub
Beachte: Zuweisungen mit = und := 
Bitte auch an Code-Completion mit Strg + Leertaste denken und die automatischen Auswahllistenfelder nutzen.

Variablen

Deklarieren mit Dim ; Tipp: Sonderzeichen vermeiden

lowerCamelCase empfohlen: intBeispielVar   (Prefix empfohlen; hier: int für Integer-Variable)
Am Anfang der Sub-Routinen die Variablen 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:

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

Verwzeigungen

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

Hier mal zwei Beispiele für UserForms

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 - Eingabemasken mit Excel (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 Klick 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

  

  • *.xlsm Dateityp*.xlsm Dateityp
  • SicherheitSicherheit
  • VBA-Editor HilfeVBA-Editor Hilfe
  • MsgBoxMsgBox
  • For - SchleifenFor - Schleifen
  • UserFormsUserForms

 

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 positiven Rückmeldungen über den BBB-Chat und persönlich.
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"

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