Kategorien

Artikel-Schlagworte: „VBA“

Variablen-Typen für VBA

(c) Tamara Buchwald

Addieren

Um eine Addition vornehmen zu können, muss zunächst der Variablentyp festgelegt werden.

Um rechnen zu können, kann der Wert z.B. mit dem Variablentyp "Single" definiert werden. Der Variablentyp Single ermöglicht Rechnungen mit 8-stelligen Nachkommastellen.

Im folgenden Beispiel wird die Variable positioniert auf die Zelle "A1" im Registerblatt "Tabelle1".
Der Rechenbefehl addiert "5" zum bisherigen Wert in der gleichen Tabelle.
Mit der folgenden Codezeile wird bestimmt, dass das Ergebnis in der gleichen Zelle wieder ausgegeben wird.
Sub Addieren()
Dim Wert As Single
With Sheets("Tabelle1")
Wert = .Range("A1").Value
Wert = Wert + 5
.Range("A1").Value = Wert
End With
End Sub



Mittels Änderung von "A1" kann man in der Zeile ".Range("A1").Value = Wert" die Zelle einstellen, in der das Ergebnis ausgegeben wird.

Nachfolgender Code bewirkt, dass das Ergebnis in einem anderen Tabellenblatt ausgegeben wird.
Sub Addieren()
Dim Wert As Single
With Sheets("Tabelle1")
Wert = .Range("A1").Value
Wert = Wert + 5
End With
Sheets("Tabelle3").Range("A3").Value = Wert
End Sub



Entscheidend ist hier das der "With"-Befehl beendet wird, bevor die Zelle für die Wert-Ausgabe festgelegt wird, da sich diese Zelle in einem anderen Tabellenblatt befindet und der With-Befehl sich auf das Tabellenblatt "Tabelle1" bezieht. Das Ergebnis soll in diesem Fall allerdings in dem Tabellenblatt "Tabelle3" und dort in der Zelle "A3" ausgegeben werden.

Nachfolgender Befehl addiert die Zahlen der Zellen "A1" und "B1" und gibt das Ergebnis in der Zelle "C1" wieder aus.
Sub TAddieren()
Dim Wert As Single
Dim Zahl1 As Single
Dim Zahl2 As Single
Dim Ergebnis As Single
Zahl1 = Sheets("Tabelle1").Range("A1").Value
Zahl2 = Sheets("Tabelle1").Range("B1").Value
Ergebnis = Zahl1 + Zahl2
Sheets("Tabelle1").Range("C1").Value = Ergebnis
End Sub



Der folgende Befehl addiert in einem festgelegten Tabellenblatt ("Tabelle1") die Zahl der Spalte 1 in der ersten Zeile (A1) mit der Zahl der Spalte 2 in der ersten Zeile (B1) und gibt den Wert in der Spalte (C1) aus. Diese Rechenoperation wird solange durchgeführt, bis die erste Zelle der 1. Spalte leer ist.
Sub TAddieren3()
Dim Zahl1 As Single
Dim Zahl2 As Single
Dim Ergebnis As Single
Dim a As Variant
a = 1
Do Until Sheets("Tabelle1").Cells(a, 1).Value = ""
Zahl1 = Sheets("Tabelle1").Cells(a, 1).Value
Zahl2 = Sheets("Tabelle1").Cells(a, 2).Value
Ergebnis = Zahl1 + Zahl2
Sheets("Tabelle1").Cells(a, 3).Value = Ergebnis
a = a + 1
Loop
End Sub

Rahmen erstellen und formatieren

Um einen Rahmen zu Formatieren, ist zunächst der Bereich als Objekt zu definieren.

Dies erfolgt wie üblich:
Sheets("Tabelle1").Range("A1:D10")



Nach dem das Objekt definiert ist, wird nun noch festgelegt, dass sich die folgenden definierten Eigenschaften auf einen Rahmen beziehen. Dazu wird ".Borders" ergänzt. Die Codezeile sieht dann wie folgt aus:
Sheets("Tabelle1").Range("A1:D10").Borders



Mit dem "With"-Befehl können dem Rahmen verschiedene Eigenschaften mitgegeben werden.

So kann die Rahmenfarbe und die Art der Rahmenlinie festgelegt werden.

Beispielcode mit doppelter Linie und dunkelroter Linienfarbe:
Sub Rahmen1()
With Sheets("Tabelle3").Range("A3:C5").Borders
.ColorIndex = 30
.LineStyle = xlDouble
End With
End Sub



Unterschiedliche Linienarten für die Verwendung in Excel

(c) Tamara Buchwald

Textformatierung

Nachfolgender Code bewirkt, dass der Bereich von "B1" bis "C10" dunkelrot hinterlegt wird und die Schrift fett ausgegeben wird.
Sub Textformatierung()
With Sheets("TestA").Range("B1:C10")
.Interior.ColorIndex = 30
.Font.Bold = True
End With
End Sub


Der With-Befehl
Durch die Verwendung von "With" können dem Objekt mehrere Eigenschaften mitgegeben werden, ohne das Objekt für jede einzelne Eigenschaft wieder neu definieren zu müssen. Hier werden mit dem "With"-Befehl die Hintergrundfarbeneigenschaft und die Fettung der Schrift des Objektes zugewiesen.

Schrifteigenschaften

Die Schrift wird mit ".Font" angesprochen, danach erfolgt die Bestimmung der Eigenschaft der Schrift.

Diese werden mit True und False nach dem "=" aktiviert oder deaktiviert:

  • Bold = Fettdruck

  • Italic = Kursivdruck

  • Underline = unterstreichen der Schrift

  • Strikethrough = durchgestrichene Schrift

  • Subscript = tiefgestellte Schrift

  • Superscript = hochgestellte Schrift


Hier ist nach dem "=" eine Zahl zu erfassen:

  • ColorIndex = Farbe

  • Size = Größe


Für die Farbe ist der jeweilige Farbcode gem. ColorIndex einzutragen, für die Größe die gewünschte Schriftgröße in pt.

Markierte Zellen in bestimmter Farbe füllen

Nachfolgender Befehl färbt die in der Tabelle markierten Zellen in dunkelrot.
Sub Zellenfaerben()
Dim FZel As Range
For Each FZel In Selection
FZel.Interior.ColorIndex = 30
Next FZel
End Sub

Kopfzeile mit Text aus Tabelle füllen

Problemstellung:
Allgemein: In die Kopfzeile sind via VBA Texte oder Zahlen zu erfassen, die innerhalb der Tabelle in bestimmten Zellen erfasst werden.

1. Die Kopfzeile des aktuellen Tabellenblattes wird mit dem Wert aus der Zelle "A1" des aktuellen Tabellenblattes gefüllt
Sub KopfzeilefuellenL()
ActiveSheet.PageSetup.LeftHeader = Format(ActiveSheet.Range("A1").Value)
End Sub


2. Der Zellinhalt der Tabelle "TestA", Zelle "A1" ist in der rechten Kopfzeile der aktuellen Tabelle auszuweisen.
Sub KopfzeilefuellenR()
ActiveSheet.PageSetup.RightHeader = Format(Sheets("TestA").Range("A1").Value)
End Sub


Die einzelnen Bereiche der Seite können via VBA wie folgt angesprochen werden:

  • LeftHeader         = Kopfzeilenbereich links

  • CenterHeader   = Kopfzeilenbereich mitte

  • RightHeader      = Kopfzeilenbereich rechts

  • LeftFooter          = Fußzeile links

  • CenterFooter    = Fußzeile mitte

  • RightFooter       = Fußzeile rechts

Mehrzeilige Texte in MessageBox anzeigen

Nachfolgender Code gibt eine MessageBox aus, welche in der ersten Zeile "Hallo", in der zweiten Zeile "mein Name ist:" und in der dritten Zeile "Tamara" ausgibt.
Sub MessageBox1()
    MsgBox "Hallo" & vbCrLf & "mein Name ist:" & vbCrLf & vbCrLf & "Tamara"
End Sub


& vbCrLf & bewirkt hierbei den Wechsel in die nächste Zeile, diesen Befehl mehrfach hintereinander geschaltet, ergibt entsprechend häufige Zeilenwechsel und demzufolge bei einer zweifach-Schaltung eine Leerzeile.

Wechsel zu bestimmten Tabellenblatt

Nachfolgender Code bewirkt den Wechsel zu einem anderen Tabellenblatt.
In Abhängigkeit des Wertes der Zelle A1 des Tabellenblattes, wird zu dem Tabellenblatt gewechselt, welches den gleichen Namen hat, wie die Zelle den Wert.
Dieser Blattwechsel funktioniert nur dann wenn die Werte, welche in A1 erfasst werden die gleichen Namen haben, wie die Tabellenblätter.
Application.Worksheets((Application.ActiveSheet.Range("A1").Value)).Activate

Blättern in Excelarbeitsmappe

Nachfolgender Code bewirkt den Wechsel zum nächsten Tabellenblatt
Application.ActiveSheet.Next.Activate


Nachfolgender Code bewirkt den Wechsel zum vorangegangenen Tabellenblatt
Application.ActiveSheet.Previous.Activate

ColorIndex

für VBA Excel

(c) Tamara Buchwald