Visual Basic para Aplicaciones - Boton o formulario flotante visible siempre en página de excel.

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de jose
Val: 13
Ha aumentado su posición en 9 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Boton o formulario flotante visible siempre en página de excel.

Publicado por jose (8 intervenciones) el 24/05/2020 10:55:28
Buenos días,

En una página de excel tengo 4 botones que se coloca en la columna A y a un número de filas inferior a la celda activa.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
'Desplazar botones
Dim fila, columna As Variant
fila = Target.Row
columna = Target.Column
 
With ActiveSheet.Shapes("BtNewSR")
    '.Left = Cells(fila, columna + 2).Left
     .Top = Cells(fila + 3, columna).Top
 
End With
 
End Sub

Pero esto falla cuando se filtra la tabla, los diferentes botones se superponen. Lo que me gustaría conseguir es un formulario que contiene todos los botones, queden fijados en la parte inferroir de la pantalla del excel y siempre visible cuando mueva la página.

Tengo el siguiente código que ví en una página, estuve probando pero no funciona

Código que coloco en el worksheet
1
2
3
4
5
6
7
Private Sub BtsSheet_frm_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Integer, ByVal Y As Single)
If Button = 1 Then Formx = X: FormY = Y
End Sub
 
Private Sub BtsSheet_frm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Integer, ByVal Y As Single)
If Button = 1 Then Me.Left (X - Formx): Me.Top = Me.Top + (Y - FormY)
End Sub

Codigo en formulario.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub BtsSheet_frm_Initialize()
Dim sql As sting, I As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
EliminarTitulo Me.Caption
 
With BtsSheet_frm
    .Height = 46
    .Top = 300
    .Left = 80
    .Width = 90
End With

Gracias de antemano,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Boton o formulario flotante visible siempre en página de excel.

Publicado por Antoni Masana (498 intervenciones) el 25/05/2020 14:08:16
A ver si me se explicar.

Normalmente se pone la cabecera en la fila 1 y es aquí donde se colocan las flechas de los Autofiltros (Si pones autofiltro).

La idea es poner los botones en la fila 1 al lado de la cabecera y fijar la fila 1 para que cuando bajes en una consulta no desaparezca.

Otra opción es dejar las filas 1, 2 y 3 vacías, poner la cabecera en la fila 4, los botones en la 2 y fijar las filas 1 a la 4 para mantener botones y cabecera. Lo de dejar la fila 1 y 3 vacía es por estética para que no quede pegados botones y cabecera, aunque con un buen diseño igual no hace falta.

Seguramente hay más opciones, pero a si a priori sin saber el diseño de la hoja y la utilidad de los botones poco más te puedo decir.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jose
Val: 13
Ha aumentado su posición en 9 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Boton o formulario flotante visible siempre en página de excel.

Publicado por jose (8 intervenciones) el 25/05/2020 18:38:16
Hola Antoni,

Leyendo lo que dices, acabo de recordar que es posible hacerlo inmovilizando las filas o columnas.

Estaba tan ofuscado con crear código, que es como lo tengo ahora, que no ví algo tan básico como eso.

Me has ayudado mucho.

Muchas gracias,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar