El caso de hoy no tiene que ver con rangos o celdas sino con algunos controles, como puede ser un TextBox (o algún otro control) que necesitamos tenerlos visibles a medida que avanzamos por la hoja.
Ejemplo 1:
Veamos la siguiente imagen: a medida que vamos completando la columna se nos oculta el control donde ingresamos la información.
Y la otra solución, que es el motivo de este tema, es que el control 'acompañe' el avance por las filas de la hoja. O sea que el control sea flotante.
Lo que haremos entonces es indicar que la propiedad Top del control es la misma que la de la celda que recibe el dato.
ActiveSheet.TextBox1.Top = Range("A" & x).Top
NOTA: estos ejemplos presentan controles dibujados con la barra ActiveX.
Ejemplo 2:
En este segundo ejemplo contamos con 2 controles: un TextBox que nos permite ingresar la información y un Label que nos va mostrando la sumatoria del rango ocupado.
El código completo presenta estas instrucciones:
Private Sub TextBox1_Change()
'al limpiar el control no se ejecuta
If TextBox1 = "" Then Exit Sub
'al llegar a 11 caracteres vuelca el contenido a la hoja
largo = Len(TextBox1.Text)
If largo = 10 Then
'busca la primer fila libre
x = Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & x) = TextBox1.Text
' se acumula en el label el total
totx = totx + Range("B" & x).Value
Label1.Caption = Format(totx, "0.00")
'limpia el control y permite una nueva entrada
TextBox1 = "": TextBox1.Activate
'ubicar el control en la línea de la celda
ActiveSheet.TextBox1.Top = Range("A" & x).Top
ActiveSheet.Label1.Top = Range("A" & x).Top
'mover también el scroll
ActiveWindow.SmallScroll Down:=1
End If
End Sub
Descargar el ejemplo desde aquí.
Acceso al VIDEO N° 13
No hay comentarios.:
Publicar un comentario