User Tools

Site Tools


vba:functions:ref

[VBA] ref()

Es gibt anwendugsfälle bei denen man nicht weissob, ob die Übergabevariable ein Objekt oder eine einfach Variable ist. ref() handelt im Gegensatz zu = das selber.

Version 1.1.0%%

Beschreibung

Die Funktion ref() verwedne ich häufig in grösseren Funktionen/Klassen, bei denen die Methoden flexibel sind. Zum Beispiel bei [VBA] print_r() und bei [VBA] Iterator

Beispiele

Das Beispiel so macht wenig Sinn. Es zeigt nur wie die Funktion angewendet wird

Eine Methoden in einer Klasse, die eine Variable entgegen nehmen

function.bas
Private myItem As Variant
 
'Wie wissen hier nicht, ob ein Objekt oder ein anderer Datentyp daherkommt
Public Sub setItem(ByRef iItem As Variant)
    ref myItem, iItem
End Sub
 
Public Property Get tName() As String
    tName = TypeName(myItem)
End Property

Test

Dim fso As New FileSystemObject
Dim cl As new MyClass
 
cl.setItem fso
debug.print cl.tName

Code

udf_ref.bas
Attribute VB_Name = "udf_ref"
'-------------------------------------------------------------------------------
'File         : udf_ref.bas
'               Copyright mpl by ERB software
'               All rights reserved
'               http://wiki.yaslaw.info/dokuwiki/doku.php/vba/
'Environment  : VBA 2007 +
'Version      : 1.1.0
'Name         : ref
'Author       : Stefan Erb (ERS)
'History      : 23.06.2014 - ERS - Creation
'               19.10.2015 - ERS - Viel unnötiger Code entfernt
'-------------------------------------------------------------------------------
Option Explicit
 
'/**
' * Bei einer Variablenübergabe muss immer unterscheiden werden, ob es ein Objekt ist oder nicht.
' * Diese Sub nimmt einem die Arbeit ab
' * ref(oNode, iNode)
' * @param  Variant     Variable, die den Wert bekommen soll
' * @param  Variant     Ret Wert selber
' */
Public Sub ref(ByRef oNode As Variant, ByRef iNode As Variant)
    If IsObject(iNode) Then Set oNode = iNode: Exit Sub
    oNode = iNode
End Sub
 
vba/functions/ref.txt · Last modified: 21.12.2015 10:37:16 by yaslaw