Autoform Position in Excel mit VBA ermitteln
Schritt-für-Schritt-Anleitung
- Öffne Excel und erstelle ein neues Arbeitsblatt.
- Füge eine Autoform (z.B. ein Rechteck) hinzu, indem du auf "Einfügen" > "Formen" > "Rechteck" klickst.
- Aktiviere den VBA-Editor mit
ALT + F11
.
- Erstelle ein neues Modul:
- Klicke im VBA-Editor auf "Einfügen" > "Modul".
- Füge den folgenden Code ein, um die Position der Autoform zu ermitteln:
Function getObjPos(ObjName As String, Optional xPos As Long = 1)
Application.ScreenUpdating = False
Dim myObj As Object
For Each myObj In ActiveSheet.Shapes
If myObj.Name = ObjName Then
If xPos = 1 Then
getObjPos = myObj.Left
ElseIf xPos = 2 Then
getObjPos = myObj.Top
Else
getObjPos = myObj.Width
End If
Exit For
End If
Next myObj
Application.ScreenUpdating = True
End Function
- Erstelle eine Subroutine zum Ermitteln und Schreiben der Position:
Sub ermitteln()
[B2] = getObjPos("Rechteck 1")
[B3] = getObjPos("Rechteck 1", 2)
[B4] = getObjPos("Rechteck 1", 3)
End Sub
- Schließe den VBA-Editor und kehre zu Excel zurück.
- Führe die Subroutine
ermitteln
aus, um die Position in die Zellen B2 (links), B3 (oben) und B4 (Breite) zu übertragen.
Häufige Fehler und Lösungen
Alternative Methoden
Du kannst auch die Position von Autoformen in Excel ohne VBA ermitteln, indem du die Eigenschaften im Formatierungsbereich überprüfst. Wähle die Autoform aus, gehe zu "Format" und schaue unter "Größe und Eigenschaften".
Praktische Beispiele
Hier ist ein Beispiel, wie du die Position einer Autoform in eine Zelle schreiben kannst. Angenommen, du hast eine Autoform mit dem Namen "Rechteck 1":
Sub Beispiel()
Dim xPos As Double
Dim yPos As Double
xPos = getObjPos("Rechteck 1")
yPos = getObjPos("Rechteck 1", False)
MsgBox "Die Position ist: " & xPos & ", " & yPos
End Sub
Tipps für Profis
- Nutze Fehlerbehandlung in deinen VBA-Skripten, um unerwartete Probleme zu vermeiden.
- Verwende Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind.
- Experimentiere mit verschiedenen Autoformen, um deren Position zu ermitteln und zu manipulieren.
FAQ: Häufige Fragen
1. Wie kann ich die Position einer Autoform dynamisch aktualisieren?
Du kannst die Subroutine ermitteln
in Ereignisprozeduren wie Worksheet_SelectionChange
einfügen, um die Position automatisch zu aktualisieren, wenn du eine andere Zelle auswählst.
2. Funktioniert dieser Code in allen Excel-Versionen?
Ja, der Code sollte in allen modernen Excel-Versionen funktionieren, die VBA unterstützen. Achte darauf, dass du die Autoform-Namen korrekt anpasst.