获取函数()结果作为控制
背景:
我需要一个函数来根据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
是一个Variant
types,然后说
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”属性。