PROGRAMAR EN VBA MACROS PARA EXCEL: agosto 2015

Buscar en listbox mientras se escribe en textbox





La búsqueda de datos siempre es algo imprescindible en una base de datos, en este post te presento algo bastante interesante que es una macro para buscar en listbox a medida que se escribe en un textbox, en otras palabras cuando escribes en el textbox en tiempo real irán apareciendo los resultados en el listbox y que coinciden con lo que se escribe en el textbox.






Antes de continuar, recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas 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 ejemplo verás un botón que muestra un formulario, en el hay un listbox y dos textbox, el primer textbox sirve para buscar en un campo y el otro en otro campo; además existe un botón para salir del formulario, que se encuentra en la parte inferior, ya que el formulario tiene anulado el botón para cerrar el formulario la clásica X en la parte superior derecha.

La base de datos se encuentra en la Hoja2 y consiste en un listado de compañías de seguros, al buscar en el textbox1 a medida que se va escribiendo van apareciendo las coincidencias con el texto que se va escribiendo, en este caso se usaron como base de datos compañías de seguros listadas en la hoja2, pero pueden estar en la misma hoja y puede ser cualquier base de datos que se tenga.

Más abajo se expone el código por ahí es un poco difícil de entender para un principiante, pero si se descarga el ejemplo y se hace referencia al lugar donde está la base de datos, funcionará perfecto sin mucho conocimientos de programación.

Cuando se inicia el formulario en el evento UserForm_Initialize, este toma el listado de datos de la base y lo carga en el origen de las filas del listbox, más precisamente con este código .RowSource = "Hoja2!A2:" & wc & uf ; este es el que establece donde está la base de datos a cargar en el listbox.

Este es el código que permite comparar lo que se está escribiendo con los datos de la bse de datos para luego llenar el listbox If UCase(strg) Like UCase(TextBox1.Value) & "*" Then; este código, compara el valor de las celdas donde se busca con el valor del textbox, se debe tener presente que se usa un comodín entonces será lo que está escrito en el textbox más cualquier otra cadena de caracteres, por eso es que busca la coincidencia a través de LIKE de lo que se escribió más cualquier cadena de caracteres.

Una vez encontrada las palabras coincidentes llena el listbox, todo esto es en cuestión de milésimas de segundos, todo dependerá de la cantidad de datos que tengamos en la base de datos, de la rapidez de la PC, de la memoria RAM, sin embargo en PC con poca capacidad es bastante rápido buscando en bases de datos de 30000 registros, solo es cuestión de adaptarlo y ver como se comporta en cada pc, también se puede adaptar para que busque después que hayamos escrito varios caracteres y de esa manera achicar mucho más la base de datos y por ende el tiempo de búsqueda; el listbox lo llena con la siguiente lineas de código

For i = 2 To uf
   strg = b.Cells(i, 2).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)
  End If
Next i


En el vídeo de abajo encontrarás una explicación más detallada y verás en funcionamiento la macro que permite buscar en el listbox a medidas que escribes en textbox.

Desde el link del final se puede descargar el ejemplo denominado Buscar en lisbox a medida que se escribe en textbox y cientos de macros que puedes adaptar a tu proyecto, su uso es libre, si te fueron de utilidad considera la posibilidad de invitarme una tasa de café para seguir subiendo cosas útiles.

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.








Código que se inserta en un userform



Private Sub CommandButton1_Click()
Unload Me
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:B" & uf
   Exit Sub
End If
b.AutoFilterMode = False
Me.ListBox1 = Clear
Me.ListBox1.RowSource = Clear
For i = 2 To uf
   strg = b.Cells(i, 2).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 = "30 pt;150 pt"
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:B" & uf
   Exit Sub
End If
b.AutoFilterMode = False
Me.ListBox1 = Clear
Me.ListBox1.RowSource = Clear
For i = 2 To uf
   strg = b.Cells(i, 1).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 = "30 pt;150 pt"
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 = 2
    .ColumnWidths = "30 pt;150 pt"
    .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



Código que se inserta en un módulo

Sub muestra1()
UserForm1.Show

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      

Macro para eliminar o borrar filas vacias





