KARLITOS EXPONE UNAS FUNCIONES PARA BLOQUEAR Y DESBLOQUEAR CONTROLES DE UN FROM



    Te copio un par de funciones que tengo implementadas, para bloquear /
desbloquear controles de un formulario.
Pegalo tal cual en un módulo, y luego haz la llamada a las funciones desde
el evento click de el botón que quieras.
Por ejemplo:

Private Sub Boton1_Click()
    if me.Boton1.Caption = "Bloquear" Then
        BloquearControles Me, 0, acTextBox, acComboBox
        me.Boton1.Caption = "Desbloquear"
    else
        DesBloquearControles Me, 0, acTextBox, acComboBox
        me.Boton1.Caption = "Bloquear"
    endif
End Sub

De esta manera, con un solo boton puedes Bloquear y Desbloquear.
Lo que tienes que pegar en el módulo es:

'-------------------------------------------------------------------
'== Carlos Angulo, 2002   ==
'== Ca.Angulo@eresmas.net ==
'===========================
'
'Funciones para bloquear/Desbloquear los controles de un formulario
'selectivamente, según el tipo de control
'Ha de pasarse como parámetro el formulario sobre el que se desea
bloquear/desbloquear
'Por ejemplo:
'BloquearControles Me, 0, AcTextBox
'Bloqueará todos los controles de tipo "Cuadro de texto" del formulario
desde el que se llame

'En el Array de parámetros, han de pasarse los tipos de controles que se
desea bloquear
'(separados por comas)
'El primer parámetro FLAGS(0) corresponde al backColor que se desea asignar
al control
'Si Flags(0) = 0 no se cambiará el backColor
'
'Flags(i) puede tomar los valores de las constantes intrinsecas de access:

'acBoundObjectFrame - Marco de objeto dependiente
'acCheckBox - Casilla de verificación
'acComboBox - Cuadro combinado
'acCommandButton - Botón de comando
'acCustomControl - Control ActiveX (personalizado)
'acImage - Imagen
'acLabel - Etiqueta
'acLine - Línea
'acListBox - Cuadro de lista
'acObjectFrame - Marco de objeto independiente o gráfico
'acOptionButton - Botón de opción
'acOptionGroup - Grupo de opciones
'acPage - Página(Page)
'acPageBreak - Salto de página
'acRectangle - Rectángulo
'acSubform - Subformulario / subinforme
'acTabCtl - Ficha
'acTextBox - Cuadro de texto
'acToggleButton - Botón de alternar

Public Sub BloquearControles(FRM As Form, ParamArray FLAGS() As Variant)
Dim C As Control
Dim P As Property
Dim S As String

On Error GoTo EH
S = ""
For Each C In FRM.Controls

    Dim intI As Integer
    For intI = 1 To UBound(FLAGS())
        If FLAGS(intI) = C.Properties("ControlType") Then
            Select Case C.Properties("ControlType")

                Case 100, 101  ' Etiquetas , Cuadros
                    If FLAGS(0) > 0 Then C.Properties("BackColor") =FLAGS(0)

                Case 109, 111  ' TextBox , ComboBox
                    C.Properties("Locked") = True
                    C.Properties("Enabled") = False
                    If FLAGS(0) > 0 Then C.Properties("BackColor") =FLAGS(0)
                    S = S & C.Name & " (Locked) " & vbCrLf

                Case 104 'Botón de Comando
                    C.Properties("Enabled") = False


                Case 106 'CheckBox
                    C.Properties("Locked") = True
                    C.Properties("Enabled") = False
                    S = S & C.Name & " (Locked) " & vbCrLf

                Case 123 'TabCtl
                    C.Properties("Enabled") = False
                    S = S & C.Name & " (Locked) " & vbCrLf

                Case Else
                    MsgBox C.Name & " [Controltype] = " & C.Properties("Controltype")

            End Select
        End If
    Next intI
Next C
'MsgBox "CONTROLES BLOQUEADOS: " & vbCrLf & S

fin:
    Exit Sub

EH:
    Select Case Err.Number
        Case 2185, 2187
            Resume Next
        Case Else
            MsgBox Err.Number & ": " & Err.Description
            Resume fin
    End Select

End Sub

'En el Array de parámetros, han de pasarse los tipos de controles que se
desea desbloquear
'El primer parámetro FLAGS(0) corresponde al backColor que se desea asignar
al control
'La función también establece enabled = true
Public Sub DesbloquearControles(FRM As Form, ParamArray FLAGS() As Variant)
Dim C As Control
Dim P As Property
Dim S As String

On Error GoTo EH
S = ""
For Each C In FRM.Controls

    Dim intI As Integer
    For intI = 1 To UBound(FLAGS())
        If FLAGS(intI) = C.Properties("ControlType") Then
            Select Case C.Properties("ControlType")

                Case 100, 101  ' Etiquetas , Cuadros
                    If FLAGS(0) > 0 Then C.Properties("BackColor") =FLAGS(0)

                Case 109, 111  ' TextBox , ComboBox
                    C.Properties("Locked") = False
                    C.Properties("Enabled") = True
                    If FLAGS(0) > 0 Then C.Properties("BackColor") =FLAGS(0)
                    S = S & C.Name & " (UnLocked) " & vbCrLf

                Case 104 'Botón de Comando
                    C.Properties("Enabled") = True


                Case 106 'CheckBox
                    C.Properties("Locked") = False
                    C.Properties("Enabled") = True
                    S = S & C.Name & " (UnLocked) " & vbCrLf

                Case 123 'TabCtl
                    C.Properties("Enabled") = True
                    S = S & C.Name & " (UnLocked) " & vbCrLf

                Case Else
                    MsgBox C.Name & "[Controltype] = " & C.Properties("Controltype")

            End Select
        End If
    Next intI
Next C
'MsgBox "CONTROLES DESBLOQUEADOS: " & vbCrLf & S

fin:
    Exit Sub

EH:
    Select Case Err.Number
        Case 2185, 2187
            Resume Next
        Case Else
            MsgBox Err.Number & ": " & Err.Description
            Resume fin
    End Select

End Sub

-------------------------------------------------------------------

Saludos.



    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)