| Sie können mit VBA Excel-Hilfsprogramme erstellen. Innerhalb von Excel haben sie Zugriff auf alle Objekte, außerhalb zumindest auf das Dateisystem. | Diese Programme werden in VBA mit "Sub" bezeichnet und in Excel als "Makro". |
VBA
|
Visual basic for Applications |
| Test-Sub | Ein eigenes Macro-(Sub)-Programm erstellen und anwenden |
| Excel-Buttons | Programm auf Knopfdruck |
| Excel-Menü | Eigene Menüs und Menübefehle |
| Parameter | Call, benannte Bereiche |
Ein eigenes Macro-(Sub)-Programm erstellen und anwenden |
|
| Erste Schritte zu einem "Benutzerdefinierten" Makro-Programm | |
|
|
Sub inc_A1()
v = Range("A1").Value
End Sub
Range("A1").Value = v + 1 |
|
|
|
|
Sie haben nun: |
|
|
Macro:
Dieser Begriff ist in der Informatik seit langer Zeit eindeutig belegt und wird von M$
falsch verwendet.Macro bezeichnet einen benannten Text. Bei jeder Verwendung des Namens im Programm wird dieser durch den Text ersetzt. Das ist bei VBA nicht der Fall, daher wird in diesem Web weiterhin das Wort "Programm" an Stelle von "Macro" verwendet. |
|
Argumente (Parameter) |
|
|
Sub-Programme können ebenso wie Functions beliebig viele Argumente
(Parameter) vom aufrufenden (Parent)-Programm erhalten. Das gilt jedoch nur für VBA: Excel kann an ein Sub keine Argumente übergeben ! |
|
|
+ Für Excel stellt das kein Problem dar: Falls verschobene Zellen mit anderen Excel-Zellen verknüpft sind, dann werden diese Bezüge beim Verschieben von Excel automatisch verändert. - VBA kann das nicht, ein Bezug auf eine verschobene Zelle geht daher 'ins Leere' oder - noch schlimmer - verwendet falsche Daten aus anderen Zellen. Wenn sie Zellen mit Namen versehen, dann bleiben diese auch dann gültig und richtig, wenn die Zellen verschoben werden: Solche Daten werden sowohl von Excel als auch von VBA gefunden. |
Beispiel:Markieren sie Zelle B1, Menübefehl Einfügen | Namen | Definieren. Verwenden sie Name=x für Bezieht sich auf==Tabelle1!$B$1 |
|
Es liest die Excel-Zellen (Range) mit den Namen 'x' und 'y' und weist sie gleichnamigen Variablen zu: So werden Parameter aus Excel-Zellen an VBA-Programme übergeben. =Zufallszahl()*250
|
Private Sub shape_delete(shapename As String)
Dim sh As Shape
For Each sh In ActiveSheet.Shapes
End Sub
If sh.Name = shapename Then
Next
ActiveSheet.Shapes(shapename).Select
End If
Selection.Cut Sub shape_make() Dim x, y, dx, dy As Integer Dim rechteck As Object
Calculate
End Sub
x = Range("x").Value
dx = 100y = Range("y").Value dy = 100 Call shape_delete("Test")
Set rechteck = ActiveSheet.Shapes.AddShape(msoShapeRectangle, x, y, dx, dy)With rechteck
.Name = "Test"
End With
.Placement = xlFreeFloating .Fill.ForeColor.SchemeColor = 42 .Line.Visible = msoTrue |
|