User Tools

Site Tools


vba:access:functions:getcontrolpath

[VBA][Access] getControlPath()

Eine Beispiel um den Pfad von Verschachtelungen eines Controls herauszufinden: [ParentControl2]![ParentControl1]![ActualControl]

getControlPath
'/**
' * Gibt den Pfad eines Formularcontrols zurück [ParentControl2]![ParentControl1]![ActualControl]
' * Dies ist vor allem bei verschachtelten Formularen interessant
' * @param  <Control>       Das Formularelement
' * @return String
' */
Public Function getControlPath(ByVal ctrl As Control) As String
	Const C_DELEMITER = "!"
	Const C_FORMAT = "[%s]"
	Dim path()          As String
	Dim sortetPath()    As String
	Dim lastIndex, i    As Integer
 
 
	ReDim path(0)
	path(0) = ctrl.Name
 
On Error GoTo exit_loop
	'Solange die Parents suchen bis keine mehr da sind
	Do While IsObject(ctrl.parent)
		ReDim Preserve path(UBound(path) + 1)
		path(UBound(path)) = ctrl.parent.Name
		Set ctrl = ctrl.parent
	Loop
 
exit_loop:
On Error GoTo 0
	'Reihenfolge umdrehen damit der Master als erstes kommt
	lastIndex = UBound(path)
	ReDim sortetPath(UBound(path))
	For i = 0 To lastIndex 'To 0 Step -1
		'Dein Eintrag formatieren und am entsprechenden Ort im neuen Array einfügen
		sortetPath(lastIndex - i) = Replace(C_FORMAT, "%s", path(i))
	Next i
 
	'und alles zu einem String zusammensetzen
	getControlPath = Join(sortetPath, C_DELEMITER)
End Function

Und so könnte dann ein Aufruf aussehn

MsgBox getControlPath(Me.Command0)
vba/access/functions/getcontrolpath.txt · Last modified: 13.02.2019 09:25:08 by yaslaw