Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1656to1660
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA von Autoform Position ermitteln

VBA von Autoform Position ermitteln
15.11.2018 21:43:03
Autoform
Hallo Forum,
ich sollte evtl. eure Kenntnisse anzapfen mit folgendem Ansatz den ich gerne realisieren möchte.
Generell suche ich nach einer Lösung, eine Autoform ( Rechteck oder Textfeld ) sozusagen auszulesen bzgl. der Eigenschaftswerte ( Position ( Höhe - Breite ) und Länge ).
Ideal wäre eine Prozedur die klar erkennt - zunächst welche Autoform ausgewählt wird ... dann würde ich Sie von ihrer Position etwas verschieben, evtl auch mal rechts die Länge bestimmen - und wenn ich Sie verlasse ( indem ich zB. in eine Zelle klicke, oder eine andere Autoform auswähle, dann sollten die oben genannten Parameter sich in bestimmte Zellen schreiben.
Das man eine Autoform andersrum aus Zellwerten her beeinflussen kann ist mir klar, aber geht es auch eben andersrum ? Habt ihr ne Idee ?
AF. aus Zellen beeinflussen zB. so ...
ActiveSheet.Shapes.Range(Array("Rectangle 1")).IncrementLeft [A1].Value
ActiveSheet.Shapes.Range(Array("Rectangle 1")).IncrementTop [A2].Value
ActiveSheet.Shapes.Range(Array("Rectangle 1")).ScaleWidth [A3].Value, msoFalse, msoScaleFromMiddle
aber sozusagen vor Verlassen letzte Werte festhalten - aber wie, geht das überhaupt ?
Wäre für jede Idee empfänglich, schöne Grüße
Udo

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
okay, hab doch noch etwas dazu gefunden ...
15.11.2018 23:05:57
udo
Anbei eine Beispieldatei :
https://www.herber.de/bbs/user/125420.xlsm
Darin enthaltene Codes :
' ========================================================================================================================================

Function getObjPos(ObjName As String, Optional xPos As Boolean = True)
'       ======================================================================================== _
Application.ScreenUpdating = False
' returns position of shape for given shape name optional boolean parameter for x or y - _
position
' x-position is default
' 06-2006  E.Bimczok   Beitrag : https://microsoft.public.de.excel.narkive.com/sR9hFc7D/ _
autoformen-objektpositionierung-auslesen
Application.Volatile
Dim myObj As Object
'  Set a = ActiveSheet
For Each myObj In ActiveSheet.Shapes
If myObj.Name = ObjName Then
If xPos Then
getObjPos = myObj.Left
Else
getObjPos = myObj.Top
End If
Exit For
End If
Next myObj
Application.ScreenUpdating = True
End Function

' ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Sub verschieben()
'       ---------------------------------------------------------------------------------------- _
ActiveSheet.Shapes.Range(Array("Rectangle 1")).Left = [B2].Value
ActiveSheet.Shapes.Range(Array("Rectangle 1")).Top = [B3].Value
'        ActiveSheet.Shapes.Range(Array("Rectangle 1")).ScaleWidth = [B3].Value
End Sub

' ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Sub ermitteln()
'       ---------------------------------------------------------------------------------------- _
[B2] = getObjPos("Rectangle 1")
[B3] = getObjPos("Rectangle 1", False)
End Sub

' ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Sub Auswahl()
'       ---------------------------------------------------------------------------------------- _
Application.ScreenUpdating = False
ActiveSheet.Shapes.Range(Array("Rectangle 1")).Select
Application.ScreenUpdating = True
End Sub

LG udo
Anzeige
Nun sollte ich noch den Wert für die Breite ...
15.11.2018 23:08:44
udo
.. oben in der Function anführen , dass der Wert dann in B3 festgehalten wird
Könntet ihr mir dabei helfen ?
LG udo
AW: Nun sollte ich noch den Wert für die Breite ...
16.11.2018 13:58:59
Matthias
Moin!
Also du willst die Breit in Zelle B4 haben oder? In B3 steht doch schon die Höhe. Habe mal die Funktion angepasst. aus Boolean habe ich long gemacht. Bei 1 kommt der linke Abstand, bei 2 der höchste Punkt un dbei 3 sollte die Breite kommen. Ist aber ungetestet. Der AUfruf dann wie bei der Sub ermitteln
Function getObjPos(ObjName As String, Optional xPos As Long = 1)
'       ======================================================================================== _
_
Application.ScreenUpdating = False
' returns position of shape for given shape name optional boolean parameter for x or y - _
_
position
' x-position is default
' 06-2006  E.Bimczok   Beitrag : https://microsoft.public.de.excel.narkive.com/sR9hFc7D/ _
_
autoformen-objektpositionierung-auslesen
Application.Volatile
Dim myObj As Object
'  Set a = ActiveSheet
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
Sub ermitteln()
[B2] = getObjPos("Rectangle 1")
[B3] = getObjPos("Rectangle 1", 2)
[B4] = getObjPos("Rectangle 1", 3)
End Sub
VG
Anzeige
Hallo Matthias, perfekt ! Vielen lieben Dank, ...
16.11.2018 15:00:26
udo
habs gerade probiert, funktioniert prima, das hilft mir jetzt sehr
Lieben Dank für deine Mühe
LG udo

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige