Como desplazar boton automaticamente al hacer scroll





Anteriormente se presentó un post que permitía realizar un scroll seleccionado una celda y desplazando botón automáticamente para que este siempre visible; en el post de ahora te muestro como desplazar automáticamente un botón al hacer scroll.

Se debe destacar que Excel o merjor dicho VBA para Excel no tiene el evento scroll, es decir que no se puede apelar a este evento para realizar alguna acción; si se puede determinar mediante una
función los movimientos que se realizan de la pantalla, pero es algo muy engorroso y difícil, sumando a que ocupa bastante recursos,y además se tiene que descargar una Dll, pero es posible realizarlo, sin embargo en este pos se apela a algo más sencillo para salvar tal situación y permitir mover automáticamente un botón de comando automáticamente.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  

Para entender su funcionamiento sugiero descagar el ejemplo y mirar el vídeo donde se ve en funcionamiento; descargado el archivo se observa un botón incrustado en Excel o Control ActiveX; la macro funciona al desplazarse con la rueda del mause o hacer scroll la hoja de Excel se mueve una determinada cantidad de filas en caso de scroll vertical o columnas en caso de scroll horizontal, posteriormente se hace click en cualquier celda que esté visible y automáticamente el botón se desplaza hasta la zona.

Es una forma sencilla de sortear el problema que no existe el evento scroll en VBA para Excel, no obstante se obtiene el mismo efecto con el agregado de un click en cualquier celda del rango para que la macro determine la posición de la primera celda del rango visible y desplace el botón en base a dichas coordenadas.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set ran = ActiveWindow.VisibleRange.Cells
Set mybo = Sheets("hoja1").CommandButton1
With mybo
.Top = ran.Top + 100
.Left = ran.Left + 100
End With
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Como pasar datos de listbox con enter





En una oportunidad anterior se presentó un ejemplo de macro donde se pasaban datos desde un listbox a una hoja de Excel con doble click, en este post muestro una macro que permite también pasar datos de un listbox a una hoja de Excel, pero mediante enter; es decir una vez seleccionado el ítem presionado enter se pasan los datos del listbox a la hoja de Excel; también se han publicado otros post relacionados buscar en listbox mientras se escribe en textbox y pasar datos de listbox a hoja de Excel.

Recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


El ejemplo permite pasar datos del listbox a la hoja de Excel al presionar enter en el listbox una vez seleccionado el ítem, anteriormente se mostró una variante, que permitía pasar datos de un listbox a una hoja de Excel, pero mediante un doble click en el ítem.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo



Sub muestra1()
UserForm1.Show
End Sub

Código que se inserta en userform

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub ListBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
On Error Resume Next
If KeyAscii = 13 Then
Set a = Sheets("Hoja1")
filaedit = a.Range("A" & Rows.Count).End(xlUp).Row + 1
fila = Me.ListBox1.ListIndex
a.Cells(filaedit, "A") = ListBox1.List(fila, 0)
a.Cells(filaedit, "B") = ListBox1.List(fila, 1)
a.Cells(filaedit, "C") = ListBox1.List(fila, 2)
a.Cells(filaedit, "D") = ListBox1.List(fila, 3)
a.Cells(filaedit, "E") = ListBox1.List(fila, 4)
a.Cells(filaedit, "F") = ListBox1.List(fila, 5)
a.Cells(filaedit, "G") = ListBox1.List(fila, 6)
a.Cells(filaedit, "H") = ListBox1.List(fila, 7)
End If
End Sub

Private Sub TextBox1_Change()
On Error Resume Next
Set b = Sheets("Hoja2")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
If Trim(TextBox1.Value) = "" Then
     'Me.ListBox1.List() = b.Range("A2:H" & uf).Value
     Me.ListBox1.RowSource = "Hoja2!A2:H" & uf
   Exit Sub
End If
b.AutoFilterMode = False
Me.ListBox1 = Clear
Me.ListBox1.RowSource = Clear
For i = 2 To uf
   strg = b.Cells(i, 3).Value
   If UCase(strg) Like UCase(TextBox1.Value) & "*" Then
       Me.ListBox1.AddItem b.Cells(i, 1)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = b.Cells(i, 2)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = b.Cells(i, 3)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = b.Cells(i, 4)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = b.Cells(i, 5)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = b.Cells(i, 6)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = b.Cells(i, 7)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = b.Cells(i, 8)
   End If
Next i
Me.ListBox1.ColumnWidths = "20 pt;70 pt;180 pt;80 pt;60 pt;60 pt;60 pt;60pt"
End Sub
Private Sub TextBox2_Change()
On Error Resume Next
Set b = Sheets("Hoja2")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
If Trim(TextBox2.Value) = "" Then
     'Me.ListBox1.List() = b.Range("A2:H" & uf).Value
     Me.ListBox1.RowSource = "Hoja2!A2:H" & uf
   Exit Sub
End If
b.AutoFilterMode = False
Me.ListBox1 = Clear
Me.ListBox1.RowSource = Clear
For i = 2 To uf
   strg = b.Cells(i, 4).Value
   If UCase(strg) Like UCase(TextBox2.Value) & "*" Then
       Me.ListBox1.AddItem b.Cells(i, 1)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = b.Cells(i, 2)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = b.Cells(i, 3)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = b.Cells(i, 4)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = b.Cells(i, 5)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 5) = b.Cells(i, 6)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 6) = b.Cells(i, 7)
       Me.ListBox1.List(Me.ListBox1.ListCount - 1, 7) = b.Cells(i, 8)
   End If
Next i
Me.ListBox1.ColumnWidths = "20 pt;70 pt;180 pt;80 pt;60 pt;60 pt;60 pt;60pt"
End Sub

Private Sub UserForm_Initialize()
Dim fila As Long
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set b = Sheets("Hoja2")
uf = b.Range("A" & Rows.Count).End(xlUp).Row
uc = b.Cells(1, Columns.Count).End(xlToLeft).Address
wc = Mid(uc, InStr(uc, "$") + 1, InStr(2, uc, "$") - 2)
With Me.ListBox1
    .ColumnCount = 8
    .ColumnWidths = "20 pt;70 pt;180 pt;80 pt;60 pt;60 pt;60 pt;60pt"
    .RowSource = "Hoja2!A2:" & wc & uf
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
On Error GoTo Fin
If CloseMode <> 1 Then Cancel = True
Fin:
End Sub


Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Como simular scroll seleccionando celda y desplazando boton automaticamente





En este post te presento un ejemplo de macro que permite crear un scroll seleccionado celdas y desplazando un botón de comando automáticamente; scroll se puede definir como el desplazamiento que se realiza en una hoja o ventana, en este caso una hoja de Excel, a través de la rueda del mouse.

En otras palabras al seleccionar una celda con el mouse la hoja automáticamente hará un scroll desplazándose hasta la fila o columna seleccionada, es decir el scroll puede ser vertical u horizontal, desplazando automáticamente un botón de comando que se encuentra incrustado en la hoja de Excel.

Recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  

Desde el link del final se puede descargar el ejemplo que he dominado como simular un scroll del mouse seleccionando una celda y desplazando un botón de comando automáticamente; en el archivo se podrá observar un botón de comando incrustado (Control ActiveX) en la hoja de Excel.

El ejemplo funciona de la siguiente manera: al hacer click con el mouse en una celda determinada se realiza un scroll, es decir simula la acción realizada por la rueda del mouse, moviéndose hasta la fila y columna seleccionada, a su vez el botón se desplaza o mueve automáticamente quedando siempre visible o flotando en la hoja de Excel,

En el ejemplo no se agrega ningún procedimiento al botón, cada lector le deberá incorporar los procedimientos que sean necesarios, es bastante útil cuando se tiene planillas grandes y se requiere contar con los comandos que realizan procedimientos, siendo mucho más productivo ya que los comandos necesarios siempre se encontrarán visibles sea que navegue por cualquier celda o columna de la hoja.

Debajo se encuentra la codificación necesaria, se observa que la primer parte del código permite realizar el scroll y la segunda parte del código indica donde se debe desplazar el botón para que siempre esté visible.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.







Código que se inserta en un módulo




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With ActiveWindow
        .ScrollColumn = ActiveCell.Column
        .ScrollRow = ActiveCell.Row
End With
Set ran = ActiveCell
Set mybo = Sheets("hoja1").CommandButton1
With mybo
.Top = ran.Top + 100
.Left = ran.Left + 100
End With
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Como abrir otro libro y copiar o exportar datos del libro actual





Infinidades de veces se requiere copiar datos de un libro a otro, este post te muestra una macro que permite copiar datos del libro actual a otro libro, es decir permite seleccionar un archivo luego abrirlo copiar los datos del libo actual al libro que se abrió guardar los cambios y cerrarlo. Anteriormente se presentó otros post parecidos que quizás sean de interés como por ejemplo: macro que abre una serie de libros extrae datos y hace resumen o recorrer todas las hojas del libro y hacer un resumen.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  

Al descargar el archivo comprimido se encontrará una macro y un libro que se utiliza de muestra, pero puede usar cualquier libro de su PC, teniendo la precaución de que los datos contenidos en el libro con la macro se copiarán el en libro que se selecciones y se guardarán los cambios, por eso sugiero utilizar el libro que se acompaña para evitar perder datos de otros libros.

Presionado el botón se ejecuta una macro que abre un explorador de archivos de Windows, permitiendo seleccionar un archivo, luego la macro copia los datos del libro actual, abre el archivo seleccionado, copia los datos y cierra el libro que se selecciono como destino de los datos copiados o exportados, guardando los cambios.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.






Código que se inserta en un módulo




Sub openbook()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
Dim myfile, mybook, a, b, c As String
ruta = ActiveWorkbook.Path
ChDir ruta
myfile = Application.GetOpenFilename("Archivos Excel (*.xl*), *.xl*")
If VarType(myfile) = vbBoolean Then
MsgBox ("Operación cancelada"), vbCritical, "AVISO"
Exit Sub
End If
mybook = ActiveWorkbook.Name
Workbooks.Open Filename:=myfile, UpdateLinks:=0
FullName = Split(myfile, Application.PathSeparator)
a = FullName(UBound(FullName))
Set b = Sheets(ActiveSheet.Name)
b.Cells.Clear
Workbooks(mybook).Sheets("Datos").UsedRange.Copy Destination:=Workbooks(a).Sheets("Hoja1").Cells(1, 1)
Application.CutCopyMode = False
Workbooks(a).Close True
MsgBox ("Los datos se exportaron con éxito"), vbInformation, "AVISO"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Como limpiar todos los combobox de una sola vez





En mucha oportunidades al programar utilizamos userforms y en ellos podemos tener una gran cantidad de controles entre ellos combobox, sucede que cuando se requiere ingresar un nuevo registro, se deben limpiar o borrar los datos para dar lugar al nuevo registro, en el caso que tengamos muchos comobox la tarea de programar para borrar o limpiar los datos del combobox puede ser tediosa y si se realiza combobox por combobox se crea una gran cantidad de código innecesario, para evitar esto te presento esta macro que limpia todos los comobox del formulario  de una sola vez en forma automática.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  

El ejemplo de macro que permite limpiar todos los combobox de una sola vez, se puede descargar desde el final del post, en el vídeo que sigue se puede observar la ejecución de la macro y la explicación del código en forma grafica.

El código consiste en hacer un bucle recorriendo todos los controles del formulario, determinando cual es un combobox en ese caso procede a borrarlo y sigue recorriendo los siguientes controles borrando los datos de los combobox solamente o limpiando los mismos; el borrado o limpiado de los combobox en necesario hacerlo cada vez que se necesita escribir en ellos nueva información ya sea por datos nuevos que se buscan o para ingresar los mismos a la base de datos.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.






Código que se inserta en un módulo




Private Sub CommandButton5_Click()
Dim h As Object
For Each h In UserForm2.Controls
If TypeOf h Is ComboBox Then
h = ""
End If
Next
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Infidelidad Humor Grafico





Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


Humor Gráfico Infidelidad




Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlas, buscar en listbox mientras escribes en textbox, ordenar hojas libro excel por su nombre, conectar Excel con Access y muchos ejemplos más.







Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends      

Macro autoelimina archivo previo copia fichero





En este post te presento un ejemplo de macro, que cada lector le encontrará la utilidad de corresponda a cada necesidad, la macro se autoelimina, es decir borra el archivo con la macro, previo a ello y por cuestión de seguridad la macro autocopia el archivo previo a auto eliminarse.


Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.


  


El objeto de la macro que autoelimina archivo, es que verificada una cierta fecha de expiación de uso del archivo se elimine, el ejemplo en primer lugar determina el nombre del archivo y establece que numero de copia corresponde.

La macro cada vez que se autoelimina previamente se autocopia y otorga un número de copia, es decir el nombre del archivo esta compuesto por el nombre del archivo de la macro y al final agrega 1, 2, 3 y así sucesivamente, es decir que se puede volver a ingresar al archivo copiado y volver a eliminarlo que se seguirá autocopiando.

La macro también determinar el número de copia del archivo y otorga a la copia a guardar el número de copia siguiente al archivo actual, por último compara una fecha de caducidad con la fecha del sistema, en caso de ser menor el archivo procede a eliminarse, pero por cuestión de seguridad previamente se autocopia, en el caso del ejemplo la fecha es menor a la actual por lo cual el archivo siempre se eliminará.

Desde el link del final puedes descargar el ejemplo, ten cuidado con el archivo ya que se autoelimará, no obstante se realizará una copia antes; suscribe al blog ingresando tu mail en la casilla superior derecha de la página; te solicito suscribas a nuestro canal de You Tube y recibe GRATIS macros para automatizar Excel.

Suscribe a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.






Código que se inserta en un módulo




Private Sub LibroAutoelimina()
Dim fecha As Date
Dim wb As Workbook
WN = ActiveWorkbook.Name
Path = ActiveWorkbook.Path & "\"
path1 = ActiveWorkbook.Path & "\" & WN
FullName = Split(WN, Application.PathSeparator)
a = FullName(UBound(FullName))
pto = InStr(a, ".")
WN = Left(a, pto - 1)
lar = Len(WN)
cr = StrReverse(WN)
espa = InStr(cr, " ") - 1
cad = Mid(cr, 1, espa)
cad = StrReverse(cad)
For x = 1 To espa
le = Mid(cad, x, 1)
If IsNumeric(le) Then nlibro = nlibro & le
Next x

If Val(nlibro) = Empty Then
nl = 1
Else
nl = nlibro + 1
ne = InStr(WN, nlibro)
WN = Mid(WN, 1, lar - espa - 1)
End If

WN = WN & " " & nl & ".xlsm"
path2 = Path & WN
ActiveWorkbook.SaveCopyAs Filename:=path2

fecha = "20/09/2013" 'fecha de eliminacion del libro
Set wb = ThisWorkbook

If fecha <= Date Then MsgBox "Se ha cumplido el periodo de prueba del libro!", vbCritical


With wb
.Saved = True 'se estable como salvado
.ChangeFileAccess xlReadOnly 'se pone el acceso al libro como de solo lectura
Kill .FullName 'se elimina el libro
Application.Quit
End With
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends