¡Gracias! Perdón por no haber respondido antes, pero estaba buscando la solución por mi cuenta :)
y ¡la he encontrado! El problema se planteaba al intentar asignar un valor directamente al textbox. La solución:
El valor no se lo asigno al textbox del formulario, sino a una celda de la hoja de datos. Este valor varía según las acciones que realice con el formulario, p. ej. :
Si pulso el botón "cambiar" en el formulario, la celda A100 (por poner un ejemplo) toma el valor "Cambiar", si pulso "quitar", toma el valor "Quitar"... Cuando pulso en "Finalizar", toma el valor "" (vacia o en blanco, para mi caso, da lo mismo)
Una vez hecho esto, en el evento "initialize" del formulario pongo
Private Sub UserForm_Initialize()
Me.ACCIÓN.Text = Worksheets("calendario").Range("A100").Value
'Donde ACCIÓN es el textbox que necesito que refleje el cambio y "calendario" es la hoja de datos a cuya celda le he cambiado previamente el valor.
End Sub
Después, en el evento "activate" del formulario doy las instrucciones para que me muestre unos u otros controles, p. ej.:
Private Sub UserForm_Activate()
Me.horarioespeciallist.RowSource = Worksheets("calendario").Range("cu20").Value
'actualizo el listbox
If ACCIÓN = "" Then
dia1.Visible = False: diainicio.Visible = False: mes1.Visible = False: mesinicio.Visible = False...
'donde dia1, diainicio, mes1, mesinicio serían los controles que deben verse o no dependiendo del valor de ACCIÓn
ElseIf ACCIÓN = "cambiar" Then
dia1.Visible = True: diainicio.Visible = True: mes1.Visible = True: mesinicio.Visible = True ...
' como veis, aquí se muestran unos controles que no se mostraban antes...
... 'aquí podemos poner las instrucciones que queramos y el formulario las ejecutará sin problemas...
End If
End Sub
Y listo, problema solucionado. Tal vez no sea la mejor opción, pero a mí me ha servido...
Muchísimas gracias por tu interés y ayuda.
Un saludo.
Me.horarioespeciallist.RowSource = Worksheets("calendario").Range("cu20").Value
If ACCIÓN = "" Then
quefechas.Visible = False: din.Visible = False: diainicio.Visible = False: min.Visible = False: mesinicio.Visible = False
ain.Visible = False: añoinicio.Visible = False: horaetiqueta.Visible = False: horas.Visible = False
dfin.Visible = False: diafin.Visible = False: mfin.Visible = False: mesfin.Visible = False: afin.Visible = False: añofin.Visible = False
continuar.Caption = "Cambiar" & vbCrLf & "Período"
finalizar.Caption = "Quitar" & vbCrLf & "Período"
ElseIf ACCIÓN = "cambiar" Then
quefechas.Visible = True: din.Visible = True: diainicio.Visible = True: min.Visible = True: mesinicio.Visible = True
ain.Visible = True: añoinicio.Visible = True: horaetiqueta.Visible = True: horas.Visible = True
dfin.Visible = True: diafin.Visible = True: mfin.Visible = True: mesfin.Visible = True: afin.Visible = True: añofin.Visible = True
continuar.Visible = True: finalizar.Visible = True
continuar.Caption = "Continuar"
finalizar.Caption = "Finalizar"
intro.Caption = "Estos son los períodos de horario especial con especificación de horas a realizar por día. Para cambiar alguno haz 'click' en la entrada correspondiente de la lista."
ElseIf ACCIÓN = "quitar" Then
quefechas.Visible = False: din.Visible = False: diainicio.Visible = False: min.Visible = False: mesinicio.Visible = False
ain.Visible = False: añoinicio.Visible = False: horaetiqueta.Visible = False: horas.Visible = False
dfin.Visible = False: diafin.Visible = False: mfin.Visible = False: mesfin.Visible = False: afin.Visible = False: añofin.Visible = False
continuar.Visible = True: finalizar.Visible = True
intro.Caption = "Estos son los períodos de horario especial con especificación de horas a realizar por día. Si deseas eliminar alguno haz 'click' en la entrada correspondiente de la lista."
continuar.Caption = "Continuar"
finalizar.Caption = "Finalizar"
End If