Que TextBox de un formulario tome el valor de una celda cuyo valor está constantemente cambiando.

Tengo el siguiente código:

Private Sub TextBox5_Change()
TextBox1.Value = Sheets("Tablero".Range("B4").Value
End Sub

Mi idea es que al inicializarse el Formulario FrmBalance, el TextBox1, tome el valor de la celda "B4" de la hoja "Tablero".

El problema me surge cuando el valor de la celda cambia, pero el valor del textbox, no se actualiza.

Para que se actualice automaticamen el textbox me toca teclear alguna letra en el textbox para que me carague en el textbox el valor actual de la celda "B4".

La idea es que al abrirse el userform, este textbox1 se active y muestre el valor de la celda automáticamente y si el valor del a celda cambia, tambien cambie ese mismo valor se refleje en el TextBox1.

3 Respuestas

Respuesta
1

Luis

A mi parecer de tu código TextBox1.Value = Sheets("Tablero".Range("B4").Value

hubiera sido de esta manera no te parece, bueno solo es una sugerencia.

TextBox1.Value = Range("B4")
Private Sub Userform_Activate()
TextBox1.Value = Range("B4")
End Sub

¡Gracias! 

Lo que sucede es que, debo indicarle a VB, "b4", pero de que hoja de tantas que tengo, ya que este código iría en un Formulario, pero hace referecnia a la hoja "Tablero".

Lo Solucione de esta forma, pero, sabes como se puede "resumir" (hacer el código más corto), para no tener tanto texto.

Sub Actualizar()
'DESCRIPCIÓN
FrmBalance.TextBox1.Value = Sheets("Tablero").Range("B4").Value
FrmBalance.TextBox2.Value = Sheets("Tablero").Range("B5").Value
FrmBalance.TextBox3.Value = Sheets("Tablero").Range("B6").Value
FrmBalance.TextBox4.Value = Sheets("Tablero").Range("B7").Value
FrmBalance.TextBox5.Value = Sheets("Tablero").Range("B8").Value
FrmBalance.TextBox6.Value = Sheets("Tablero").Range("B9").Value
FrmBalance.TextBox7.Value = Sheets("Tablero").Range("B10").Value
FrmBalance.TextBox8.Value = Sheets("Tablero").Range("B11").Value
FrmBalance.TextBox9.Value = Sheets("Tablero").Range("B12").Value
FrmBalance.TextBox10.Value = Sheets("Tablero").Range("B13").Value
'CANTIDAD 2014
FrmBalance.TextBox22.Value = Sheets("Tablero").Range("C4").Value
FrmBalance.TextBox23.Value = Sheets("Tablero").Range("C5").Value
FrmBalance.TextBox24.Value = Sheets("Tablero").Range("C6").Value
FrmBalance.TextBox25.Value = Sheets("Tablero").Range("C7").Value
FrmBalance.TextBox26.Value = Sheets("Tablero").Range("C8").Value
FrmBalance.TextBox27.Value = Sheets("Tablero").Range("C9").Value
FrmBalance.TextBox28.Value = Sheets("Tablero").Range("C10").Value
FrmBalance.TextBox29.Value = Sheets("Tablero").Range("C11").Value
FrmBalance.TextBox30.Value = Sheets("Tablero").Range("C12").Value
FrmBalance.TextBox21.Value = Sheets("Tablero").Range("C13").Value
'CANTIDAD 2015
FrmBalance.TextBox32.Value = Sheets("Tablero").Range("D4").Value
FrmBalance.TextBox33.Value = Sheets("Tablero").Range("D5").Value
FrmBalance.TextBox34.Value = Sheets("Tablero").Range("D6").Value
FrmBalance.TextBox35.Value = Sheets("Tablero").Range("D7").Value
FrmBalance.TextBox36.Value = Sheets("Tablero").Range("D8").Value
FrmBalance.TextBox37.Value = Sheets("Tablero").Range("D9").Value
FrmBalance.TextBox38.Value = Sheets("Tablero").Range("D10").Value
FrmBalance.TextBox39.Value = Sheets("Tablero").Range("D11").Value
FrmBalance.TextBox40.Value = Sheets("Tablero").Range("D12").Value
FrmBalance.TextBox31.Value = Sheets("Tablero").Range("D13").Value
'PORCENTAJE
FrmBalance.TextBox41.Value = Sheets("Tablero").Range("D4").Value
FrmBalance.TextBox43.Value = Sheets("Tablero").Range("D5").Value
FrmBalance.TextBox44.Value = Sheets("Tablero").Range("D6").Value
FrmBalance.TextBox45.Value = Sheets("Tablero").Range("D7").Value
FrmBalance.TextBox46.Value = Sheets("Tablero").Range("D8").Value
FrmBalance.TextBox47.Value = Sheets("Tablero").Range("D9").Value
FrmBalance.TextBox48.Value = Sheets("Tablero").Range("D10").Value
FrmBalance.TextBox49.Value = Sheets("Tablero").Range("D11").Value
FrmBalance.TextBox40.Value = Sheets("Tablero").Range("D12").Value
FrmBalance.TextBox42.Value = Sheets("Tablero").Range("D13").Value
'TENDENCIA
FrmBalance.TextBox52.Value = Sheets("Tablero").Range("E4").Value
FrmBalance.TextBox53.Value = Sheets("Tablero").Range("E5").Value
FrmBalance.TextBox54.Value = Sheets("Tablero").Range("E6").Value
FrmBalance.TextBox55.Value = Sheets("Tablero").Range("E7").Value
FrmBalance.TextBox56.Value = Sheets("Tablero").Range("E8").Value
FrmBalance.TextBox57.Value = Sheets("Tablero").Range("E9").Value
FrmBalance.TextBox58.Value = Sheets("Tablero").Range("E10").Value
FrmBalance.TextBox59.Value = Sheets("Tablero").Range("E11").Value
FrmBalance.TextBox50.Value = Sheets("Tablero").Range("E12").Value
FrmBalance.TextBox51.Value = Sheets("Tablero").Range("E13").Value
End Sub

Entonces si quieres más compacto seria de esta manera no te parece.

Private Sub Userform_Activate()    Set h1 = Sheets("Tablero")    TextBox1 = h1.Range("B4")    TextBox2 = h1.Range("B5")    TextBox3 = h1.Range("B6")    TextBox4 = h1.Range("B7")    TextBox5 = h1.Range("B8")    TextBox6 = h1.Range("B9")    TextBox7 = h1.Range("B10")End Sub

De esta manera me enseño a programar un gran maestro en el foro.

Private Sub Userform_Activate()    
Set h1 = Sheets("Tablero")    
TextBox1 = h1.Range("B4")    
TextBox2 = h1.Range("B5")   
TextBox3 = h1.Range("B6")    
TextBox4 = h1.Range("B7")    
TextBox5 = h1.Range("B8")    
TextBox6 = h1.Range("B9")    
TextBox7 = h1.Range("B10")
End Sub
Respuesta
1

Si siempre quieres que aparezca el dato de la celda "B4" en el textbox1, pon la cleda "B4" en la propiedad ControlSource del textbox1:

Respuesta

Private Sub UserForm_Activate()
TextBox1.Value= Sheets("Hoja1").Range("A1").Value
End Sub

Hola Moises, gracias por tu respuesta, pero esa opción ya la exploré y solo sirve para cargar inicialmente la ifnormacion que tiene esa celda, pero si el valor de la celda cambia, el textbox, no se actualiza y eso, precisamente eso, es lo que necesito hacer.

Que el valor del TextBox se actualice cuando cambie automáticamente la celda, ya que ese valor, depende de una fórmula y el valor está cambiando constantemente.

TextBox1.Value = Sheets("Tablero").Range("B4").Value = No me funcionó.

En el explorador de proyectos (vba ) le das doble click a la hoja que quieras revisar (Hoja1)

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        UserForm1.TextBox1.Text = Target.Value
    End If
End Sub

Hola de nuevo Moises, mira, lo solucione de esta forma:

Cree un procedimiento llamado "Actualizar", así:

Sub Actualizar()
'DESCRIPCIÓN
FrmBalance.TextBox1.Value = Sheets("Tablero").Range("B4").Value
FrmBalance.TextBox2.Value = Sheets("Tablero").Range("B5").Value
FrmBalance.TextBox3.Value = Sheets("Tablero").Range("B6").Value
FrmBalance.TextBox4.Value = Sheets("Tablero").Range("B7").Value
FrmBalance.TextBox5.Value = Sheets("Tablero").Range("B8").Value
FrmBalance.TextBox6.Value = Sheets("Tablero").Range("B9").Value
FrmBalance.TextBox7.Value = Sheets("Tablero").Range("B10").Value
FrmBalance.TextBox8.Value = Sheets("Tablero").Range("B11").Value
FrmBalance.TextBox9.Value = Sheets("Tablero").Range("B12").Value
FrmBalance.TextBox10.Value = Sheets("Tablero").Range("B13").Value
'CANTIDAD 2014
FrmBalance.TextBox22.Value = Sheets("Tablero").Range("C4").Value
FrmBalance.TextBox23.Value = Sheets("Tablero").Range("C5").Value
FrmBalance.TextBox24.Value = Sheets("Tablero").Range("C6").Value
FrmBalance.TextBox25.Value = Sheets("Tablero").Range("C7").Value
FrmBalance.TextBox26.Value = Sheets("Tablero").Range("C8").Value
FrmBalance.TextBox27.Value = Sheets("Tablero").Range("C9").Value
FrmBalance.TextBox28.Value = Sheets("Tablero").Range("C10").Value
FrmBalance.TextBox29.Value = Sheets("Tablero").Range("C11").Value
FrmBalance.TextBox30.Value = Sheets("Tablero").Range("C12").Value
FrmBalance.TextBox21.Value = Sheets("Tablero").Range("C13").Value
'CANTIDAD 2015
FrmBalance.TextBox32.Value = Sheets("Tablero").Range("D4").Value
FrmBalance.TextBox33.Value = Sheets("Tablero").Range("D5").Value
FrmBalance.TextBox34.Value = Sheets("Tablero").Range("D6").Value
FrmBalance.TextBox35.Value = Sheets("Tablero").Range("D7").Value
FrmBalance.TextBox36.Value = Sheets("Tablero").Range("D8").Value
FrmBalance.TextBox37.Value = Sheets("Tablero").Range("D9").Value
FrmBalance.TextBox38.Value = Sheets("Tablero").Range("D10").Value
FrmBalance.TextBox39.Value = Sheets("Tablero").Range("D11").Value
FrmBalance.TextBox40.Value = Sheets("Tablero").Range("D12").Value
FrmBalance.TextBox31.Value = Sheets("Tablero").Range("D13").Value
'PORCENTAJE
FrmBalance.TextBox41.Value = Sheets("Tablero").Range("D4").Value
FrmBalance.TextBox43.Value = Sheets("Tablero").Range("D5").Value
FrmBalance.TextBox44.Value = Sheets("Tablero").Range("D6").Value
FrmBalance.TextBox45.Value = Sheets("Tablero").Range("D7").Value
FrmBalance.TextBox46.Value = Sheets("Tablero").Range("D8").Value
FrmBalance.TextBox47.Value = Sheets("Tablero").Range("D9").Value
FrmBalance.TextBox48.Value = Sheets("Tablero").Range("D10").Value
FrmBalance.TextBox49.Value = Sheets("Tablero").Range("D11").Value
FrmBalance.TextBox40.Value = Sheets("Tablero").Range("D12").Value
FrmBalance.TextBox42.Value = Sheets("Tablero").Range("D13").Value
'TENDENCIA
FrmBalance.TextBox52.Value = Sheets("Tablero").Range("E4").Value
FrmBalance.TextBox53.Value = Sheets("Tablero").Range("E5").Value
FrmBalance.TextBox54.Value = Sheets("Tablero").Range("E6").Value
FrmBalance.TextBox55.Value = Sheets("Tablero").Range("E7").Value
FrmBalance.TextBox56.Value = Sheets("Tablero").Range("E8").Value
FrmBalance.TextBox57.Value = Sheets("Tablero").Range("E9").Value
FrmBalance.TextBox58.Value = Sheets("Tablero").Range("E10").Value
FrmBalance.TextBox59.Value = Sheets("Tablero").Range("E11").Value
FrmBalance.TextBox50.Value = Sheets("Tablero").Range("E12").Value
FrmBalance.TextBox51.Value = Sheets("Tablero").Range("E13").Value
End Sub

Luego lo llamo en el evento "Change" del objeto WorkSheet.

No se si haya una forma de reciclar código (resumirlo), para que no sea tan largo y por ende trabaje más rápido.

Ahora me surge otro lio y es que me muestra valores en los text box y efectivamente cambian, pero necesito que me muestre los valores, tal cual están en la celda y no me los convierta, que me los muestre tal cual aparecen en la celda.

Si me puedes ayudar a corregirla, te lo agradezco.

?? muestra una pantalla/imagen

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas