获取 Function() 结果作为控件

Get Function() result as Control

背景:
我需要一个函数来根据 STD 名称和分析的文本有效地关联控件。搞笑:
a) 一些其他输入抛出变量 "mytext"
b) 如果 ListBox1.Value 有 "mytext" 那么我必须将它与 ToggleButton1 联系起来
方法:
我做了以下函数,部分起作用
代码:

Private Function RelateControl_ToggleVsList(ToggleCtrl As Control) As Control
Dim ItemControl As Control
Dim myControl As Object
    For Each ItemControl In Me.Controls
    If TypeName(ItemControl) = "ListBox" Then ' 1. If TypeName(ItemControl) = "Label"
    'text lenghts const 13 for ListBox_TimeXX and 22 for ToggleButton_PriorityXX
    If Mid(ItemControl.Name, 13, 2) = Mid(ToggleCtrl.Name, 22, 2) Then Set RelateControl_ToggleVsList = ItemControl: Exit Function
    End If ' 1. If TypeName(ItemControl) = "Label"
    Next ItemControl
End Function

问题:
我在设置结果时得到一个 null 属性:

Set RelateControl_ToggleVsList = ItemControl 'This is nullSet 

调试过程: 问题:
如何设置控件作为此函数的结果?

编辑:
根据请求,我添加了整个调试,以便查看它在何处被调用
调用代码

Private Sub ToggleButtons_Active()
Dim ItemControl As Control
Dim ItemTextBox As Variant
Dim TxtControl As String
    For Each ItemControl In Me.Controls
    If TypeName(ItemControl) = "ToggleButton" Then ' 1. If TypeName(ItemControl) = "ToggleButton"
    TxtControl = CStr(RelateControl_ToggleVsList(ItemControl).Value)
    If InStr(TextBox_Notes.Value, TxtControl) > 0 And TxtControl <> "" Then ItemControl.Value = True
    End If ' 1. If TypeName(ItemControl) = "ToggleButton"
    Next ItemControl
End Sub

你的错误发生在你的行上,上面写着

TxtControl = CStr(RelateControl_ToggleVsList(ItemControl).Value)

因为返回的控件的 Value 属性 当前是 Null,无法转换为字符串。


我建议你把TxtControl改成Variant类型,然后说

TxtControl = RelateControl_ToggleVsList(ItemControl).Value
If IsNull(TxtControl) Then
    TxtControl = ""
Else
    TxtControl = CStr(TxtControl)
End If

或者您可以定义一个 Control 对象然后使用它:

Dim MyControl As Control
MyControl = RelateControl_ToggleVsList(ItemControl)
If IsNull(MyControl.Value) Then
    TxtControl = ""
Else
    TxtControl = CStr(MyControl.Value)
End If

解法:
对象本身正在调用不属于它的 属性(如预期的那样)。
ListBox Properties 没有显示 "Value" 作为它的文字,真实的东西应该这样称呼它:

TxtControl = CStr(RelateControl_ToggleVsList(ItemControl).List(0))CStr(RelateControl_ToggleVsList(ItemControl).List(0))

此外:
感谢提供的解决方案和调试过程,我什至注意到函数中的对象是Set,调试时显示为它的"value" 属性