Algo bastante necesario cuando se realiza un macro es saber como eliminar las filas vacías de una hoja de Excel, algo tan simple, que a veces se complica un poco, pues bien en este post te muestro una macro que elimina o borra filas vacías, se debe adaptarla a la hoja donde están las filas a eliminar modificando las referencias y funcionará perfecto.

Antes de continuar, recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas 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.





Se muestran dos macros una para eliminar filas vacías, una donde recorre o evalúa una sola columna, es decir por ejemplo recorre la columna A si contiene una celda vacía elimina toda la fila y la otra macro evalúa que este vacía toda la fila en ese caso la borra o elimina.

El comando para eliminar filas es Delete, este permite eliminar las filas vacías, si necesitas saber como copiar y pegar datos visita como copiar, cortar y pegar en VBA.

Si tu requieres eliminar una filas el comando o unos de los comandos que puedes utilizar es el siguiente, que permite eliminar toda la fila, sin importar si en el resto de las columnas distintas a la columna 2 o B existen datos o no, vasta con que en la fila 3 y la columna 2 no existan datos y borra toda la fila completa.

Cells(3 2).EntireRow.Delete

Para obligar a la macro a verificar que tampoco exista datos en las otras columnas de la fila analizada se usa el siguiente comando, que obliga a analizar que en toda la fila dos no existan datos, caso contrario no borra nada.

 Rows(2).Delete


Desde el link del final se puede descargar el ejemplo y cientos de macros que puedes adaptar a tu proyecto, su uso es libre, si te fueron de utilidad considera la posibilidad de invitarme una tasa de café para seguir subiendo cosas útiles.

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.







Código que se inserta en un módulo



Sub EliminaFilasVacias()
Application.ScreenUpdating = False
Set a = Sheets("Hoja1")
uf = a.Range("A" & Rows.Count).End(xlUp).Row
For x = uf To 2 Step -1
If a.Cells(x, 1) = Empty Then Cells(x, 2).EntireRow.Delete
Next x
Application.ScreenUpdating = True
End Sub

Sub EliminaTodasFilasVacias()
Application.ScreenUpdating = False
Set a = Sheets("Hoja1")
uf = a.Range("A" & Rows.Count).End(xlUp).Row
For x = uf To 2 Step -1
If Application.CountA(Rows(x)) = 0 Then Rows(x).Delete
Next x
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 establecer el ancho de una columna




En este post te voy a mostrar algo bastante necesario cuando se está dando formato a una hoja mediante macros y es como establecer el ancho  de una columna y como autoajustar el ancho de una columna, anteriormente había publicado un post explicando como establecer el alto de una fila  y auto ajustar el alto de una o más filas.

Antes de seguir recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá. 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.


  

Si se requiere establecer ya sea una columna o conjunto de columnas si o si es necesario referenciar o seleccionar dichas columnas, acá te enseño como seleccionar o bien hacer referencia a la fila o rango; si lo que requieres es modificar de las columnas debes usar ese código: ColumnWidth; ello te permitirá manipular como quieras el ancho de las columnas.

En el siguiente caso se establece el ancho de la columna B en 18.

Range("B2").ColumnWidth = 18

La codificación siguiente permite establecer en 23 el ancho de las columnas F a la J.

Range("F2:J2").ColumnWidth = 23

Suponiendo que tienes datos de ancho variable, que es lo más seguro, puedes establecer el auto ajustado automático, el siguiene ejemplo establece las columnas F a la J como auto ajustables, es decir variará su ancho dependiendo los datos contenidos en la celdas de la columna, auto ajustando el ancho al dato más ancho de toda la columna.

Range("F2:J2").EntireColumn.AutoFit = 23

Unas lineas más abajo se encuentre el código copia y pegalo en un módulo, luego lo ejecutas y verás los resultados mencionados en el post.

Desde el link del final se puede descargar cientos de macros que puedes adaptar a tu proyecto, su uso es libre, si te fueron de utilidad considera la posibilidad de invitarme una tasa de café para seguir subiendo cosas útiles.

Código que se inserta en un módulo



Sub AnchoColumna()
Range("B2").ColumnWidth = 18
Range("F2:J2").ColumnWidth = 23
Range("F2:J2").EntireColumn.AutoFit = 23
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 establecer el alto de una fila




