martes, 27 de marzo de 2012

Cambiar Colores con VB

Buenas Bloggeros

Hoy haremos algo facil espero les entretenga.
Lo que haremos es que con comandos de VB podamos cambiar el formato de un texto o cierto documento en excel.

Aca esta el formato que usaremos para poder grabar las 3 macros y asi poder generar lo que es el boton para poder cambiar los colores a voluntad.


Seleccionamo en el menu vista luego en macros luego grabar macro y seleccionamos los colores para cada estilo. Aca muestro como grabar la macro:


Ahora lo que sigue es grabar las macros como ya dimos click en grabar macro solo es de generar el formato con los colores deseados.


Recuerden que deben precionar el recuadro que lesseñale para detener la macro.


Asi les tendria que cambiar el boton al detener la macro.

Crean sus tres formatos de la misma manera y despues creamos el boton para el intercambio de los formatos asi:


Ya creado el boton devemos agregarle el codigo para que este cambie el tipo de formato.
Luego precionamos la tecla Alt+F11 para que despliegue el modulo en el que estan todos sus macros como lo varean en la imagen siguiente:


Luego lo que tenemos que hacer es condicionar cada uno de los codigos con If [E2] = 1 Then porque en E2 tenemos el espacio para poner el tipo de formato y haci lo hacemos con cada uno solo variando el numero de formato que tendremos asi:


Luego guardamos el documento como un documento de excel habilitado para macros y presionamos F5 para probar y nos damos cuenta que al precionar el boton cambio de formato funciona a la perfeccion.


Y asi terminamos este ejercicio espero les sirva para ahorrarse tiempo y cualquier duda o sugerencia sera bienvenida :D

miércoles, 29 de febrero de 2012

Macro Escrita

En esta ocasion vamos a ver otro tipo de programacion de excel...

En el cual usaremos las llamadas "macros" .

para crear una macro en excel tenemos 2 formas de hacerlo la primera es desde un acceso rapido en la parte baja de nuestra hoja. en cual le damos click y con mucho cuidado realizamos lo que queremos grabar y detener nuestra macro.
Y la otra forma que existe de grabar una macro es presionando las teclas "alt + f11" y escribirla con codigos.

Esto de la macro escrita puede ser un poco larga pero con esto tenemos la posibilidad de escribir solo que necesitamos que haga nuestra macro y evitarnos todos los codigos que nos agrega excel a la hora de hacerla del modo sencillo.

para este ejemplo usaremos un simple formato para que sepan algunos de los codigos que usan para que excel por medio de codigos visual basic haga lo que nosotros queremos.

este sera nuestro modelo:

Para escribir los codigos que se usan para crear esta macro y para que funcione vamos a presionar las teclas "alt + f11" 





Los codigo para hacer que nuestra macro funcione son:
para crear nuestro encabezado:
Sub macroprueba( )
Range("a1").Select
ActiveCell.FormulaR1C1 = "NO."
Selection.Font.Bold = True
 With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 49407
 End With 
Con este codigo creamos esta pequena celda con lo que tiene escrito y el color que ven.
para crear las demas usamos el mismo codigo solamente que el lugar de escribir "NO." escribimos lo que necesitamos que es 
  • nombre
  • sueldo
  • bonificacion
  • sueldo total
Y en lugar de escribir en range "a1" escribiremos "b1" y seguiremos asi hasta haber escrito los campos en listados arriba.
(al ejecutar) en nuestra hoja de excel algo asi:


para el siguiente paso necesitamos este codigo: 
 Range("A1:E1").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    Range("A1:E1").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With



codigo que a decir verdad es muy largo para la funcion que tiene..  (simplemente copien y peguenlo)
este codigo lo que hace es dar borde a todas las celdas en las que hemos escrito asi:
Lo siguiente que haremos sera escribir los codigos y los nombres de las personas de esta base de datos...
Y para hacerlo mas facil solo seran 5 nombres.
Y para eso el codigo es este:
Que es el que se utiliza para escribir el no.
Range("a2").Select
ActiveCell.FormulaR1C1 = "1"

Para escribir los de mas numero es es el mismo codigo, solamente que con un numero diferente.
With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
         Range("A2:A6").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With

y este otro codigo es para centrar todos los campos que escribimos. (numeros)


Para escribir los nombres es el mismo codigo que utilizamos para escribir los nombre, solamente que en lugar de numeros escribiremos los nombres.
y al igual que los numeros los vamos a centrar con el mismo codigo de centrado, solo que cambiamos el rango de celdas a centrar.
para escribir el sueldo y la bonificacion son los mismos codigos entonces creo que sera mas facil seguir desde aqui.

luego de tener todo esto usaremos de nuevo el codigo de borde que usamos arriba, pero seleccionando todas las celdas que tenemos que seria de A1 a A6

hasta aqui esperia lleven muy bien su proyecto. Porque en esta parte que sigue tendremos que lograr por medio de codigos que nuestra macro nos sume el sueldo mas la bonificacion. entonces usaremos el siguiente codigo.
  Range("E2").Select
    ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"
    Range("D2").Select

en este codigo como en los otros cambiaremos los rangos dependiendo de la celda que siga de sumar.
Y al final de que escriban todos los codigos tendras (al momento de correr tu macro) una hoja de calculo como esta. 

