2010 VBA - 传递类型作为参数

时间:2012-08-17 14:05:17

标签: vba access-vba

我有一种情况,我想传递一个对象Type作为比较逻辑的参数。

示例:

Sub Some (val as Control, typ as Type, ....)
   ...
   if typeof val is typ then
      ...
   end if
   ...
End Sub

我发现自己在多种方法中使用这种逻辑模式,并希望将逻辑压缩到一个位置而不是多个点,以简化。

这是验证此类结构的正确方法,还是有更好的方法来做这些事情?

1 个答案:

答案 0 :(得分:0)

那不花很长时间

如果你想将比较抽象为通用,那么这应该会让你找到正确的逻辑。

Public Sub CompareType(val as Control, typ as String)
   ...
   if TypeName(val) = typ then
      ...
   end if
   ...
End Sub

基本上传递对象(val),如果你想进行一步抽象,可以是变体,然后如果你知道将为该Type返回的String值,那么将它作为String值传递

工作示例:

在代码运行中:

...
AutoSizeControl CurrentDb, frm, "Textbox"
...

模块声明:

Public Sub AutoSizeControl(ByRef db As Database, ByRef frm As Form, typ As String)
    Dim ctl As Control, i As Integer
    For i = 0 To (frm.Controls.Count - 1)
        Set ctl = frm.Controls(i)
        If TypeName(ctrl) = typ Then
            ctl.ColumnWidth = -2
        End If
    Next
End Sub

希望这可以帮助其他可能需要这种抽象的人。