Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Abajo encontrarás sencillos ejemplos de la aplicación de cómo imprimir desde Excel VBA:
Selección
Hojas seleccionadas
Todas las hojas
End Sub
End Sub
End Sub
Alineación izquierda/derecha
Sub Ajustar_izq_der()
If Selection.HorizontalAlignment = xlRight Then
Selection.HorizontalAlignment = xlLeft
Else
Selection.HorizontalAlignment = xlRight
End If
End Sub
Convertir pesetas a euro
Sub Convertir()
Set Area = Selection
For Each Cell In Area
z = Round(Cell / 166.386, 2)
Cell.Value = z
Cell.NumberFormat = "#,##0.00"
Next Cell
End Sub
Pegar formato
Sub PegarFormato()
Selection.PasteSpecial Paste:=xlFormats
Application.CutCopyMode = False
End Sub
Pegar valor
Sub PegarValor()
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End Sub
Dos decimales
Sub DosDec()
Dim Area As Range
Set Area = Selection
For Each Cell In Area
z = Round(Cell, 2)
Cell.Value = z
Cell.NumberFormat = "#,##0.00"
Next Cell
End Sub
Separador de miles
Sub SeparadorMil()
Dim Area As Range
Set Area = SelectionIf Area.NumberFormat = "#,##0" Then
Area.NumberFormat = "#,##0.00"
Else
Selection.NumberFormat = "#,##0"
End If
End Sub
Autofilter
Sub FilterExcel()
Selection.AutoFilter
End Sub
Procedimiento
Crea un formulario „frmMensaje„ con el mensaje que quieres que aparezca. Añade este
código al formulario. El ejemplo nos dice que la rutina se va a esperar („Wait„) hasta la
hora
Now + TimeValue("00:00:04")
Sub MostrarFormulario()
End Sub
Luego, para mostrar el formulario en cualquier parte de tu programa, aplicas este código.
frmMensaje.Show
El código
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strRuta As String
Dim intRowActual as Double, intColumnActual As Double
Dim intRow as Double, intColumn As Double
'ruta a imagen
strRuta = "C:\imagen.jpg"
'fila/columna actual
intRowActual = ActiveCell.Row
intColumnActual = ActiveCell.Column
'fila/columna de scrollRow
intRow = ActiveWindow.ScrollRow + 1
intColumn = ActiveWindow.ScrollColumn
'insertamos comentario
Cells.ClearComments
With Cells(intRow, intColumn)
.AddComment
.Comment.Text Text:="Hola"
.Comment.Visible = True
End With
End Sub
Sumar un rango en Excel es fácil. Sumar un rango expresado por una variable en VBA es
un poco más complicado (pero sigue siendo fácil).
No siempre se sabe de antemano que celdas formarán parte del rango a sumar. Entonces
tenemos que expresar el rango de forma variable.
En Excel es fácil sumar este rango mediante una sencilla fórmula. Pero VBA no contiene
ninguna función igual. Entonces hay que hacer que VBA utilice las funciones de Excel.
Application.WorksheetFunction.Sum(varSuma)
De esta manera puedes aplicar cualquier fórmula de Excel en VBA, con tal de que
empieces la línea de código con
Application.WorksheetFunction...
Nuestro ejemplo
En este ejemplo el rango que nos interesa sumar son los valores correspondientes a “BB”,
es decir C8:C13.
Pero hay un problema; este formato no siempre está presente en todos los ordenadores.
Entonces se crea su propio formato AAAA-MM-DD.
El ejemplo arriba: Azul/formato porcentaje sin decimales si mayor que 0,00. Rojo si menor que
0,00.
‘-’ si equivale a 0,00.
Números
Aquí decides la presentación de números (valores). Intenta encontrar formatos que sean
“fáciles” y eficaces. Un formato extendido en contabilidad es:
Como puedes ver en el primer ejemplo, la celda contiene un valor que termina en ,69.
Luego el formato dice cuántos decimales se van a mostrar.
Estoy armando un listadito de códigos muy útiles para usar cuando estás
desarrollando una macro.
Los voy compartiendo y actualizando a medida que voy avanzando.
A fines del año pasado empecé a hacer varias macros en el laburo, y la verdad
que ahora quiero hacer todo con macros.
Hace mucho tiempo que uso Excel, y la verdad que las macros le dan un giro muy
groso, y eso que apenas estoy aprendiendo!!!
Además subo y comparto un libro en .pdf que está muy bueno, con el cual estoy
aprendiendo "formalmente", y no solo por prueba-error. Lamentablemente el libro
está en inglés, así que no va a ser útil para todos. Pero como para escribir macros
hay que usar comandos en inglés supongo que muchos lo van a aprovechar.
Una aclaración que no está de más, soy un simple usuario de Excel, del palo de la
contabilidad y los números, que sabe algo de inglés, y que tiene una curiosidad
enorme.Si alguien anda por un camino parecido al mio, ánimo que muchas veces
parece que no damos pie con bola, pero al final sale!
Codigo
No calcular automaticamente
-Es igual a configurar en las opciones de Excel "Calcular=Manual"-
Application.Calculation = xlManual
Pegar formulas
-Es lo mismo a "Pegado especial -> Fórmulas"-
Pegar valores
-Es lo mismo a "Pegado especial -> Valores"-
Ocultar hoja
-En este caso oculta Hoja1-
Application.ScreenUpdating = True
R edondear un número es una tarea común que podemos hacer con la fórmula de Excel
REDONDEAR. En éste post nos proponemos programar una función en VBA, mediante una macro,
que produzca el redondeo.
=PI()
El segundo número visto es e, que es la base de los logaritmos neperianos. También podemos
decir que es la exponencial de 1. En Excel se puede calcular con la siguiente expresión:
=EXP(1)
Si aplicamos la función definida por el usuario Redondealo obtendremos en ambos casos el valor
de 3.
=Redondealo(PI())
=Redondealo(EXP(1))
http://trucosexcel.blogspot.com/2008/10/glosario-traduccin-de-funciones.html
Application.WorksheetFunction.round(número, precisión)
Código:
Programemos la función
Con la función Redondealo fuimos capaces de redondear a cero decimales. En esta ocasión vamos
a introducir la variable p que recoge la precisión del redondeo. La función se llama MiRedondeo y
el código es el siguiente.
Código:
cal0 = Int(nnum)
cal1 = dec(nnum)
cal3 = Int(cal2)
cal5 = Int(cal4)
cal8 = cal3 + 1
Else
cal8 = cal3
End If
End Function