En un formulario quiero cambiar el texto de un Label1 con una macro, pero tengo algo raro porque no cambia el texto en caption.

En un formulario quiero cambiar el texto de un Label1 con una macro, pero tengo algo raro porque no cambia el texto del label1.

-1 - genero una variable LUGARARTICULO;

- 2 - genero una variable frm que es el nombre del formulario donde quiero cambiar al captionn del Label1

3 - Cargo el formulario frm. Y que indique con MsgBox "etiqueta " & frm. Label1. Caption el nombre actual: "LUGAR DE ARTICULO ".

Hasta aqui parece que todo va bien, pero despues en el with no hace nada, y para remate, me da error al querer salir del formulario frm Unload frm.

Adjunto macro para ver si me podéis indicar donde esta el error.

Sub FORMULARIOLUGARNUEVORENOMBRARFETIQUETA()
'
' FORMULARIOLUGARNUEVORENOMRARFETIQUETA Macro

LUGARARTICULO = "LUGAR" & "FALDA" 

'renombrar la etiqueta (lugar del articulo)
Dim frm As Object
Dim NombreUserform As String
NombreUserform = LUGARARTICULO
Set frm = UserForms.Add(NombreUserform)
MsgBox "formulario " & frm.Name
Load frm

MsgBox "etiqueta " & frm.Label1.Caption

'With frm.Label1.Caption = "LUGAR DE ARTICULO   "el labelcaption que hay puesto en el formulario
frm.Label1.Caption = "LUGAR DE " & LUGARARTICULO    
Unload frm

End Sub

2 respuestas

Respuesta
1

[Hola

Si en el label del Userform tiene cierto texto, y luego lo cambias tal cual muestras, dicho cambio solo será visible en tiempo de ejecución, no es que dicho texto nuevo se vaya a guardar y/o quedar tal cual en el Label.

Abraham Valencia

Respuesta
1

Veamos lo que quieres sigue la misma línea de lo que has pedido relacioando con VBE y esto es por el mismo estilo, quieres modificar el valor de la label1 del userform lugarfaldas desde una macro que esta en un modulo estándar, pues bien ciento informarte que la programación que muestras no te sirve, primero no puede programar que te aparezca un msgbox con un formulario activo al mismo tiempo o es el formulario o es el msgbox, el load debe ser show y tienes que cerrar el with con un end with, la razón por la que no te muestra nada es por eso porque no estas cargando el formulario con el show y el error que te aparece es porque el with carece de end with, esta es laprogramacion que ocupas y sigo aclarando que son contados los que programan así, de hecho es bastante difícil hacerlo por el riesgo que hay de que se dañe el archivo o el formulario

Sub FORMULARIOLUGARNUEVORENOMBRARFETIQUETA()
' FORMULARIOLUGARNUEVORENOMRARFETIQUETA Macro
LUGARARTICULO = "LUGAR" & "FALDA"
'renombrar la etiqueta (lugar del articulo)
Dim frm As Object
Dim NombreUserform As String
NombreUserform = LUGARARTICULO

Set Control = ThisWorkbook.VBProject.VBComponents(NombreUserform).designer

With Control
.Controls("label1").Caption = LUGARARTICULO
End With

Set frm = UserForms.Add(NombreUserform)
frm.Show

'frm.LABEL1.Caption = "LUGAR DE " & LUGARARTICULO
'Unload frm

End Sub

¡Gracias! Por tu inestimable ayuda; me dices que esta forma de trabajar no es la más adecuada, te indico mi planteamiento y dime si es posible hacerlo de otra manera más sencilla.

El planteamiento es bastante extenso, dime como puedo hacértelo llegar porque aquí no cabe; si por correo electrónico o de otra manera y te envío un documento de word con todo detallado.

Abusando nuevamente de tus conocimientos y el tiempo perdido conmigo, e infinitamente agradecido por tus explicaciones que poco a poco van ampliando mis precarios conocimientos, te saluda atentamente:

Alfredo.

No he dicho que no sirva, de hecho para lo que has estado planteando en las diversas consultas que has puesto es la única forma de hacerlo no hay otra, lo que planteo es que por la inexperiencia en este tipo de programación cualquier instrucción mal escrita puede causar que el formulario o el archivo tengan un corportamiento errático, te paso esta página es la única que he visto de lo más completa en Internet para manejar VBE, es lo básico de ahí he tomado referencias para proporcionarte las macros que has pedido,

http://www.snb-vba.eu/VBA_Excel_VBproject_en.html#L_3.3.3.6, la seccion de controles de formulario es de donde me he basado para responderte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas