viernes, 16 de septiembre de 2022

VBA EXCEL 2022: LLENAR UN TEXTBOX CON DATOS DE UNA CELDA



En esta ocación veremos como llenar un textbox, ya sea desde el código o bien con datos de una celda.

ANTES: Nuestro libro de excel debe estar habilitada para ejecutar macros, es decir, con la extención .xlsm y nuestra pestaña de programador debe estar en modo diseño para que podamos escribir código y editar los objetos que vamos a utilizar.


PASO 1: En la columna escribimos algunos datos. En este caso pondremos una cadena de texto y una fecha.

Datos en una columna. No es una tabla


PASO 2: Creamos un botón de comando (commandbutton) en una de nuestras hojas, y también creamos un formulario. Hacemos doble clic sobre el botón de comando y escribimos lo siguiente:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Con esto mostraremos el formulario al hacer clic en el botón de comando.


PASO 3: Para este ejemplo, en el formulario creamos varios cuadros de texto (textbox). Creamos también etiquetas (label) para describir qué datos nos mostrará el textbox. 




PASO 4: Hacemos doble clic en el formulario y escribimos lo siguiente:
        
Private Sub UserForm_Initialize()

TextBox1.Value = "Directo desde el código"
TextBox2.Value = 7  
TextBox3.Value = Worksheets("Hoja1").Range("B6").Value
TextBox4.Value = Worksheets("Hoja1").Range("B7").Value
TextBox5.Value = Worksheets("Hoja1").Range("B7").Value2
TextBox6.Value = Worksheets("Hoja1").Range("B7").Text

End Sub

En los dos primeros textbox ingresamos datos desde el código. En el primero una cadena de texto la cual se debe ingresar con comillas, y para el segundo, un número que se ingresa tal cual.

Los siguientes textbox traen datos de nuestras celdas:

  • TextBox3 trae el valor de la celda B6, 
  • TextBox4, TextBox5 y TextBox6 traen el valor de la celda B7. Todos ellos obtienen el dato, sin embargo, con distintos resultados.

De lo que pude rescatar leyendo algunas entradas en otros lugares:

  • Range().Value trae el valor de la celda, y si lo que se requiere es traer un valor de moneda o fecha, .Value lo traerá con dicho formato.
  • Range().Value2 parece ser el modo más rápido de obtener los datos, ya que trae el valor que excel le da a la celda antes de cualquier formateo. No trabaja con formatos de moneda ni fecha.
  • Range().Text establece o devuelve el texto de la celda con formato. Se puede tener problemas si el contenido de la celda excede el ancho del textbox. También, .Text se suele usar con rangos de una celda. 

 
 PASO 5: Ejecutar



COMENTARIO: Esto requirió investigación y aún así, no tengo claras todas las implicancias de usar Range().Value, Range().Value2 o Range.Text() cuando se trata de casos más particulares. Aquí algunos links a páginas que hablan acerca de esto:


LINK DE DESCARGA

No hay comentarios.:

Publicar un comentario