
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