Ir al contenido principal

Entradas

Mostrando entradas de octubre, 2010

proteccion y validacion de datos con macros

Supongamos que tenemos ciertos datos que proteger en nuestra hoja de cálculos. Lo mas problable es que vayamos al formato de celda ( ctrol + 1 ), bloqueemos las celdas en cuestión y listo. Pero en versiones anteriores de Excel (antes de la 2003) nos encontraremos que luego de proteger la hoja, un sin número de herramientas estarán deshabilitadas. Esta falencia se vé, en parte, solucionada en versiones mas recientes, en donde un formulario nos brinda mas libertad y podremos configurar que es lo que deseamos proteger: esta imagen corresponde a Excel 2007 y podemos agregar unas cuantas omisiones a la protección, lo cual nos da una gran flexibilidad. [+/-] Ver el resto / Ocultar Con las macros y mediante los eventos de VBA podemos también crear interesantes herramientas para proteger nuestras hojas y/o validar los datos que se colocan en ellas, sin quitar ninguna funcionalidad. Lo mas interesante es que si lo trabajamos a nivel ThisWorkbook no deberemos ir bloqueando hoja x hoja ni nada

condicionar la seleccion de un rango

Una consulta que necesita de una entrada completa, para repasar un poco sobre los Eventos en VBA . Mi lector Julián (al cual también agradezco las palabras que me dedica en su correo) tiene el siguiente problema: tiene 3 rangos definidos en una hoja , y cada rango posee 10 celdas y una columna . El usuario debe seleccionar uno de esos rangos, pero solamente "ese" rango, sin ninguna celda adicional. Aparte, si hacen click dentro de alguno de esos tres rangos, la macro debe conocer sobre cual de ellos clickearon. Estimo que Julián está armando algún juego o algo por el estilo. tres rangos, de 10 filas y una columna cada uno. veremos la forma de identificarlos desde VBA [+/-] Ver el resto / Ocultar Al principio del post nombré a los Eventos. Estos son acciones que se disparan dentro de Excel y que nosotros podemos "capturar", aprovechándolos para allí insertar nuestro código. En este caso utilizaremos el evento SelectionChange, del objeto Worksheet, es decir, cada v

calculo de horas trabajadas - horas negativas

Tema traumático, si los hay. Las Fechas y Horas en Excel siempre traen problemas al momento de intentar la realización de cálculos matemáticos con ellas. Creo que he hablado sobre este asunto en alguna que otra entrada (y no la encuentro...), pero nunca viene mal refrescar algunos conceptos, para luego solucionar el problema planteado por uno de mis lectores. Aquí veremos como trabajar con una tabla que lleva la cantidad de horas trabajadas, con el agregado de que algunos turnos laborales comienzan un día y terminan otro . Quizás esto último parezca un detalle menor, pero notarán que no es asi, ya que una simple función matemática de resta/suma de horas nos daría resultados negativos, inaceptables en Excel. Vamos a suponer que ingresamos en A1 una fecha cualquiera, por ejemplo: arbitrariamente puse la fecha de mi cumpleaños... si alguno se acuerda... vieron, los regalos son tan reconfortnates. ;) [+/-] Ver el resto / Ocultar Si observamos la barra de fórmulas: 12/01/1974 . O sea qu

promedio condicional

Un lector me deja la siguiente consulta " como sacar promedio solo de notas aprobatorias, de un determinado rango ", en este link . La primer forma de ayudarlo me remite al uso de funciones matriciales. Si bien no me brinda muchos detalles del proyecto, estimo que (por ejemplo) existe un mínimo para aprobar una materia... supongamos 7. Y en un rango determinado tengo todas las notas alcanzadas por los distintos alumnos. Espero no haber entendido mal, por que toda esta entrada se basa en ese razonamiento. en C1 colocamos la menor nota para aprobar la materia. en el rango A2:A9 las distintas notas alcanzadas por los alumnos. [+/-] Ver el resto / Ocultar El promedio de esas 9 notas me da como resultado = 6,44. Pero solo debemos promediar aquellas notas que superaron la mínima, es decir, el valor que tenemos en C1. Como primera instancia propongo la siguiente función: {=PROMEDIO(SI(A2:A9>=C1;A2:A9))} Dicha función está compuesta de dos f'órmulas (anidadas) y encerradas e

editar el registro de windows con macros

Ya vimos como funciona, basicamente, Windows Script Host ( WSH ), aplicado solamente a la lectura de ciertos valores del Registro de Windows. Este post no tendrá como objetivo hacernos expertos en el tema, pero analizaremos un par de funciones para editar, agregar o eliminar valores del Registro. Expondré un ejemplo común y práctico: le doy a un cliente X mi proyecto, 100% funcional, para que lo evalúe. Luego de 10 días de la primer apertura del archivo si el cliente no compró el sistema las macros deben dejar de funcionar ¿Que mejor que utilizar el Registro de Windows para esto? Podríamos habilitar un blog aparte para hablar especifica y detalladamente sobre esta aplicación... cosa que, por lo menos de mi parte, no sucederá. =) [+/-] Ver el resto / Ocultar Hablaremos un poco sobre el, para saber en que arenas nos estamos metiendo... o hundiendo. El Registro de Window s es una simple e importantísima, fundamental ... base de datos. En ella el Sistema Operativo almacena todas las co

cerrar todos los libros de excel

Respondiendo a mi lector @dicto (quien realizara esta consulta ), veremos la forma mediante la cual nos será posible cerrar todos los libros de Excel que tengamos abiertos, exceptuando el de trabajo. El planteamiento es muy viable y en varias ocasiones debí lidiar con este tema, ya que por cuestiones propias del proyecto, por ejemplo, no deben existir otros libros abiertos al momento de ejecutarse una determinada macro. Estos ejemplos nos servirán para saber la forma de recorrer los libros de Excel para aplicar ciertas propiedades a cada uno de ellos, automatizando una tarea que de otra forma deberíamos hacer en forma manual. la típica ventana correspondiente a un libro abierto. [+/-] Ver el resto / Ocultar Conozco dos formas de recorrer los libros de Excel: 1) utilizando el objeto WorkBook de la colección WorkBooks del objeto Application y 2) contando la cantidad de libros abiertos y reconocerlos mediante su índice. En ambos casos el libro de trabajo (aquel en cual tenemos nuestra

detectar la última celda ocupada de un rango - parte II

En mi anterior entrada veíamos la forma de detectar la ultima celda con datos , en un rango o tabla. Dicha utilidad se logró mediante funciones matriciales, debido a que ciertas celdas podrían o no estar con valores. Repasemos un poco los conceptos fundamentales antes de ingresar a este nuevo ejemplo que les traigo. Tengo un rango con datos y necesito saber cual es la ultima fila con valores: con la función CONTAR() vemos que la fila 4 es la ultima en tener un valor. [+/-] Ver el resto / Ocultar Si en lugar de numeros fueran caracteres o cualquier otro dato (o una combinación de ellos) debemos utilizar CONTARA() . Esto es muy sencillo... y las cosas se empiezan a complicar si algunas celdas no contienen ningún valor: error: la función me devuelve 5 , pero la fila 7 es la ultima ocupada. Una posible forma de solucionarlo es mediante el link que les dejé al principio de la entrada, utilizando funciones matriciales. Pero he accedido a un excelente ejemplo de un capo total de Excel, el

configuracion regional de la pc desde excel

Parece que el tema de los decimales tiene mal a mas de uno, y realmente nos puede presentar inconvenientes al momento de imputar numeros en una celda desde VBA , dado que el separador decimal puede ser tanto una coma como un punto, dependiendo de la configuración regional del equipo. Veremos aquí dos formas de detectar esto: utilizando la colección de Windows Script Host (con la cual accedemos al Registro de Windows) y otra muy casera y manual... como para "zafar" de la situación sin recurrir a bibliotecas externas. cual es número y cual es texto? [+/-] Ver el resto / Ocultar Una solución muy "gaucha" y sin vueltas: Sub ColocarNumeroDecimal() [a1] = 1.5 End Sub Si, en A1 (o en cualquier celda de una hoja, preferentemente oculta) coloco desde VBA un nro decimal, en este caso: 1.5 (y en VBA me veo obligado a usar el punto, ya que es formato yanqui). Veremos reflejado en Excel: bien, tengo la configuración regional de Argentina: uso coma para el separador decim

como utilizar autofiltros con macros

Estimo que no hace falta ninguna introducción a los Autofiltros de Excel , dado que en mayor o menor medida todos los hemos utilizados y conocemos sus principales funciones y configuración. Pero. Y sí, si no hubiese " peros " este blog (estimo) no existiría. Un lector tiene problemas a la hora de automatizar los Autofiltros mediante macros. Y yo se por que el tiene esos problemas: por que los Autofiltros son conflictivos y, de entrada, no se llevan bien con VBA . A menos que le hagamos algunos retoques al código. las clásicas "flechitas para abajo" del Autofiltro. [+/-] Ver el resto / Ocultar Supongamos que filtramos todos los valores iguales a uno (1) de la primer columna, mientras tenemos activada la grabación de macros. Este sería el código resultante: Sub Macro1()     'selecciono el rango A1 (que es donde comienza la tabla)     Range("A1").Select     'aplico el autofiltro     Selection.AutoFilter     'Excel define el rango, el campo (fie