Note that the called function or sub MUST be a method of an object. This is true in the above example, because myFunc is a method of the form (Me).
If you want to call form independent functions (or subs) by name, then they must be put into a class module, which eventually should be instantiated into an object.
e.g. Class Module clsUtilities contains:
Public Function myFunc()
MsgBox "hello"
End Function
The calling module (form or otherwise):
Dim myUtility As clsUtilities
Set myUtility = New clsUtilities
Dim strFuncName As String
strFuncName = "myFunc"
...
CallByName myUtility,strFuncName,vbMethod
... _________________________________
In theory, there is no difference between theory and practice. In practice, there is. [attributed to Yogi Berra]