<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Visual_Basic_for_Applications</id>
	<title>Visual Basic for Applications - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Visual_Basic_for_Applications"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Visual_Basic_for_Applications&amp;action=history"/>
	<updated>2026-05-18T03:09:33Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Visual_Basic_for_Applications&amp;diff=43927&amp;oldid=prev</id>
		<title>imported&gt;Siegbert v2: + Normdaten</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Visual_Basic_for_Applications&amp;diff=43927&amp;oldid=prev"/>
		<updated>2026-01-09T07:11:32Z</updated>

		<summary type="html">&lt;p&gt;+ Normdaten&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Programmiersprache&lt;br /&gt;
| Name                         =&lt;br /&gt;
| Logo                         = [[Datei:Microsoft Visual Basic for Applications logo.svg|200px]]&lt;br /&gt;
| Beschreibung                 = &amp;lt;!-- Beschreibung des Logos --&amp;gt;&lt;br /&gt;
| Paradigma                    = [[Prozedurale Programmierung|prozedural]], [[Objektorientierte Programmierung|objektorientiert]]&lt;br /&gt;
| Erscheinungsjahr             =&lt;br /&gt;
| Designer                     =&lt;br /&gt;
| Entwickler                   =&lt;br /&gt;
| AktuelleVersion              = 7.1 ([[Microsoft Office 2021|Office 2021]])&lt;br /&gt;
| AktuelleVersionFreigabeDatum =&lt;br /&gt;
| AktuelleVorabVersion         =&lt;br /&gt;
| AktuelleVorabVersionFreigabeDatum =&lt;br /&gt;
| Typisierung                  =&lt;br /&gt;
| Implementierung              =&lt;br /&gt;
| Dialekte                     =&lt;br /&gt;
| Standardisierungen           = MS-VBAL&amp;lt;ref&amp;gt;{{Internetquelle |autor=Melanie Swarner et al. |url=https://learn.microsoft.com/en-us/openspecs/microsoft_general_purpose_programming_languages/ms-vbal/d5418146-0bd2-45eb-9c7a-fd9502722c74 |titel=&amp;amp;#91;MS-VBAL&amp;amp;#93;: VBA Language Specification |werk=learn.microsoft.com |hrsg=Microsoft |datum=2024-05-21 |sprache=en |abruf=2024-06-29}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| Beeinflusst_von              =&lt;br /&gt;
| Beeinflusste                 =&lt;br /&gt;
| Betriebssystem               =&lt;br /&gt;
| Lizenz                       =&lt;br /&gt;
| Website                      =&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Visual Basic for Applications&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;&amp;#039;VBA&amp;#039;&amp;#039;&amp;#039;) ist eine [[Skriptsprache]], die ursprünglich für die Steuerung von Abläufen der [[Microsoft Office|Microsoft-Office]]-Programmfamilie entwickelt wurde. Sie wurde aus dem von [[Microsoft]] entwickelten [[BASIC]]-Dialekt [[Visual Basic Classic|Visual Basic]] (VB) abgeleitet.&lt;br /&gt;
&lt;br /&gt;
== Verfügbarkeit ==&lt;br /&gt;
Derzeit ist VBA in den Microsoft-Office-Programmen [[Microsoft Word|Word]] (ab Version 97), [[Microsoft Excel|Excel]] (ab Version 5.0)&amp;lt;ref&amp;gt;{{Internetquelle |url=https://www.computerwoche.de/article/2783672/anwendungs-programmierung-mit-excel-5-0.html |titel=Anwendungs-Programmierung mit Excel 5.0 |werk=Computerwoche |datum=1994-11-25 |sprache=de |abruf=2025-07-09}}&amp;lt;/ref&amp;gt;, [[Microsoft Access|Access]] (ab Version 95), [[Microsoft Project|Project]], [[Microsoft PowerPoint|PowerPoint]], [[Microsoft FrontPage|FrontPage]], [[Microsoft Visio|Visio]] (ab Version 2000) und [[Microsoft Outlook|Outlook]] verfügbar. VBA löste seit Mitte der 1990er Jahre die untereinander inkompatiblen [[Makro]]-Sprachen der einzelnen Microsoft-Office-Programme ab.&amp;lt;ref&amp;gt;{{Literatur |Autor=Flavio Morgado |Titel=Programming Excel with VBA |Auflage=1 |Verlag=Apress |Ort=Berkeley |Datum=2016 |Sprache=en |ISBN=978-1-4842-2204-1 |Kapitel=Understanding Visual Basic for Applications (VBA) |Seiten=1 |DOI=10.1007/978-1-4842-2205-8}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
Darüber hinaus wird VBA von der [[Corel]] Corporation lizenziert und ist in [[CorelDraw Graphics Suite|Corel Draw]] und [[Corel Photo-Paint]] sowie der iGrafx Produktpalette verfügbar. VBA wird auch als Makrosprache in [[AutoCAD]], [[ArcGIS]], [[ARIS Toolset|ARIS]], [[CATIA]], [[SolidWorks]], [[MindManager]] und vielen anderen Anwendungen eingesetzt. Microsoft Office 2008 für den [[Apple Macintosh]] bot keine VBA-Unterstützung, diese ist jedoch in der Version 2011 wieder integriert.&amp;lt;ref&amp;gt;{{Internetquelle |autor=Elsa Wenzel |url=https://www.cnet.com/reviews/microsoft-office-2008-for-mac-review/ |titel=Microsoft Office 2008 for Mac review |werk=cnet.com |hrsg=[[CNET]] |datum=2008-01-07 |sprache=en |abruf=2024-06-29}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sprache ==&lt;br /&gt;
VBA gilt als leistungsfähige Skriptsprache und ist die am weitesten verbreitete Möglichkeit, auf Microsoft-Office-Anwendungen (Excel, Word, Access etc.) basierende Programme zu erstellen. VBA ist eine [[Interpreter|interpretierte]] Programmiersprache, deren [[Syntax]] der von Visual Basic (sowohl [[Visual Basic Classic]] als auch [[Visual Basic .NET]]) entspricht. Die Möglichkeiten und die Leistungsfähigkeit von VBA sind allerdings gegenüber Visual Basic deutlich reduziert. Beispielsweise wird ein VBA-Skript zwar vorkompiliert, um Variablen- und Konstantentabellen aufzubauen und syntaktische Überprüfungen durchzuführen, ein [[Compiler|Kompilieren]] bis hin zu ausführbarem [[Maschinencode]] ist jedoch nicht möglich.&lt;br /&gt;
&lt;br /&gt;
VBA ist vor allem für [[prozedurale Programmierung]] konzipiert. [[Klasse (Objektorientierung)|Klassen]] und [[Objekt (Programmierung)|Objekte]] können zwar syntaktisch dargestellt und implementiert werden, unterliegen jedoch den auch in Visual Basic Classic bestehenden Einschränkungen (fehlende [[Vererbung (Programmierung)|Implementierungsvererbung]]); andere Merkmale wie [[Datenkapselung (Programmierung)|Datenkapselung]], [[Schnittstelle (Objektorientierung)|Interface-Vererbung]] und [[Polymorphie (Programmierung)|Laufzeitpolymorphie]] können hingegen verwendet werden.&lt;br /&gt;
&lt;br /&gt;
Der Zugriff aus VBA auf das jeweilige Wirtsprogramm (Word, Excel etc.) erfolgt über eine [[Programmierschnittstelle]]. In den jeweiligen Anwendungen stehen neben dem VBA-Kern (Kontrollstrukturen, Datentypen, mathematische Funktionen, [[Dateisystem]]) spezielle Objekte des Wirtsprogramms zur Verfügung. Diese Objekte ermöglichen es, Abläufe des jeweiligen Wirtsprogramms zu automatisieren. Da diese Schnittstelle über das [[Component Object Model]] (COM) realisiert wird, kann eine VBA-Anwendung auch auf andere COM-Komponenten als die vom Wirtsprogramm zur Verfügung gestellten zugreifen.&lt;br /&gt;
&lt;br /&gt;
Im Gegensatz zu Visual Basic 6.0 und [[Visual Basic Script]] (VBS) besitzt VBA seit der Version 7.0 zusätzliche [[64-Bit-Architektur|64-Bit]]-Datentypen und [[Präprozessor]]anweisungen zur [[Bedingte Anweisung und Verzweigung|Fallunterscheidung]] von [[32-Bit-Architektur|32-Bit]]-Systemen und 64-Bit-Systemen.&amp;lt;ref&amp;gt;{{Internetquelle |url=https://learn.microsoft.com/en-us/office/vba/language/concepts/getting-started/64-bit-visual-basic-for-applications-overview |titel=64-bit Visual Basic for Applications overview |werk=learn.microsoft.com |hrsg=Microsoft |datum=2022-01-22 |sprache=en |abruf=2025-06-19}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Kompatibilität zu VB.NET ==&lt;br /&gt;
Bis zur Visual-Basic-Version 6.0 ist es problemlos möglich, Module und [[Dialog (Benutzeroberfläche)|Formulare]] zwischen VBA und VB auszutauschen. Seit der Umstellung von Visual-Basic auf das [[.Net-Framework]] ist dies nicht mehr möglich, da sich das [[Dateiformat]] geändert hat. Allerdings können Module (also [[Quelltext]]-Dateien) durch Umbenennung und gezielte Anpassungen an die .NET-Datenstrukturen überführt werden. Bei Formularen ist dies nicht möglich, sie müssen komplett neu erstellt werden. Alternativ gibt es die Möglichkeit, in [[Visual Studio.NET]] mit den &amp;#039;&amp;#039;Visual Studio Tools for Office System&amp;#039;&amp;#039; (VSTO) Add-Ins für die Windows-Version von MS Office zu entwickeln, die die gleichen Aufgaben übernehmen können wie klassische Makros.&lt;br /&gt;
&lt;br /&gt;
== Sicherheit ==&lt;br /&gt;
Die Anwendungsmöglichkeiten von VBA sind nicht nur auf die Automatisierung der Wirtsanwendungen beschränkt. Der Leistungsumfang von VBA umfasst auch wesentliche Funktionen von Visual Basic und alle auf COM basierten Anwendungen des ausführenden PC. Daher können VBA-Anwendungen, ebenso wie viele andere Windows-Anwendungen, [[Schadprogramm|schädlichen Code]] enthalten.&lt;br /&gt;
&lt;br /&gt;
Statt eines A-priori-Sicherheitskonzeptes, bei dem möglicherweise gefährliche Funktionen schon beim Sprachentwurf eingeschränkt oder die Makroausführung mittels einer [[Sandbox]] vom restlichen System abgeschirmt wird, stellt Microsoft-Office lediglich im Nachhinein Methoden zur Absicherung der Programmausführung wie etwa eine Prüfungsmöglichkeit eventuell vorhandener [[Digitales Zertifikat|Makrozertifizierung]] zur Verfügung. Diese Faktoren, kombiniert mit der leichten Erlernbarkeit von VBA, führten zur Verbreitung von [[Makrovirus|Makroviren]]. Neuere MS-Office-Versionen fragen vor der Ausführung von VBA-Programmen nach und empfehlen, nur vertrauenswürdige und mit überprüfbaren Zertifikaten ausgestattete Makros zuzulassen. Zum Schutz vor Einsichtnahme kann der VBA-Code durch ein Kennwort geschützt werden. Dieser Schutz konnte in der Vergangenheit teilweise recht einfach ausgehebelt werden, z.&amp;amp;nbsp;B. durch Import in die äquivalente Anwendung des [[OpenOffice.org]]-Paketes.&lt;br /&gt;
&lt;br /&gt;
== Verwendung ==&lt;br /&gt;
In Unternehmen wird VBA häufig verwendet, um schnell kleinere IT-Lösungen zu realisieren oder um Prototypen für spätere native Softwareanwendungen zu evaluieren.&lt;br /&gt;
&lt;br /&gt;
Zahlreiche Websites und Newsgroups beschäftigen sich mit VBA.&lt;br /&gt;
&lt;br /&gt;
== Vorteile ==&lt;br /&gt;
* Allgemein: Die Möglichkeit zur Programmierung von Makros erhöht den Nutzwert der damit verknüpften Basis-Anwendungen, die dadurch eine Erweiterbarkeit mit anwenderspezifischen Funktionen erhalten.&lt;br /&gt;
* Vergleichsweise einfach zu erlernende Sprache ([[BASIC]] wurde für Programmier-Anfänger entworfen);&lt;br /&gt;
* großer Funktionsumfang im Office-Bereich durch die vielen Funktionen der Basis-Anwendungen;&lt;br /&gt;
* anwendungsübergreifend über [[Component Object Model|COM]], das auch von vielen nicht-Microsoft-Anwendungen angeboten wird;&lt;br /&gt;
* aufgrund seiner Verbreitung gibt es eine Vielzahl von freien Programmsammlungen, Literatur und kommerziellen Angeboten;&lt;br /&gt;
* da sich die Programme in eigenen Add-Ins kapseln lassen, können sie nach Bedarf zur Anwendung dazugeladen werden.&lt;br /&gt;
&lt;br /&gt;
== Nachteile ==&lt;br /&gt;
Wird die Schaffung einer sauberen und langfristig nutzbaren Programmierung angestrebt, dann ist es sinnvoll, dass die mit VBA entwickelten Skripte bzw. Makros und deren Struktur den Standards der Software-Entwicklung entsprechen. Aus diesem Grund ist es notwendig, VBA-Projekte genauso zu konzipieren wie andere Softwareprojekte und den sonst bei Makros üblichen Ad-hoc-Programmierstil zugunsten eines gut geplanten Softwareentwurfes abzulegen.&lt;br /&gt;
&lt;br /&gt;
Die vorhandenen Einschränkungen in VBA erschweren auch für erfahrene Entwickler den Einsatz moderner Programmier- und Entwurfstechniken, wie sie in [[Visual Basic .NET|VB.net]] möglich sind. Nach einiger Zeit können mit VBA in der Praxis deshalb Softwaresysteme entstehen, die kaum mehr sinnvoll weiterentwickelt werden können, da ihre Struktur zu komplex und kaum durchschaubar ist.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Beispiel für eine benutzerdefinierte Funktion in Excel, welche den vorherigen Geschäftstag zurückliefert.&lt;br /&gt;
&lt;br /&gt;
=== VBA ab Office 97 ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Public Function VorherigerGeschaeftstag(dt As Date) As Date&lt;br /&gt;
    Dim wd As Integer&lt;br /&gt;
&lt;br /&gt;
    wd = Weekday(dt)  &amp;#039; Weekday liefert 1 für Sonntag, 2 für Montag usw.&lt;br /&gt;
    Select Case wd&lt;br /&gt;
        Case 1&lt;br /&gt;
            &amp;#039; Auf Sonntag wird Datum vom letzten Freitag zurückgegeben&lt;br /&gt;
            VorherigerGeschaeftstag = dt - 2&lt;br /&gt;
        Case 2&lt;br /&gt;
            &amp;#039; Auf Montag wird Datum vom letzten Freitag zurückgegeben&lt;br /&gt;
            VorherigerGeschaeftstag = dt - 3&lt;br /&gt;
        Case Else&lt;br /&gt;
            &amp;#039; Andere Tage: vorheriges Datum wird zurückgegeben&lt;br /&gt;
            VorherigerGeschaeftstag = dt - 1&lt;br /&gt;
    End Select&lt;br /&gt;
End Function&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== VBA unter Office 95 ===&lt;br /&gt;
VBA wurde in Excel 95 lokalisiert, das Codebeispiel auf einer deutschsprachigen Installation von Excel 95 würde so aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;vb&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
Funktion VorherigerGeschaeftstag(dt Als Datum) Als Datum&lt;br /&gt;
    Dim wd Als integer&lt;br /&gt;
&lt;br /&gt;
    wd = Wochentag(dt) &amp;#039; Wochentag liefert 1 für Sonntag, 2 für Montag usw.&lt;br /&gt;
    Prüfe Fall wd&lt;br /&gt;
        Fall 1&lt;br /&gt;
            &amp;#039; Auf Sonntag wird Datum vom letzten Freitag zurückgegeben&lt;br /&gt;
            VorherigerGeschaeftstag = dt - 2&lt;br /&gt;
        Fall 2&lt;br /&gt;
            &amp;#039; Auf Montag wird Datum vom letzten Freitag zurückgegeben&lt;br /&gt;
            VorherigerGeschaeftstag = dt - 3&lt;br /&gt;
        Fall Sonst&lt;br /&gt;
            &amp;#039; Andere Tage: vorheriges Datum wird zurückgegeben&lt;br /&gt;
            VorherigerGeschaeftstag = dt - 1&lt;br /&gt;
    Ende Prüfe&lt;br /&gt;
Ende Funktion&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[StarOffice Basic]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur |Autor=Axel Buhl, Petra Strauch |Titel=Grundkurs VBA: Einführung in die Programmentwicklung mit Visual Basic for Applications in Excel |Auflage=3 |Verlag=Oldenbourg |Ort=München |Datum=2005 |Sprache=de |ISBN=3-486-57889-8}}&lt;br /&gt;
* {{Literatur |Autor=Bernd Held |Titel=Excel-VBA: Mit über 1000 Makros für Excel 97 bis 2007 |Verlag=Markt + Technik |Ort=München |Datum=2007 |Sprache=de |ISBN=3-8272-4117-0}}&lt;br /&gt;
* {{Literatur |Autor=Andreas Janka |Titel=VBA mit Word |Verlag=Galileo Press |Datum=2004 |Sprache=de |ISBN=3-89842-469-3}}&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
{{Wikibooks|VBA in Excel}}&lt;br /&gt;
* [https://www.vba-tutorial.de/ VBA-Tutorial] erklärt VBA unabhängig von einer bestimmten Applikation&lt;br /&gt;
* Ben Chinowsky: [https://learn.microsoft.com/de-de/previous-versions/office/ee814737(v=office.14) Erste Schritte mit VBA in Excel 2010], learn.microsoft.com, 11.&amp;amp;nbsp;Dezember 2009.&lt;br /&gt;
&amp;lt;!-- Skriptsammlungs-Seiten bitte nur dann einfügen, wenn man gut begründen kann, warum diese wichtiger und relevanter als die 3 Mio. anderen ist. Im Zweifel vorher auf der Diskussionsseite nachfragen. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Normdaten |TYP=s |GND=4341325-0 |VIAF=35149196255274790463}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:BASIC]]&lt;br /&gt;
[[Kategorie:Skriptsprache]]&lt;br /&gt;
[[Kategorie:Microsoft Office]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Siegbert v2</name></author>
	</entry>
</feed>