Seguramente te encuentras programando una macro y de pronto necesitas saber como establecer el alto de una fila o como autoajustar el alto de una fila, bien los siguientes códigos te permiten establecer a través de una macro de Excel el alto de una fila, como así también  te mostraré como hacer autoajustable el alto de la fila, en el link siguiente te muestro como establecer el ancho de una columna y como autoajustar el ancho de una columna..


  

Recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá. 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 establecer el alto de una fila se debe seleccionar o bien hacer referencia a la fila o rango y aplicar el siguiente código RowHeight = 20, mediante esta codificación se establece la fila en un alto igual a 20, ahí se debe poner el algo que se requiera, el código, para establecer en la fila dos una celda cuyo alto sea 20, es el siguiente.

Range("D2").RowHeight = 20


Si se desea establecer un conjunto de filas se debe referenciar las filas y aplicar el código, por ejemplo si se requiere que la fila 5 a la 8 tengan un algo de fila igual a 28 se debe realizar de esta forma:

Range("D5:D8").RowHeight = 28

Si en nuestra macro o los  datos que se ingresarán son de diferente tamaño quizás sea práctico establecer una fila auto ajustable, eso se logra con AutoFit; por ejemplo con la siguiente codificación se establece que las filas 5 a 8 sean auto ajustables, es decir variarán de tamaño dependiendo el alto de los caracteres introducidos.

Range("D5:D8").EntireRow.AutoFit

Copia y pega el código que se encuentra al final en un módulo y prueba el funcionamiento de los códigos brindados, verás como se establece el ancho de una fila, de un rango y como establecer celdas auto ajustables.

Desde el link del final se puede descargar cientos de macros que puedes adaptar a tu proyecto, su uso es libre, si te fueron de utilidad considera la posibilidad de invitarme una tasa de café para seguir subiendo cosas útiles.

Código que se inserta en un módulo



Sub AltoFila()
Range("D2").RowHeight = 20
Range("D5:D8").RowHeight = 28
Range("D5:D8").EntireRow.AutoFit
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      

Humor Gráfico Hamburguesa





Humor Gráfico





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


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


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

Buscar datos a medida que se escribe en Textbox






El ejemplo que se muestra se titula buscar en una hoja de Excel mientras se escribe en TextBox, la idea es que a medida que vayamos escribiendo en textbox, vayan apareciendo las coincidencias 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 se explica en este post, a mi entender es bastante útil, ya que permite buscar en una base de datos a medida que se escribe en un Textbox; en este caso, es una hoja de Excel, que irá mostrando todas la coincidencias que haya con la letras o letras ingresadas en un Textbox, en otras palabras tendrá en cuenta la cadena de texto ingresada y la buscará en la base de datos en tiempo real, es decir a medida que se vaya escribiendo.

La macro funciona con un filtro avanzado, cuyos criterios son otorgados por el usuario al ingresar los datos; este filtro se realiza en el lugar, mostrando las coincidencias con las letras o palabras escritas en textbox, al descargar el ejemplo podrás observar dos textbox incrustados en Excel, donde se deberá escribir lo que se requiera buscar.

El primer textbox busca en la columna C el nombre del producto y el segundo textbox busca en la columna D por marca; una particularidad es que busca la cadena de texto ingresada en el textbox en todo el registro, es decir si se ingresa sol, mostrará palabras que tengan la cadena de texto sol al inicio, medio o final ya sea en una palabra o en todas las palabras que componen el registro de dicha celda.

Automáticamente determina el rango donde debe buscar ya que establece cual es la última fila con datos y arma el rango donde se debe buscar.

Desde el link del final se puede descargar el archivo para poder adaptar y observar su programación, no tiene restricción alguna; en caso que te haya sido útil no olvides colaborar  y compartido en las redes sociales. 

El vídeo de YouTube muestra en forma detallada la programación y funcionamiento del ejemplo presentado en el post, no olvides suscribir al canal para recibir las actualizaciones, como así tampoco compartir con tus amigos en las redes sociales..






Código que se inserta en una hoja Worksheet



Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    Sheets("Hoja1").Range("A2").Value = "*" & TextBox1.Text & IIf(TextBox1.Text = "", "", "*")
    Call Searching
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub

Private Sub Searching()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    If Sheets("Hoja1").FilterMode = True Then Sheets("Hoja1").ShowAllData
    uf = Sheets("Hoja1").Range("A" & Cells.Rows.Count).End(xlUp).Row
    Sheets("Hoja1").Range("C4:C" & uf).AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range("A1:A2"), Unique:=False
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub
Private Sub TextBox2_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    Sheets("Hoja1").Range("E2").Value = "*" & TextBox2.Text & IIf(TextBox2.Text = "", "", "*")
    Call Searching1
'Application.DisplayAlerts = True
'Application.ScreenUpdating = True
End Sub

Private Sub Searching1()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    If Sheets("Hoja1").FilterMode = True Then Sheets("Hoja1").ShowAllData
    uf = Sheets("Hoja1").Range("A" & Cells.Rows.Count).End(xlUp).Row
    Sheets("Hoja1").Range("D4:D" & uf).AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range("E1:E2"), Unique:=False
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 ordenar hojas en forma ascendente





Anteriormente te mostré como ordenar hojas en forma descendente, ahora te muestro lo opuesto, es decir que el orden de las hojas sea en forma ascendente.

Recomiendo que leas un excelente libro sobre Excel el que te ayudará operar las planillas de cálculo, haz click acá, si quieres un libro sobre Excel, en inglés, entonces debes hacer click acá. 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 tiene como fin poder seleccionar la impresora que deseamos previo a la impresión, existen varios post relacionados con toda esta saga de artículos relacionados con macros para imprimir en Excel como son: imprimir una hoja del libro de Excelcomo configurar una hoja de Excel mediante macro, imprimir en una impresora distinta a la que se encuentra por defecto.

La macro de ejemplo en VBA presentada en este post es bastante simple, lo que realiza es un recorrido de todas las hojas, hoja por hoja estableciendo el nombre de la misma y comparando en base a ello las va modificando de lugar, descarga el ejemplo y apreciarás en forma más fácil lo expresado.

Desde el link del final descarga el ejemplo denominado como ordenar hojas en forma ascendente, lo puedes modificar y adaptar a tus necesidades ya que el código se encuentra abierto y disponible para que lo adaptes.

El siguiente vídeo de Youtube muestra una explicación en detalle, míralo y comparte con tus amigos en las redes sociales; suscribe para recibir todas las actualizaciones en tu mail.






Código que se inserta en un módulo




Sub OrdenaHojaAsc()
For ii = 1 To Sheets.Count - 1
    For jj = ii + 1 To Sheets.Count
        If Sheets(ii).Name > Sheets(jj).Name Then
           Sheets(jj).Move before:=Sheets(ii)
        End If
    Next jj
Next ii
Sheets("AAA").Select
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 ordenar hojas en forma descendente





En este post voy a mostrar como ordenar hojas en forma descendente, es decir la macro evalúa cada una de las hojas del libro de Excel y las ordena en forma ascendente, también se puede ordenar en forma ascendente.

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 tiene como fin poder seleccionar la impresora que deseamos previo a la impresión, existen varios post relacionados con toda esta saga de artículos relacionados con macros para imprimir en Excel como son: imprimir una hoja del libro de Excelcomo configurar una hoja de Excel mediante macro, imprimir en una impresora distinta a la que se encuentra por defecto.

El ejemplo realiza dos bucles, ello permite recorrer todas las hojas e ir comparando el nombre de cada hoja e ir moviendo dependiendo del nombre de cada una de ellas, para entender mejor aconsejo descargar y observar la codificación y funcionamiento.

Desde el link final podrás descargar el ejemplo totalmente GRATUITO que muestra como ordenar las hojas de Excel en forma descendente, recordando que si este o alguno de los cientos de ejemplos publicados te fueron de utilidad y puedes, aporta a seguir manteniendo esta página.

El vídeo de Youtube siguiente muestra una explicación más detallada, sugiero que lo veas, no olvides suscribir al canal para recibir las actualizaciones en tu mail.





Código que se inserta en un módulo




Sub OrdenaHojaDesc()
For ii = 2 To Sheets.Count - 1
    For jj = ii + 1 To Sheets.Count
        If Sheets(ii).Name < Sheets(jj).Name Then
           Sheets(jj).Move before:=Sheets(ii)
        End If
    Next jj
Next ii
Sheets("AAA").Select
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