Asi deberia verse todo el codigo que escribiste.


Y solo te recuerdo lo siguiente :D
Recuerda guardar tu archivo como "libro de excel habilitado para macros"

lunes, 27 de febrero de 2012

Formulas de Buscarv, Suma y Si

Bueno Hoy Aprenderemos algo mas basico

Buscarv
Suma
Si

Y algunas otras que iremos agregando durante este ejemplo...

Vamos a suponer que tenemos un almacen con varios clientes que aun nos deben. Tenemos varios pedidos de esas personas y necesitamos extraer de nuestra base de datos la suma de la deuda de un solo cliente.
Entonces como lo acemos de una forma rapida; efectiva y confiable?

PROCEDIMIENTO:

Empezamos por abrir excel y en una nueva hoja escribimos nuestra base de datos:


Despues de que ya tenemos esto vemos el problema de no poder sumar todos porque tenemos diferentes clientes, entonces es aqui donde entran nuestras funciones de excel.
Trabajaremos con estos 3 simples campos porque asi es mas facil.
 

Antes de empezar con las formulas y la programacion nombraremos una matriz para que sea mas facil trabajar.

Para nombrar una matriz seleccionamos las casillas que vamos a nombrar y como lo indica la imagen, nombramos nuestra matriz.
 

segun nuestro esquema en la casilla "D13" (SIGUIENTE IMAGEN) escribiremos la siguiente formula:

 =SI(B13="","",BUSCARV(B13,DATOS,2,FALSO))
(cuando terminamos de escribir la formula presionamos enter)

Con esta formula vamos a lograr que cuando en la casilla de codigo ingresemos uno de los codigos de nuestra base de datos nos aparesca el nombre del cliente del que queremos saber a cuanto asciende su deuda. el sig. paso seria este:

Tendremos que nombrar 2 matrices mas que en este caso serian de las celdas "A2 a la A8" se llamara CODIGOS


Y  de "C2 a la C8" sera VALORES



luego de eso vamos a la formula.

=SUMAR.SI.CONJUNTO(VALORES,CODIGOS,B13)


Luego de terminar la Formula podemos decorar o ponerle un formato muy bonito a nuestro ejercicio asi como yo lo decore :D

Y aqui esta nuestro ejercicio terminado.:

Recuerdenque siempre resolvere sus dudas en @SelVin_Ro


Nos Vemos Hasta la Proxima (Y)

Funcion Indice y Botones de Control

Como Estan ?
En esta ocasión vamos a aprender como usar los botones de control de excel y la función índice..
y practicaremos un poco las funciones que ya aprendimos...
Para este ejercicio supondremos que tenemos un concesionario de vehículos y necesitamos de una forma mas directa y facil saber la información del vehiculo
Lo Que Nesecitamos : Debemos darle un lindo formato a nuestra hoja de calculo ya que no solamente debe ser funcional tambien debe ser llamativo.

 
Bueno ya que tenemos este formato empesaremos a trabajar.  Con estos campos lo que haremos es darle un mejor modo de busqueda al las caracteristicas del carro El nombre El precio y La existencia.

Ahora crearemos la base de datos de nuestro consesionario:



Ahora nombraremos todas las filas y columnas con una matriz a la cual le pondremos datos.
Luego a la columna de carros llamaremos a la matriz Carros.
Luego a la columna de Precio llamaremos a la matriz precios.
Y luego a la columna de Existencias llamaremos a la matriz Existencias.

Lo cual mostrare a continuacion con imagenes en orede de como lo escribi.

1.
2.
3.


4.
Siguiendo con esto regresamos a nuestra hoja 1. y empesamos a programar.
1. Vamos a la ficha programador y ahi seleccionamos la opcion insertar boton.
2. Seleccionamos la ficha insertar boton.
3. Luego el boton a insertar es el de cuadro convinado.
4. Luego de que le dimos incertar boton trazamos el boton en nuestra hoja de calculo.
5. Seguido le damos click derecho al boton y le damos en Formato de Control
6. Le colocamos la matriz carros ya que ahi sera deonde buscaremos los vehiculos. Y si bajan podran observar que se selecciona la matriz carros.
7. Le colocamos una selda aledaña para que en ella podamos ir contrlando que vehiculo es.
8. Por ultimo le colocamos la cantidad de lineas ke keremos observar en mi caso yo le puse 5.

Ahora les mostrare las imagenes:
1.

2.

3.


4.

5.
6.

7.

8.

Luego de esto vamos a escribir en la celda D9 la siguiente formula: =INDICE(CARROS,O1)

Luego de esto vamos a escribir en la celda D11 la siguiente formula: =INDICE(Precios,O1)

Y por ultimo escribimos la formula: =BUSCARV(D9,DATOS,3,FALSO)

Ahora lo veremos en imagenes
1.

2.
3.



Y asi es como deveria verse su ejercicio terminado:


Bueno eso fue todo para enseñarles la funcion indice y Botones de control.
No se les olvide Comentar o sugerir algo nuevo para el bolg.
Tabien pueden dejar sus dudas o comentarios en @SelVin_Ro