因为程序中有多个窗体的文本框是否为空需要判断,在窗体模块中逐一实现并不科学
故想建立一个公共模块(check_empty.bas)来实现整个程序的公用.
程序如下:Public Function check_empty(形参) '(2)
  Dim ctl As Control
  '判断是否有空字段
    For Each ctl In formname.Controls '(3)
      If TypeOf ctl Is TextBox Or TypeOf ctl Is ComboBox Then
          If ctl.Text = "" Then
              MsgBox ctl.Name & "不能为空", vbOKOnly + vbExclamation
              ctl.SetFocus
              Exit Function
          End If
      End If
   Next ctl
End Function(1)check_empty.check_empty (实参) '在某一窗体模块中调用函数现象1.当(1)为check_empty.check_empty (me.name)传递当前窗体的名称
      而(3)处写成 For Each ctl In formname&"."& Controls 程序不能通过
    2.当(1)为check_empty.check_empty (me.controls)
        (2)为Public Function check_empty(byval form_controls as controls)
    程序报错450 "错误参数号或无效属性复制
问题:如果只传递窗体名(3)处如何写
     如果想传递对象(1)(2)处该如何写
     是不是VB不能想C++一样传递对象呢?
望高手赐教,万分感谢

解决方案 »

  1.   

    Public Function check_empty(formname As Form) As Boolean
      Dim ctl As Control
        For Each ctl In formname.Controls
          If TypeOf ctl Is TextBox Or TypeOf ctl Is ComboBox Then
              If ctl.Text = "" Then
                  MsgBox ctl.Name & "不能为空", vbOKOnly + vbExclamation
                  ctl.SetFocus
                  check_empty = True
                  Exit Function
              End If
          End If
       Next ctl
    check_empty = False
    End Function测试
    Private Sub Command1_Click()
    MsgBox check_empty(Me)
    End Sub