Deshabilitar TextBox de un Frame

Quiero solicitar de su ayuda, el tema es el siguiente, tengo varios Frames dentro un formulario y dentro de un frame tengo un optionbutton que si lo activo mi intención es que se inhabiliten los textbox de otro frame, lo que me funciona es en el evento Clic con el siguiente codigo:

Private Sub OptionButton33_Click()
Dim CtrT As Control
If OptionButton33 = True Then
    TextBox5.Value = "N/A"
    TextBox5.Enabled = False
End If
End Sub

sin embargo al hacerlo con un For Each:

Private Sub OptionButton33_Click()
Dim CtrT As Control
If OptionButton33 = True Then
    For Each CtrT In Frame6.Controls
        If TypeOf CtrT Is MSForms.TextBox Then
        'TextBox5.Value = "N/A"
        CtrT.Enabled = False
        End If
    Next CtrT
End If
End Sub

Veo que recorre todos los textbox pero no lo inhabilita.

1 respuesta

Respuesta
2

Funciona para mí

Incluso puse el valor "N/A" y también lo hace para los textbox que están dentro del Frame6

Private Sub OptionButton33_Click()
  Dim CtrT As Control
  If OptionButton33 = True Then
    For Each CtrT In Frame6.Controls
        If TypeOf CtrT Is MSForms.TextBox Then
          CtrT.Value = "N/A"
          CtrT.Enabled = False
        End If
    Next CtrT
  End If
End Sub

Muchas gracias, por alguna razón no me funcionaba lo acabo de probar nuevamente y función -.- ja ja

Una ultima pregunta, mejor dicho un consejo, ¿esta sería la mejor forma de excluir un control?:

Private Sub OptionButton33_Click()
Dim CtrT As Control
If OptionButton33 = True Then
    For Each CtrT In Frame6.Controls
        If TypeOf CtrT Is MSForms.TextBox Then
        CtrT.Value = "N/A"
        CtrT.Enabled = False
        End If
    Next CtrT
    TextBox7.Enabled = True
    TextBox7.Value = ""
End If
End Sub

en este caso el textbox7, saludos!!!

Te recomiendo un if o un select, por si debes poner más de un textbox:

Private Sub OptionButton33_Click()
  Dim CtrT As Control
  If OptionButton33 = True Then
    For Each CtrT In Frame6.Controls
      If TypeOf CtrT Is MSForms.TextBox Then
        If CtrT.Name <> "TextBox7" Then
          CtrT.Value = "N/A"
          CtrT.Enabled = False
        End If
      End If
    Next CtrT
  End If
End Sub

O con Select:

Private Sub OptionButton33_Click()
  Dim CtrT As Control
  If OptionButton33 = True Then
    For Each CtrT In Frame6.Controls
      If TypeOf CtrT Is MSForms.TextBox Then
        Select Case CtrT.Name
          Case "TextBox7", "TextBox15"
            '
          Case Else
            CtrT.Value = "N/A"
            CtrT.Enabled = False
        End Select
      End If
    Next CtrT
  End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas