Suche…


Bemerkungen

Microsoft Excel enthält eine umfassende Makroprogrammiersprache namens VBA. Diese Programmiersprache bietet Ihnen mindestens drei zusätzliche Ressourcen:

  1. Excel automatisch mit Makros vom Code entfernen. In der Regel kann alles, was der Benutzer durch Manipulieren von Excel über die Benutzeroberfläche tun kann, durch Schreiben von Code in Excel VBA erledigt werden.
  2. Erstellen Sie neue benutzerdefinierte Arbeitsblattfunktionen.
  3. Interagieren Sie Excel mit anderen Anwendungen wie Microsoft Word, PowerPoint, Internet Explorer, Notepad usw.

VBA steht für Visual Basic für Applikationen. Es ist eine benutzerdefinierte Version der alten Visual Basic-Programmiersprache, die seit Mitte der 1990er Jahre die Makros von Microsoft Excel unterstützt.

WICHTIG
Bitte stellen Sie sicher, dass alle Beispiele oder Themen, die mit dem Tag excel-vba erstellt wurden, spezifisch und für die Verwendung von VBA mit Microsoft Excel relevant sind. Alle vorgeschlagenen Themen oder Beispiele, die für die VBA-Sprache generisch sind, sollten abgelehnt werden, um Doppelarbeit zu vermeiden.

  • On-Topic-Beispiele:

    Erstellen und Interagieren mit Arbeitsblattobjekten
    Die WorksheetFunction Klasse und die entsprechenden Methoden
    Verwenden Sie die xlDirection Enumeration zum Navigieren in einem Bereich

  • Off-Topic-Beispiele:

    So erstellen Sie eine 'für jede' Schleife
    MsgBox Klasse und wie eine Nachricht anzuzeigen ,
    Verwenden von WinAPI in VBA


Versionen

VB

Ausführung Veröffentlichungsdatum
VB6 1998-10-01
VB7 2001-06-06
WIN32 1998-10-01
WIN64 2001-06-06
MAC 1998-10-01

Excel

Ausführung Veröffentlichungsdatum
16 2016-01-01
fünfzehn 2013-01-01
14 2010-01-01
12 2007-01-01
11 2003-01-01
10 2001-01-01
9 1999-01-01
8 1997-01-01
7 1995-01-01
5 1993-01-01
2 1987-01-01

Variablen deklarieren

Um Variablen in VBA explizit zu deklarieren, verwenden Sie die Dim Anweisung, gefolgt von Variablenname und Typ. Wenn eine Variable ohne Deklaration verwendet wird oder kein Typ angegeben wird, wird der Typ Variant zugewiesen.

Verwenden Sie die Option Explicit Anweisung in der ersten Zeile eines Moduls, um die Deklaration aller Variablen vor der Verwendung zu erzwingen (siehe immer Verwenden Sie "Option Explicit" ).

Die Option Explicit immer zu verwenden ist sehr zu empfehlen, da Tippfehler / Rechtschreibfehler vermieden werden und sichergestellt wird, dass Variablen / Objekte ihren beabsichtigten Typ beibehalten.

Option Explicit

Sub Example()
    Dim a As Integer
    a = 2
    Debug.Print a
    'Outputs: 2

    Dim b As Long
    b = a + 2
    Debug.Print b
    'Outputs: 4

    Dim c As String
    c = "Hello, world!"
    Debug.Print c
    'Outputs: Hello, world!
End Sub

Mehrere Variablen können in einer einzigen Zeile mit Kommas als Trennzeichen deklariert werden. Jeder Typ muss jedoch einzeln deklariert werden. Andernfalls wird der Variant Typ verwendet.

Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str)    'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng)    'Output: Long

Variablen können auch mit Datentypzeichen-Suffixen ($% &! # @) Deklariert werden, von deren Verwendung wird jedoch zunehmend abgeraten.

 Dim this$  'String
 Dim this%  'Integer
 Dim this&  'Long
 Dim this!  'Single
 Dim this#  'Double
 Dim this@  'Currency

Andere Arten, Variablen zu deklarieren, sind:

  • Static wie: Static CounterVariable as Integer

Wenn Sie die Static-Anweisung anstelle einer Dim-Anweisung verwenden, behält die deklarierte Variable ihren Wert zwischen den Aufrufen bei.

  • Public wie: Public CounterVariable as Integer

Öffentliche Variablen können in beliebigen Prozeduren im Projekt verwendet werden. Wenn eine öffentliche Variable in einem Standardmodul oder einem Klassenmodul deklariert ist, kann sie auch in Projekten verwendet werden, die auf das Projekt verweisen, in dem die öffentliche Variable deklariert ist.

  • Private wie: Private CounterVariable as Integer

Private Variablen können nur von Prozeduren im selben Modul verwendet werden.

Quelle und weitere Informationen:

MSDN-deklarierende Variablen

Zeichen eingeben (Visual Basic)

Öffnen des Visual Basic Editors (VBE)


Schritt 1: Öffnen Sie eine Arbeitsmappe

Geben Sie hier die Bildbeschreibung ein


Schritt 2 Option A: Drücken Sie Alt + F11

Dies ist die Standardverknüpfung zum Öffnen der VBE.

Schritt 2 Option B: Registerkarte "Entwickler" -> Code anzeigen

Zuerst muss die Entwicklerregisterkarte zur Multifunktionsleiste hinzugefügt werden. Gehen Sie zu Datei -> Optionen -> Multifunktionsleiste anpassen und aktivieren Sie das Kontrollkästchen für Entwickler.

Geben Sie hier die Bildbeschreibung ein

Gehen Sie dann zur Registerkarte "Entwickler" und klicken Sie auf "Code anzeigen" oder "Visual Basic".

Geben Sie hier die Bildbeschreibung ein

Schritt 2 Option C: Registerkarte Ansicht> Makros> Klicken Sie auf die Schaltfläche Bearbeiten, um ein vorhandenes Makro zu öffnen

Alle drei dieser Optionen öffnen den Visual Basic Editor (VBE):

Geben Sie hier die Bildbeschreibung ein

Eine neue Objektbibliothek hinzufügen

In diesem Verfahren wird beschrieben, wie eine Objektbibliothek hinzugefügt und anschließend neue Variablen mit Bezug auf die neuen Bibliotheksklassenobjekte deklariert werden.

Das folgende Beispiel zeigt, wie Sie die PowerPoint- Bibliothek zum vorhandenen VB-Projekt hinzufügen. Wie zu sehen ist, ist derzeit die PowerPoint-Objektbibliothek nicht verfügbar.

Geben Sie hier die Bildbeschreibung ein

Schritt 1 : Wählen Sie Menü Extras -> Referenzen… Geben Sie hier die Bildbeschreibung ein

Schritt 2 : Wählen Sie die Referenz aus, die Sie hinzufügen möchten. In diesem Beispiel scrollen wir nach unten, um nach " Microsoft PowerPoint 14.0-Objektbibliothek " zu suchen, und klicken Sie auf " OK ". Geben Sie hier die Bildbeschreibung ein

Hinweis: PowerPoint 14.0 bedeutet, dass die Office 2010-Version auf dem PC installiert ist.

Schritt 3 : Wenn Sie im VB-Editor die Tastenkombination Strg + Leertaste gleichzeitig drücken, erhalten Sie die Autocomplete-Option von PowerPoint. Geben Sie hier die Bildbeschreibung ein

Nach Auswahl von PowerPoint und Drücken von . wird ein weiteres Menü mit allen Objektoptionen angezeigt, die sich auf die PowerPoint-Objektbibliothek beziehen. Dieses Beispiel zeigt, wie Sie das Objekt Application PowerPoint auswählen. Geben Sie hier die Bildbeschreibung ein

Schritt 4 : Jetzt kann der Benutzer mithilfe der PowerPoint-Objektbibliothek weitere Variablen deklarieren.

Deklarieren Sie eine Variable, die auf das Presentation Objekt der PowerPoint-Objektbibliothek verweist. Geben Sie hier die Bildbeschreibung ein

Deklarieren Sie eine andere Variable, die auf das Slide Objekt der PowerPoint-Objektbibliothek verweist. Geben Sie hier die Bildbeschreibung ein

Nun sieht der Variablendeklarationsabschnitt wie in der Abbildung unten aus, und der Benutzer kann diese Variablen in seinem Code verwenden. Geben Sie hier die Bildbeschreibung ein

Codeversion dieses Tutorials:

Option Explicit

Sub Export_toPPT()

Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide

' here write down everything you want to do with the PowerPoint Class and objects


End Sub

Hallo Welt

  1. Öffnen Sie den Visual Basic-Editor (siehe Öffnen des Visual Basic-Editors ).
  2. Klicken Sie auf Einfügen -> Modul, um ein neues Modul hinzuzufügen:

Geben Sie hier die Bildbeschreibung ein

  1. Kopieren Sie den folgenden Code, und fügen Sie ihn in das neue Modul ein:
  Sub hello()
    MsgBox "Hello World !"
  End Sub

Erhalten :

Geben Sie hier die Bildbeschreibung ein

  1. Klicken Sie auf den grünen "Play" -Pfeil (oder drücken Sie F5) in der Visual Basic-Symbolleiste, um das Programm auszuführen: Geben Sie hier die Bildbeschreibung ein

  2. Wählen Sie das neu erstellte "Hallo" aus und klicken Sie auf " Run . Geben Sie hier die Bildbeschreibung ein

  3. Fertig, Ihr sollte folgendes Fenster sehen:

Geben Sie hier die Bildbeschreibung ein

Erste Schritte mit dem Excel-Objektmodell

Dieses Beispiel soll eine sanfte Einführung in das Excel-Objektmodell für Anfänger sein .


  1. Öffnen Sie den Visual Basic Editor (VBE)
  2. Klicken Sie auf Ansicht -> Direktfenster , um das Direktfenster (oder Strg + G ) zu öffnen:

Geben Sie hier die Bildbeschreibung ein

  1. Das folgende Direktfenster sollte in VBE unten angezeigt werden:

Geben Sie hier die Bildbeschreibung ein

In diesem Fenster können Sie den VBA-Code direkt testen. Beginnen wir also, geben Sie diese Konsole ein:

?Worksheets. 

VBE hat Intellisense und dann sollte ein Tooltip wie in der folgenden Abbildung geöffnet werden:

Geben Sie hier die Bildbeschreibung ein

Wählen Sie .Count in der Liste aus oder geben Sie direkt .Cout , um .Cout zu erhalten:

?Worksheets.Count
  1. Drücken Sie dann die Eingabetaste. Der Ausdruck wird ausgewertet und es sollte 1 zurückgegeben werden. Dies gibt die Anzahl der Arbeitsblätter an, die aktuell in der Arbeitsmappe vorhanden sind. Das Fragezeichen ( ? ) Ist ein Alias ​​für Debug.Print.

Arbeitsblätter sind ein Objekt und Count ist eine Methode . Excel verfügt über mehrere Objekte ( Workbook , Worksheet , Range , Chart ...), und jedes enthält bestimmte Methoden und Eigenschaften. Die vollständige Liste der Objekte finden Sie in der Excel VBA-Referenz . Arbeitsblätter Objekt wird hier vorgestellt.

Diese Excel VBA-Referenz sollte Ihre primäre Informationsquelle zum Excel-Objektmodell sein.

  1. Versuchen wir nun einen anderen Ausdruck, Typ (ohne das Zeichen ? ):
Worksheets.Add().Name = "StackOveflow"
  1. Drücken Sie Enter. Dadurch sollte ein neues Arbeitsblatt mit dem Namen StackOverflow. :

Geben Sie hier die Bildbeschreibung ein

Um diesen Ausdruck zu verstehen, müssen Sie die Funktion Hinzufügen in der oben genannten Excel-Referenz lesen. Sie werden folgendes finden:

Add:  Creates a new worksheet, chart, or macro sheet. 
The new worksheet becomes the active sheet. 
Return Value: An Object value that represents the new worksheet, chart,
 or macro sheet.

Die Worksheets.Add() erstellen also ein neues Arbeitsblatt und geben es zurück. Arbeitsblatt ( ohne s ) ist selbst ein Objekt, das in der Dokumentation zu finden ist, und Name gehört zu seinen Eigenschaften (siehe hier ). Es ist definiert als:

Worksheet.Name Property:  Returns or sets a String value that 
 represents the object name.

Indem wir die verschiedenen Objektdefinitionen untersuchen, können wir diesen Code Worksheets.Add().Name = "StackOveflow" verstehen.

Add() erstellt und fügt ein neues Arbeitsblatt hinzu und gibt einen Verweis darauf zurück. Dann setzen wir seine Name- Eigenschaft auf "StackOverflow".


Lassen Sie uns formeller sein, Excel enthält mehrere Objekte. Diese Objekte können aus einer oder mehreren Sammlungen von Excel-Objekten derselben Klasse bestehen. WorkSheets ist der Fall für WorkSheets denen es sich um eine Auflistung von Worksheet . Jedes Objekt verfügt über einige Eigenschaften und Methoden, mit denen der Programmierer interagieren kann.

Das Excel-Objektmodell bezieht sich auf die Excel- Objekthierarchie

An der Spitze aller Objekte befindet sich das Application , es repräsentiert die Excel-Instanz selbst. Die Programmierung in VBA erfordert ein gutes Verständnis dieser Hierarchie, da wir immer einen Verweis auf ein Objekt benötigen, um eine Methode aufrufen zu können oder eine Eigenschaft zu setzen / abzurufen.

Das (sehr vereinfachte) Excel-Objektmodell kann dargestellt werden als

                            Application
                             Workbooks
                             Workbook
                            Worksheets
                             Worksheet
                              Range

Eine detailliertere Version für das Arbeitsblattobjekt (wie in Excel 2007) wird unten gezeigt.

Geben Sie hier die Bildbeschreibung ein

Das vollständige Excel-Objektmodell finden Sie hier .

Schließlich können einige Objekte events (z. B. Workbook.WindowActivate ) enthalten, die ebenfalls Teil des Excel-Objektmodells sind.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow