lunes, 31 de octubre de 2016

Excel Convertir celda con valor fecha y hora - a formato de fecha simple

Sub RunTheFechaJesMain()
'macro para convertir fecha y hora a formato de fecha simple

Dim fecha As Date

'paso la celda con fecha como parametro
fecha = TheFecha(ActiveCell)

ActiveCell.Offset(0, 1).Value = fecha

'asignar formato deseado:
ActiveCell.Offset(0, 1).NumberFormat = "m/d/yyyy"

End Sub


Function TheFecha(TheCelda As Date) As Date

TheFecha = DateSerial(Year(TheCelda), Month(TheCelda), Day(Celda))

End Function



jueves, 27 de octubre de 2016

Graficos(Chart) - Excel - Excel Charts

Jerarquia de la aplicacion para los charts:
'Application
'Workbook
'Worksheet
'ChartObjets Chart
'Conociendo esta estructura para el modelo de objetos - grafico 'podra acceder a un gráfico determinado para modificarlo
'Activar un gráfico mediante su índex correspondiente.Es decir el 'número de índex que le corresponde dentro de la colección.
'Un ejemplo sencillo seria el activar el chart número 3 de su hoja..'(..Claro siempre que exista)
ActiveSheet.ChartObjects(3).Activate
'De igual manera puede eliminar al chart de índex 2 .
'Eliminar un chart determinado
ActiveSheet.ChartObjects(2).Delete
''Cambiar el nombre a un chart determinado
ActiveChart.Parent.Name = "ChartEnero"
'Cambiar el título de un chart
ActiveChart.ChartTitle.Text = "ChartVentas"
'Activando un gráfico mediante su nombre
Activesheet.Chartobjects("ChartVentas").activate
'Recuperar el nombre del chart activo
Msgbox ActiveChart.Name
'Te devolverá una cadena de esta forma primero la referencia a la 'hoja y luego el nombre del chart.
Hoja1 Gráfico 1
Msgbox ActiveChart.parent.Name
'Te devolverá ...solo el nombre del chart.

Excel VBA - Método SpecialCells

Devuelve referencias a rangos con determinadas características:
Por ejemplo podemos obtener referencias a rangos con errores, valores numéricos, texto, etc.
-Sintaxis para obtener un objeto rango de las celdas
Rango(RangodeCeldas).SpecialCells(Type, Value)
El rango de celdas es de donde se quiere buscar las celdas con determinadas características.
Los Parámetros serían los sgtes:
Type: parámetro obligatorio que representa el tipo de Celdas.
----
Value: parámetro Opcional
-----
Si el parámetro "Type" es (xlCellTypeConstants) o (xlCellTypeFormulas), el parámetro "Value" servirá para determinar qué tipos de celdas que se incluirán en el rango devuelto.
a) Type: Las constantes para los tipos de celdas a buscar.
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.
xlCellTypeVisible. Todas las celdas visibles.
b) Value:Las Constantes para el segundo parámetro opcional.
Permitirá refinar nuestra búsqueda de celdas especiales.
xlErrors,xlLogical, xlNumbers,xlTextValues
Set rng = Range(TuRango).SpecialCells(xlCellTypeFormulas, xlErrors) 'formulas con error
MsgBox rng.Address

Trabajar con varios objetos

En ocasiones tenemos numerosos objetos en la hoja (gráficos, imágenes, formas, etc.)
Y necesitamos manipular alguna propiedad o el tamaño en todos.
1. Seleccionamos uno de los objetos.
2. Presionamos [CTRL] + [SHIFT] + [BARRA ESPACIADORA]
3. Una vez que todos los objetos estén seleccionados procedemos a modificar o eliminar [Tecla Supr para borrar todos].


Como evitar que se cierre tu libro (sin guardar cambios)

Deberás guardar tu libro como: 
1. Libro habilitado para macros
2. Presiona ALT + F11
3. Ubica el evento BeforeClose (ver captura) y añade el código

Encontrar duplicados Excel

Encontrar duplicados fácilmente:
Ir a Ficha Inicio > -Formato Condicional >
-Resaltar reglas de Celdas > -Duplicar Valores

Trabajar con Hojas Ocultas y muy Ocultas

Adicional al metodo estandar de ocultar hojas tambien  podemos trabajar con hojas muy ocultas (esto sera muy util apra datos
que no queremos que sean visibles y menos modificados por los usuarios

Presionamos ALT + F11
Luego desde el explorador de proyectos VBA -> Seleccionamos la hoja ->ubicamos su propiedad visible y seleccionamos
2-XlsheetVeryHidden