获取函数()结果作为控制

背景:
我需要一个函数来根据STD名称和分析的文本有效地关联控件。 IG:
a)其他一些input引发variables“mytext”
b)如果ListBox1.Value有“mytext”,那么我必须把它与ToggleButton1联系起来
做法:
我做了部分工作的以下function
码:

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 

在这里输入图像说明

debugging过程: 在这里输入图像说明 题:
如何设置一个控制作为这个function的结果?

编辑:
每个请求我添加整个debugging,以查看它被称为窗体的位置
调用代码

 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) 

因为返回的Control的Value属性目前是Null ,不能转换为String。


我build议你改变TxtControl是一个Varianttypes,然后说

 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 

解:
对象本身正在调用一个不属于它的属性(如预期的那样)。
列表框属性不显示“值”作为它的文本,真实的东西应该把它称为:

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

此外:
由于提供的解决scheme和debugging过程,我甚至可以注意到该对象是在函数中设置的,在debugging时显示为它的“value”属性。