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.