Excel VBA Code/Excel Macros / Complementos para Excel/vba macros/vba samples Excel Macros/Excel VBA/Excel Add-ins /Microsoft Excel/Spreadsheet Tools/Charts
sábado, 24 de julio de 2010
Excel vba - Metodo SpecialCells
Excel vba - Metodo SpecialCells
Este metodo(SpecialCells) es gran ayuda para devolvernos referencias a rangos con determinadas caracteristicas :
Por ejemplo podemos obtener Mediante el metodo SpecialCells referencias a rangos :
Esta seria la sintaxis para obtener un objeto rango de las celdas
El rango de celdas es de donde se quiere buscar las celdas con determinadas carateristicas
Rango(rangodeCeldas).SpecialCells(Type, Value)
Los Parámetros serian los sgtes :
Type : parametro obligatorio que represnta el tipo de Celdas que se incluirán.
----
Value :parametro Opcional
-----
Si el paramtro "Type" es (xlCellTypeConstants) o (xlCellTypeFormulas), el parametro "Value" servira para determinar que tipos de celdas que se incluirán en el rango devuelto.
a)Las constantes para los tipos de celdas a buscar(XlCellType)
xlCellTypeAllFormatConditions. Celdas con cualquier formato.
xlCellTypeAllValidation. Celdas con criterios de validación.
xlCellTypeBlanks. Celdas vacías.
xlCellTypeComments. Celdas que contengan notas.
xlCellTypeConstants. Celdas que contengan constantes.
xlCellTypeFormulas. Celdas que contengan fórmulas.
xlCellTypeLastCell. La última celda del rango.
xlCellTypeSameFormatConditions. Celdas que tengan el mismo formato.
xlCellTypeSameValidation. Celdas que tengan los mismos criterios de validación.
xlCellTypeVisible. Todas las celdas visibles.
b)LAs Constantes para el segundo paarmetro que es opcionl (XlSpecialCellsValue) Valor
Este segundo parametyro nos permitira refinar nuestra busqueda de celdas especiles filtrando por :
xlErrors
xlLogical
xlNumbers
xlTextValues
ejemplo
--------
Set rng = Range(TuRango).SpecialCells(xlCellTypeFormulas, xlErrors) 'formulas con error
MsgBox rng.Address
----------------------------------
Ejemplo Excel Vba code SpecialCells
Sub VbaExcelCode_SampleSpeciallCells()
'MacroVbaExcel :Jesus Martin Serrano Panduro
Dim rng As Range
Dim TuRango As String
TuRango = "A1:C13"
Set rng = Range(TuRango).SpecialCells(xlCellTypeFormulas, xlNumbers) 'formulas
MsgBox rng.Address
Set rng = Range(TuRango).SpecialCells(xlCellTypeFormulas, xlErrors) 'formulas con error
MsgBox rng.Address
Set rng = Range(TuRango).SpecialCells(xlCellTypeComments) 'celdas con comentario
Debug.Print rng.Address
'Nota :
'mediante debug print puedes escribir el valor de una variable ,etc en al ventana de inmediato
'Para poder ver la ventana de inmediato estando sobre el editor vba debes presionar control G y listo
'Es especialmente util para analizar los valores que toma una variable en el procedimiento vba
End Sub
Sub VbaExcelCode_formatEmptyCells()
'MacroVbaExcel :Jesus Martin Serrano Panduro
ActiveSheet.UsedRange.SpecialCells _
(xlCellTypeBlanks).Interior.Color = 3732
'Nota :En caso no existan las celdas se te devolvera el error 1004 no se encontraron celdas
'debes validar que hacer en ese caso para no mostrar el mensaje en crudo.
End Sub
Sub vbaExcelCode_rowTestCells()
'MacroVbaExcel : Jesus Martin Serrano Panduro
'prueba las sgtes rutinas en Excel 2007 0 2010 - Filas de la version del Excel (1048576)
'como veras esto trabajaba correctamente en Excel 2003 -Filas de al versión del Excel (65536) o anterior por que no habian tantas filas
'esta es otra razon más par que restringas tus busquedas de celdas al rango usado o celdas especiales
MsgBox ActiveSheet.UsedRange.Cells.Count
MsgBox ActiveSheet.Cells.Count 'error 6 desbordamiento
End Sub
Sub VbaExcelCode_findLastCells()
'MacroVbaExcel: Jesus Martin Serrano Panduro
'para terminar el specialcells más simple para que quede claro
'activa la ultiam celda usada
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
End Sub
lunes, 19 de julio de 2010
Ultima celda usada(LastCell) en el Rango (1)
'Buscar la ultima celda usada(LastCell) en el Rango I
Sub Excel_Macro_ultim_cell_antes_de_una_celdaEnblanco()
'Mediante esta macro se podra seleccionar mediante codigo vba la ultima celda
'usada en la columna antes de una celda en blanco
'como se observa en la imagen del Excel se ha seleccionado la celda
'E5 que es justo la celda antes de la primera celda vacia (E6)
'con este parametro (xlDown) buscara la celda con direccion hacia abajo
Range("E1").End(xlDown).Select
End Sub
Sub Excel_Macro_LastCellInColumn()
'mediante esta macro podra seleccionar la ultima celda usada
'E10 tal como se aprecia en la imagen
Range("E65536").End(xlUp).Select
End Sub
Sub Excel_Macro_Ultiam_celda_antes_deBlanco()
'mediante esta macro podra realizar la busqueda de
'la ultima celda usada antes de una celda en blanco
'pero esta vez con direccion a la derecha (xlToRight) de su celda inicial
Range("A2").End(xlToRight).Select
End Sub
Sub UltimaCeldaUsada()
'Con esta macro se puede hallar la ultima celda usada
'en la Hoja
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Select
End Sub
sábado, 10 de julio de 2010
Enviar libro adjunto(macro excel vba)
Option Explicit
'Mediante este excel codigo vba de ejemplo podemos enviar el libro activo al email
'lo sgte que podrias hacer es crear un boton en el ribbon o un boton en una barra del Excel
'y desde ese botón enviar directamente un libro o una hoja
'Macro enviar el libro activo
Sub Prc_SendTheActiveWorkbook()
ActiveWorkbook.SendMail Recipients:="EXCELVBASAMPLE@Sample.com", Subject:=" EXCELVBASAMPLE "
End Sub
'Enviar solo primera hoja como adjunto
Sub prc_Send_one_Sheet_From_ActiveWorkbook()
ActiveWorkbook.Sheets(1).Copy
With ActiveWorkbook
.SendMail Recipients:="EXCELVBASAMPLE@Sample.com", Subject:=" SAMPLE EXCEL VBA "
.Close SaveChanges:=False
End With
End Sub
'Mediante este excel codigo vba de ejemplo podemos enviar el libro activo al email
'lo sgte que podrias hacer es crear un boton en el ribbon o un boton en una barra del Excel
'y desde ese botón enviar directamente un libro o una hoja
'Macro enviar el libro activo
Sub Prc_SendTheActiveWorkbook()
ActiveWorkbook.SendMail Recipients:="EXCELVBASAMPLE@Sample.com", Subject:=" EXCELVBASAMPLE "
End Sub
'Enviar solo primera hoja como adjunto
Sub prc_Send_one_Sheet_From_ActiveWorkbook()
ActiveWorkbook.Sheets(1).Copy
With ActiveWorkbook
.SendMail Recipients:="EXCELVBASAMPLE@Sample.com", Subject:=" SAMPLE EXCEL VBA "
.Close SaveChanges:=False
End With
End Sub
jueves, 3 de junio de 2010
Ejecutar macros de varios libros
'Ejecutar macros de diferentes libros
En ocasiones puede ser util tener nuestras macros agrupadas en diferentes libros de Excel o complementos para Excel
La sgte macro "Exe_From_otroAddin" nos muestra lo sencillo que resulta ejecutar macros externas
Sub exe_From_otroAddin()
Dim MyTool As String
Dim NameFile As String
Dim NameProcedure As String
NameFile = "Addin_new.xla" 'Primero Guardamos el nombre del Libro o complemento donde se encuentra la macro
NameProcedure = "Macro_otroAddin" 'Indicamos el nombre de la macro de Addin_new.xla
MyTool = "'" & NameFile & "'!" & NameProcedure 'Finalmente Concatenamos el nombre del complemento para Excel(NameFile)
con el nombre de la macro(NameProcedure)
Application.Run MyTool 'ejecutar la macro externa
End Sub
En ocasiones puede ser util tener nuestras macros agrupadas en diferentes libros de Excel o complementos para Excel
La sgte macro "Exe_From_otroAddin" nos muestra lo sencillo que resulta ejecutar macros externas
Sub exe_From_otroAddin()
Dim MyTool As String
Dim NameFile As String
Dim NameProcedure As String
NameFile = "Addin_new.xla" 'Primero Guardamos el nombre del Libro o complemento donde se encuentra la macro
NameProcedure = "Macro_otroAddin" 'Indicamos el nombre de la macro de Addin_new.xla
MyTool = "'" & NameFile & "'!" & NameProcedure 'Finalmente Concatenamos el nombre del complemento para Excel(NameFile)
con el nombre de la macro(NameProcedure)
Application.Run MyTool 'ejecutar la macro externa
End Sub
domingo, 28 de marzo de 2010
Chart area
'Este es un ejemplo de como cambiar el tamaño de chart area en varios charts
Sub SetChrtSize_Test()
Dim chtobj As ChartObject
Dim objChart As Chart
'cambiar el tamaño de chart area en el grafico activo
ActiveChart.ChartArea.Width = 1000
ActiveChart.ChartArea.Height = 80
ActiveChart.ChartArea.Interior.Color = 255
'Cambiar el tamaño de plot area
ActiveChart.PlotArea.Width = 1200
ActiveChart.PlotArea.Height = 800
ActiveChart.PlotArea.Interior.Color = 577
'Cambiar el tamaño de legend
ActiveChart.Legend.Interior.Color = 255
ActiveChart.Legend.Width = 33
'cambiar el tamaño de chart area en todos los graficos de la hoja activa (1)
For Each chtobj In ActiveSheet.ChartObjects
chtobj.Width = 250
chtobj.Height = 170
Next
End Sub
Suscribirse a:
Entradas (Atom)