You are on page 1of 59

Ejemplos de macros

En esta pgina iremos insertando macros y cdigos que pueden servirle de ayuda. Macro para solicitar confirmacin de salir de Excel. macro que solicita al usuario que confirme salir de Excel Private Sub salir() If msgbox(Desea salir de Excel?,vbQuestion+ vbYesNo)=vbYes Then Application.quit End If End Sub Macro para guardar archivo seleccionando ubicacin Sub guardar_archivo() Dim stArchivo stArchivo = Application.GetOpenFilename(Hoja de Excel , *.xls*, _ , Seleccione archivo ) End Sub Macro para guardar archivos en otro formato Sub guardar_archivo_otro() con esta macro guardamos el archivo con la fecha y hora actual y formato csv Dim nombre, nombrearch, hoja, ruta nombre = Format(Now, dd-mm-yy hh.mm.ss) ruta = ActiveWorkbook.Path nombrearch = ActiveWorkbook.Name hoja = ActiveSheet.Name ActiveWorkbook.SaveAs Filename:=ruta & \ & hoja & nombre & .csv, FileFormat:=xlCSV ActiveSheet.SaveAs ruta & \ & nombrearch & nombre & .xlsm End Sub Copiar rango de una hoja a otra Si queremos que se quiera copiar los rangos de la hoja activa de una hoja a otra ejecutariamos la macro siguiente: Option Explicit Dim f, c Public Sub CopiarRango() ActiveCell.CurrentRegion.Select f = ActiveCell.Row c = ActiveCell.Column Selection.Copy Sheets(Hoja2).Activate Cells(f, c).Activate ActiveSheet.Paste End Sub Cerrar libro Excel (guardar cambios) ActiveWorkbook.Close ActiveWorkbook.Close Savechanges:=True

ActiveWorkbook.Close(True) Cerrar libro Excel (sin guardar cambios) ActiveWorkbook.Close(False) ActiveWorkbook.Close Savechanges:=False Cerrar libro Excel (variable, sin guardar cambios) Application.DisplayAlerts = False Windows(Libro_mayor).Close Application.DisplayAlerts = True Abrir libro Excel (ruta fija) Workbooks.Open FileName:=C:\Trabajo\Informe.xls Desplazarnos a la ltima hoja del libro Sub ultima_hoja() Sheets(Sheets.Count).Select End Sub Desplazarnos a la primera hoja del libro Sub primera_hoja() Sheets(1).Select End Sub Copiar el contenido seleccionado en otra hoja Sub CopiaColumnas() Dim mirango As Range Dim col As Range Dim NuevaHoja As Worksheet Dim i As Integer Set mirango = Selection Worksheets.Add i=0 For Each col In mirango.Columns col.Copy ActiveSheet.Range(A1).Offset(, i) i=i+1 Next col End Sub Macro para crear ndices de hojas en libros Private Sub Worksheet_Activate() Dim cHoja As Worksheet Dim L As Long L=1 With Me .Columns(1).ClearContents .Cells(1, 1) = INDICE .Cells(1, 1).Name = Indice End With For Each cHoja In Worksheets If cHoja.Name <> Me.Name Then L=L+1 With cHoja

.Range(A1).Name = Inicio & cHoja.Index .Hyperlinks.Add Anchor:=.Range(A1), Address:= , SubAddress:=Indice, TextToDisplay:=Volver al ndice End With Me.Hyperlinks.Add Anchor:=Me.Cells(L, 1), Address:= , SubAddress:=Inicio & cHoja.Index, TextToDisplay:=cHoja.Name End If Next cHoja End Sub Macro para imprimir hoja activa con datos Sub macro imprimir_ha() Range(A1) = Lo que sea Imprimimos la hoja de excel con una sola copia ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub Buscar la ltima fila vaca Sub ultimafila() variable donde almacenamos el nmero de fila Dim ultima As Long vamos subiendo por la columna A desde la ltima fila ultima = Range(A65536).End(xlUp).Row le sumamos una porque queremos la 1 fila vaca ultima = ultima + 1 seleccionamos si queremos otra columna cambiar el nmero Cells(ultima, 1).Select End Sub Encontrar ltima fila (en columna especificada) Dim intUltimaFila As Range If WorksheetFunction.CountA(Columns(1)) > 0 Then Set intUltimaFila = Range(65536).End(xlUp) MsgBox intUltimaFila.Address End If Suprimir filas vacas intLastRow = Columns(A:A).Range(A65536).End(xlUp).Row For r = intLastRow To 1 Step -1 If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete Next r Suprimir filas vacas Dim intNumDeFilas As Long Selection.SpecialCells(xlCellTypeLastCell).Select intNumDeFilas = Selection.Row For i = 1 To intNumDeFilas If Application.WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).Delete

End If Next Suprimir filas vacas intUltimaFila = ActiveSheet.UsedRange.Row 1 + ActiveSheet.UsedRange.Rows.Count For r = intUltimaFila To 1 Step -1 If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete Next r Suprimir filas por condicin Dim rngString As Range Do Set rngString = Cells.Find(Aglis, MatchCase:=False, _ LookAt:=xlPart, LookIn:=xlValues) If Not rngString Is Nothing Then rngString.EntireRow.Delete End If Loop Until rngString Is Nothing Suprimir filas vacas por dos condicines X, Y For i = intUltimaFila To 1 Step -1 Let strTest= Application.Cells(i, 2) If strTest <> X And strTest <> Y Then Rows(i).Delete Next i Mtodos abreviados de teclado en Excel

Lmites de Excel

Nmero total de columnas disponibles en Excel.



Lmite Excel 2003: 256 (2^8) Lmite Excel 2007: 16.384 (2^14)

Nmero total de filas disponibles en Excel.


Lmite Excel 2003: 65.536 (2^16) Lmite Excel 2007: el 1.048.576 (2^20)

Las celdas por hoja es la multiplicacin de las filas por las columnas. Un libro puede tener un nmero variable de hojas, segn nuestras necesidades. El lmite estaba en 256 y est ahora en 1024.

Nmero total de hojas disponibles en Excel.

Lmite Excel 2003: 256 (2^8)

Lmite Excel 2007: 1.024 (2^10)

Cantidad total de memoria del PC que Excel puede utilizar.


Lmite Excel 2003: 1GB. Lmite Excel 2007: 2 GB.

Nmero de colores nicos permitido en un solo libro de trabajo.


Lmite Excel 2003: 56 (color puesto en un ndice) Lmite Excel 2007: 4.294.967.296 (casi 4300 millones, color 32-bit)

Nmero de condiciones condicionales del formato en una celda.


Lmite Excel 2003: 3 condiciones Lmite Excel 2007: Limitado por memoria disponible

Nmero de niveles para ordenar en una lista o una tabla.


Lmite Excel 2003: 3 Lmite Excel 2007: 64

Nmero de datos mostrados en el Autofiltro.


Lmite Excel 2003: 1.000 Lmite Excel 2007: 10.000

Nmero total de caracteres que puede exhibir una celda.


Lmite Excel 2003: 1.024 (cuando se ajusta a formato el texto) Lmite Excel 2007: 32.768 o tanto como quepa en la celda (sin importar el formato)

Nmero de caracteres por celda que el Excel puede imprimir.


Lmite Excel 2003: 1.024 Lmite Excel 2007: 32.768

Nmero total de los estilos nicos de la celda en un libro de trabajo (combinaciones de todo el formato de la celda).

Lmite Excel 2003: 4000 Lmite Excel 2007: 65.536

Longitud mxima de frmulas (en caracteres).


Lmite Excel 2003: carcteres 1.024 Lmite Excel 2007: carcteres 8.192

Nmero de niveles de anidacin que Excel permite en frmulas.


Lmite Excel 2003: 7 Lmite Excel 2007: 64

Nmero mximo de discusiones a una funcin.


Lmite Excel 2003: 30 Lmite Excel 2007: 255

Nmero mximo de artculos que encuentra el comando buscar todos.



Lmite Excel 2003: ~64k (65472) Lmite Excel 2007: ~2 mil millones

Nmero de filas permitidos en una tabla dinmica.


Lmite Excel 2003: 65.536 Lmite Excel 2007: 1.048.576

Nmero de columnas permitidoen una tabla dinmica.



Lmite Excel 2003: 255 Lmite Excel 2007: 16.384

Nmero mximo de artculos nicos dentro de un solo campo de una tabla dinmica.

Lmite Excel 2003: 32.768 Lmite Excel 2007: 1.048.576

Longitud del nombre de MDX para un artculo de una tabla dinmica; tambin la longitud de la secuencia para una tabla dinmica emparentada.

Lmite Excel 2003: 255 caracteres Lmite Excel 2007: 32.768

Longitud a la cual se truncan los campos que etiquetan una tabla dinmica; esto tambin incluye limitaciones de la longitud del subttulo.

Lmite Excel 2003: 255 Lmite Excel 2007: 32.768

El nmero de campos (segn lo visto en la lista del campo) que una sola tabla dinmica puede tener.

Lmite Excel 2003: 255 Lmite Excel 2007: 16.384

Nmero de celdas que pueden depender de un solo rango antes que Excel necesite hacer clculos completos en vez de clculos parciales (porque no puede seguir las dependencias requeridas para hacer clculos parciales).

Lmite Excel 2003: 8.192 Lmite Excel 2007: Limitado por memoria disponible

El nmero de rangos diversos en una hoja que pueden tener dependencias antes de que Excel necesite hacer clculos completos en vez de clculos parciales (porque no puede seguir las dependencias requeridas para hacer clculos parciales).

Lmite Excel 2003: 65.536 Lmite Excel 2007: Limitado por memoria disponible

Nmero de frmulas en conjunto en una hoja de trabajo que pueden referir a otra hoja de trabajo.

Lmite Excel 2003: 65.536 Lmite Excel 2007: Limitado por memoria disponible

Nmero de categoras que las funciones personalizadas pueden encapsular.



Lmite Excel 2003: 32 Lmite Excel 2007: 255

Nmero de caracteres que se pueden actualizar en una referencia externa que no pertenece al libro de trabajo.

Lmite Excel 2003: 255

Lmite Excel 2007: 32.768

Nmero de filas de una o varias columnas que se pueden referir en una frmula matricial (array formula).

Lmite Excel 2003: 65.335 Lmite Excel 2007: No hay lmites.

Nmero de caracteres que se pueden almacenar y exhibir en una celda ajustada a formato de texto.

Lmite Excel 2003: 255 Lmite Excel 2007: 32.768

Macro que elimina las barras de desplazamiento Sub elimina_barra() With ActiveWindow .DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False End With End Sub Macro que protege el libro y la hoja Sub proteger() ActiveWorkbook.Protect Password:=1234 Sheets(Hoja1).Protect Password:=1234 End Sub Calculo del NIF Esta funcin calcula el NIF (Nmero de Identificacin Fiscal). Function nif(dni As Long) As String nif = Mid(TRWAGMYFPDXBNJZSQVHLCKE, (dni Mod 23) + 1, 1) End Function

Arrays dinmicos
31 JULIO, 2011 DEJAR UN COMENTARIO

Ya he hablado anteriormente de los arrays. La mayora de los lenguajes de programacin utilizan los arrays que, recordemos es un conjunto de elementos que tienen en comn un nombre aunque entre ellos son diferentes. Por ejemplo el array dgitos estara compuesto por las cifras 0,1,2,3,4,5,6,7,8 y 9. Cada uno de ellos irn referidos con un ndice. As supongamos el array compuesto por los meses del ao:

Al tratarse de un nmero de elementos fijo estaramos hablando de un array esttico que, en este caso consta de 12 elementos. Antes de empezar a programar con ellos necesitamos declararlos Dim meses(11) as byte Podr observar que entre parntesis he colocado 11 y no 12, ya que, por defecto los subndices de los arrays de VBA empiezan en 0 (que es el lmite inferior de la matriz). Si deseamos que comience en 1 en vez de en 0, incluiremos antes del primer array y antes del primer procedimiento las expresin: Option Base 1

Ahora bien que haramos si no conociramos de antemano la dimensin de nuestra array? Para ello podemos declarar un array dinmico dejando el parntesis en blanco en la sentencia Dim: Dim miArray( ) as Double Una vez que conozcamos el nmero de elementos que necesitamos usaremos la sentencia Redim para sealar el nmero de subndices necesarios. Por ejemplo: Redim mi Array(102) Veamos un ejemplo sencillo para entender los conceptos mencionados: Vamos a declarar una matriz unidimensional de 3 elementos compuesto por los tres primeros dias de la semana, y haremos que no los presente por pantalla: Option Explicit Sub asignandoarray() Dim miArray(3) As String miArray(0) = lunes miArray(1) = martes miArray(2) = mircoles MsgBox miArray(0) & & miArray(1) & & miArray(2) End Sub Ahora redimensionaremos el array para introducir el jueves y el viernes: Sub redimarray() Voy a redimensionar la array anterior para incluir el jueves y el viernes ReDim miArray(5) miArray(0) = lunes miArray(1) = martes miArray(2) = mircoles miArray(3) = jueves miArray(4) = viernes MsgBox miArray(0) & & miArray(1) & & miArray(2) & & miArray(3) & & miArray(4) End Sub Si deseamos no tener que volver a escribir el mismo procedimiento podemos incluir datos con la expresin Redim preserve(el nmero siguiente en el ndice)

Sub asignandoarray2() ReDim miArray(3) miArray(0) = lunes miArray(1) = martes miArray(2) = mircoles ReDim Preserve miArray(3) miArray(3) = jueves MsgBox miArray(0) & & miArray(1) & & miArray(2) & & miArray(3) End Sub
ARCHIVADO EN ARRAYS

Arrays
26 JULIO, 2011 DEJAR UN COMENTARIO

Supongamos que precisamos referenciar los datos de una cartera de clientes. Tal vez precisemos almacenar informacin para cada uno de los clientes acerca de su nombre, apellidos, direccin, edad,etc. Esto implicara la declaracin de una variable por cada concepto y por cada cliente. Adems de la perdida de tiempo, es por tal motivo que recurrimos a las Matrices o Arrays. Un array es un conjunto de datos del mismo tipo ordenados en forman lneal uno despus de otro. Los componentes de un array se han de referenciar por medio del nombre del array y un ndice de desplazamiento para indicar el componente deseado. Como ejemplo prctico vamos a realizar este sencillo ejercicio que va a consistir en obtener los productos cruzados de los primeros 10 nmeros naturales. Para ello vamos a realizar una macro que nos escriba los 10 primeros nmeros en la fila 1 y en la columna A para despus efectar el producto. 1. 2. 3. 4. Abra un libro nuevo. Presione Alt+F11 para ejecutar el Editor de Visual Basic. En el men Insertar, haga clic en Mdulo. Escriba el siguiente cdigo en la hoja de mdulo: Dim i, j As Byte Dim myarray As Variant myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) Range(a1:a10).Value = Application.WorksheetFunction.Transpose(myarray) Range(a1:j1).Value = myarray Range(a1:a10).Font.ColorIndex = 5 Range(a1:j1).Font.ColorIndex = 5 For i = 1 To 10 For j = 1 To 10 Cells(i, j) = Cells(1, j) * Cells(i, 1) Next j Next i End Sub Como se habr podido observar despus de declarar dos variables byte, la i y la j, hemos declarado nuestra matriz con el nombre de myarray y tipo Variant. En principio todos los elmentos de un array deben ser del mismo tipo, el hecho de declararlos de tipo Variante nos facilita mezclar elementos de diferente tipo e incluso incluir otras arrays. Seguidamente hemos definido los elementos de nuestra matriz con la siguiente declaracin:

Sub tabla_multiplicar()

myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) Con la siguiente lnea invocamos una funcin de Excel la transposicin de matrices. O sea intercambiar filas por columnas: Range(a1:a10).Value = Application.WorksheetFunction.Transpose(myarray) Con ello conseguimos escribir en forma de columna nuestra matriz fila. A continuacin insertamos los valores de la misma matriz en la fila 1 Range(a1:j1).Value = myarray Formateamos un poco dndole color azul a la fuentes de la 1 fila y columna y despus insertamos un bucle para efectar los productos cruzados. No se preocupe por ese fragmento de cdigo lo entender cuando tratemos las estructuroas de decisin.

Bienvenidos!!
2 JULIO, 2011 1 COMENTARIO

A lo largo de estas pginas intentar aportar algunos temas que puede ayudar a todo aquel que est interesado en aprender VBA Excel en sus diversos, niveles. Espero a su vez todas aquellas aportaciones que puedan aportar y enriquecer los temas tratados. Para empezar tratar de desarrollar punto por punto los pasos lgicos para realizar un programa. De forma muy resumida diremos que todo pasa por tener muy claro lo que se quiere hacer y por aplicar estrategias de resolucin y desarrollo adecuadas. INTRODUCCIN Aunque pueda parecer extrao, buena parte de los quebraderos de cabeza a los que nos enfrentamos programando derivan de no saber bien lo que queremos hacer. Esto responde al siguiente esquema:

Este sistema es posible pero muy poco recomendable ya que equivale a:

Lo cual implica, simplemente, comenzar una tarea sin la preparacin necesaria. En el ejemplo del edificio slo en situaciones de extrema sencillez (por ejemplo levantar un cuarto) el resultado ser satisfactorio. En el resto de los casos la falta de mtodo llevar a defectos o colapsos debido a la ausencia de proyecto, planos, clculos, etc. No podemos pretender desarrollar un programa simplemente en base a ideas, intuiciones, nociones. Necesitaremos mtodo y esquemas claros que raramente estarn en nuestra cabeza. Necesitarn de un trabajo de desarrollo. El buen programador, al igual que el buen proyectista en arquitectura, ha de tener claros cules son los pasos a ir dando para desarrollar una construccin slida. La precipitacin, la falta de reflexin o las prisas por terminar son malas consejeras. Cada programador tiene sus propios esquemas de trabajo, pero en lneas generales podemos distinguir las siguientes fases en el desarrollo de un programa:

CONOCER EL PROBLEMA A RESOLVER Como primer paso a la hora de desarrollar un programa tenemos que conocer el problema a resolver. Necesitaremos un conocimiento profundo de todos los aspectos relacionados con el problema, lo cual implica saber responder las siguientes preguntas: 1. 2. 3. 4. 5. Cul es mi objetivo? Cules son los condicionantes que afectan al problema? Qu mtodo o esquema de resolucin voy a aplicar? Cules son los datos de partida? Qu resultado quiero obtener?

SOBRE EL OBJETIVO
A la hora de plantear un objetivo trataremos de subdividir la extensin y complejidad del problema hasta niveles lo ms fcilmente abarcables por una persona, segn la conocida estrategia del divide y vencers. Aunque ser la experiencia la que mejor nos gue a la hora de plantear objetivos podemos usar esta regla: Slo trataremos de programar aquello que mentalmente somos capaces de abarcar en mtodo, extensin y condicionantes. Ejemplo: Supongamos que trabajamos en el sector de logstica y almacenamiento de combustibles y venimos haciendo diversos clculos manuales relativos a determinacin de volmenes de depsitos. Por cambios productivos se empiezan a instalar depsitos de formas geomtricas muy diversas y decidimos programar para obtener volmenes. Posibles planteamientos de objetivos: a) Desarrollar un programa para el clculo de volmenes para cualquier forma de depsito contenedor

de un lquido. Comentarios: incumplimos la premisa de plantear algo que mentalmente seamos capaces de abarcar. Lo planteado posiblemente se puede programar, pero al nivel en que nos encontramos (somos programadores individuales y no expertos) el objetivo resultara inalcanzable. Entre otras cosas por la gran cantidad de formas regulares (esferas, elipsoides, pirmides, conos, cuas, paraboloides, hiperparaboloides, etc.) que en el caso de las irregulares o combinaciones entre irregulares se tornan en infinitas posibilidades. Los datos de partida y los mtodos resultaran de extensin y complejidad inabarcable. Condicionantes Llamamos condicionantes a todos los factores que afectan a la resolucin del problema. Despus de tener un objetivo centrado y enfocado tendremos que valorar qu condicionantes nos afectan y si tenemos un conocimiento suficiente de ellos. Mtodos Una vez determinado el objetivo y conocidos los condicionantes, valorar el mtodo o esquema de resolucin para el problema planteado ser el siguiente paso en el proceso de conocer el problema. Ser una etapa ms a cumplir antes de empezar a trabajar en su programacin. Cualquier mtodo debe incluir unos datos de partida y va enfocado a obtener un resultado cierto y esperado.

Condiciones dentro del bucle Fornext


17 AGOSTO, 2011 DEJAR UN COMENTARIO

Podemos anidar condiciones una dentro de otras. En un bucle ifthen podemos insertar otro y, as tambin podemos hacerlo con Fornext. En l siguiente ejemplo vamos a sacar en las primeras 25 filas de forma aleatoria nmeros en tre el 100 y el 999, despus vamos a insertar un bucle anidado que nos va a colorear en rojo y negrita la fuente, para aquellos valores que superen el valor 500. Observe el cdigo y vea cmo se generan los nmeros aleatorios: Sub ejemplo() declaro variables Dim numaleatorio As Integer Dim i As Byte desde la fila 1 a la 25 inserto nmeros aleatorios del 100 al 999 For i = 1 To 25 numaleatorio = Int((999 100 + 1) * Rnd + 100) Cells(i, 1) = numaleatorio Next voy a cambiar a rojo y negrita los valores que pasen de 500 For i = 1 To 25 If Cells(i, 1) > 500 Then Cells(i, 1).Font.ColorIndex = 3 Cells(i, 1).Font.Bold = True End If Next i End Sub He separado el cdigo para hacerlo ms comprensible, evidentemente se puede hacer de otra forma. Dentro del bucle ForNext se sita la estructura condicional. Si la condicin se cumpl e en una celda, esta cambia de color. El valor colorindex va del 1 al 56 y representa la paleta de colores en VBA. Aprovechando el tema intente hacer la prctica 6 puede serle de utilidad.
ARCHIVADO EN BUCLES DE REPETICIN

Bucles de repeticin:DoLoop
15 AGOSTO, 2011 DEJAR UN COMENTARIO

Este bucle comprueba que se ejecute una serie de instrucciones hasta que se cumpla una condicin determinada. Por ejemplo en el siguiente cdigo forzamos que se escriban los nmeros desde el 1 al 11, para ello usamos una variable contador que la inicializamos en 0 y a partir de aqu le sumamos 1 hasta que llege al 11. Sub ejemplo_Do_Loop() Dim i As Byte i=0 Do Until i = 11 i=i+1 Cells(i, 1) = i Loop End Sub Una variante de este bucle sera Dowhileloop

Sub ejemplo_Do_while_loop() Dim i As Byte i=0 Do While i < 20 i=i+1 Cells(i, 1) = i Loop End Sub
ARCHIVADO EN BUCLES DE REPETICIN

Bucles de repeticin: Fornext


12 AGOSTO, 2011 DEJAR UN COMENTARIO

Los bucles de repeticin nos permite efectuar varias veces una serie de instrucciones incluidas en un procedimiento. El primero que vamos a analizar es el bucle Fornext. Su sintxis sera la siguiente: For variable = inicio To fin salto Next variable Ejemplo vamos a realizar un ejercicio que nos presente por pantalla los cuadrados de los nmeros 1 al 5. Sub cuadrado() Ejemplo de bucle for..next definimos la variable contador On Error Resume NextDim x, y As Byte Iniciamos el bucle desde 1 hasta 5 For x = 1 To 5 y=x*x MsgBox El cuadrado de & x & es & y Next End Sub Si no se dice nada, la variable comienza en el nmero que le hallamos maracado como inicio e ira recorriendo el bucle de 1 en 1. Si deseamos que lo haga por ejemplo de dos en dos, tenemos que especificarlo con la expresinstep. En el ejemplo citado supongamos que deseamos hacer el mismo clculo pero con los nmeros pares del 1 al 12: Sub cuadrado_par() Dim x, y As Byte For x = 2 To 12 Step 2 y=x*x MsgBox El cuadrado de & x & es & yNext End Sub Por cierto se habr percatado de la presencia de una lnea de cdigo al comienzo del bucle On Error Resume Next. Con esta sentencia evitamos que el programa se cuelge an te la presencia de errores ms o menos viene a decir: en presencia de error salta al siguiente paso.

En su momento trabajaremos el tema referente al tratamiento de errores.

Herramientas bsicas II
25 JULIO, 2012 DEJAR UN COMENTARIO

Proteger celda, hojas y libros.


Un aspecto importante en Excel es su carcter manipulativo. Los usuarios pueden modificar datos para su anlisis posterior, aunque en ocasiones se plantea la necesidad de que ciertos datos no puedan manipularse. Para ello se establece la posibilidad de bloquear, el libro, determinadas hojas o determinadas celdas. Realmente por defecto todas las celdas estn protegidas o bloqueadas para que no sufran cambios, pero no nos damos cuenta ya que la hoja no est protegida, para que realmente se bloqueen las celdas antes hay que proteger la hoja de clculo. Para desbloquear las celdas: Seleccionar el rango de celdas que queremos desbloquear para poder realizar variaciones. 1. 2. 3. 4. Seleccionar la pestaa Inicio. Hacer clic sobre la flecha que se encuentra bajo la seccin Fuente. Hacer clic sobre la pestaa Proteger. Aparecer la ficha:

5. Desmarcar Bloqueada. Desactivar la casilla Bloqueada y Hacer clic sobre el botn Aceptar. Si se activa la casilla Oculta, lo que se pretende es que la frmula o el valor de la celda no se pueda visualizar en la barra de frmulas. Seleccionar la pestaa Revisar. Hacer clic sobre el botn Proteger hoja que se encuentra en la seccin Cambios. Aparecer el cuadro de dilogo Proteger. Dejar activada la casilla Proteger hoja y contenido de celdas bloqueadas para proteger el contenido de las celdas de la hoja activa. Activar las opciones deseadas de la casilla Permitir a los usuarios de esta hoja de clculo para que no tenga efecto la proteccin para la modificacin seleccionada y desactivarla para tener en cuenta la proteccin. Si queremos asignar una contrasea para que solamente pueda desproteger la hoja la persona que sepa la contrasea, escribirla en el recuadro Contrasea. Hacer clic sobre el botn Aceptar.

Recordemos como se proceda en 2003:


1. Para proteger toda una hoja de un libro (archivo) de excel, slo tenemos que ir directamente al men Herramientas/Proteger/Proteger hoja. Se abrir la siguiente ventana:

Las opciones que vienen seleccionadas por defecto son Seleccionar celdas bloqueadas, lo que nos permite situarnos en las celdas que protejamos pero no nos permitir realizar ninguna modificacin en ellas, y seleccionar celdas desbloqueadas, que nos permitir situarnos y modificar aquellas celdas que no protejamos. La lista de acciones que podemos realizar a pesar de que protejamos las celdas son,

como se puede ver en la ventana de la imagen, muchas ms (cambiar formato de celdas, de filas, de columnas, etctera).. 2. Si deseamos introducir una contrasea para desactivar posteriormente la proteccin debemos escribirla en el recuadro Contrasea para desproteger la hoja. 3. Pulsamos Aceptar tras seleccionar las opciones deseadas y ya est. Si a continuacin intentamos escribir o borrar cualquier contenido de cualquier celda, excel no nos dejar y nos presentar un mensaje como el que sigue: Para proteger celdas concretas de una hoja debemos seguir los siguientes pasos: A) Seleccionamos las celdas que NO deseamos proteger, es decir, las entradas de datos. B) Vamos al men Formato/Celdas y seleccionamos la ltima pestaa de la ventana: C) Desactivamos la opcin Bloqueada y pulsamos Aceptar. Al volver a la hoja todava no ha ocurrido nada. Si prueba a escribir en las celdas que, por ejemplo, contienen frmulas ver que puede hacerlo sin problema. D) Vamos al men Herramientas/Proteger/Proteger hoja y pulsamos directamenteAceptar. A partir de este momento slo podr modificar las celdas de entradas de datos, mientras que sus frmulas y resto de celdas vacas no podrn ser modificadas.

Hipervnculos y comentarios
Los hipervnculos no cambian demasiado respecto a la versin 2003. Supongamos que deseamos establecer un hipervnculo a la pgina de Movistar desde el rea del grfico. Slo debemos seleccionar el mismo (clic en el borde del mismo) seguidamente Men>insertar>Hipervnculo o directamente con Ctrl+Alt+k. Nos saldr la misma pantalla que en la versin 2003. Slo insertar la direccin URL y listo. Con el fin de proporcionar informacin al usuario se puede agregar en las celdas que deseemos un comentario que aparecer como texto emergente al pasar el puntero por la celda en cuestin. Por ejemplo en la celda F2 insertamos el comentario el IVA puede variar > Revisar / Comentarios / Nuevo comentario. Para modificar o eliminar un comentario abrimos el men contextual desde la celda en cuestin.

Insertar funcin
Excel dispone de un gran nmero de funciones, la versin 2003 contaba con 329 y la versin 2010 unas 340 ms o menos. En la primera versin de Microsoft Excel 2.010 se modificaron los nombres de algunas funciones. Luego, mediante el SP1 (Service Pack 1) se volvieron a los nombres originales. Estos cambios no afectan la compatibilidad entre las distintas versiones de Excel (la conversin de los nombres se hace automticamente). A continuacin mostramos una tabla donde se ven las funciones que cambiaron de nombre:

Para insertar una funcin se procede igual que en la versin 2003, podemos hacerlo desde la misma barra para insertar frmulas pinchando en fx con lo que se nos abre el asistente. La segunda forma es a travs de la pestaa Frmulas. Si vamos a trabajar con operaciones comunes como autosuma, promedio, etc tambin contamos con la herramienta directa en la cinta de opciones dentro del grupo Modificar.

Utilizacin del condicional


Si deseamos establecer una accin sobre una celda si cumple una condicin podemos utilizar las funciones lgicas. Por ejemplo observe la siguiente tabla:

Herramientas bsicas II
25 JULIO, 2012 DEJAR UN COMENTARIO

Proteger celda, hojas y libros.


Un aspecto importante en Excel es su carcter manipulativo. Los usuarios pueden modificar datos para su anlisis posterior, aunque en ocasiones se plantea la necesidad de que ciertos datos no puedan manipularse. Para ello se establece la posibilidad de bloquear, el libro, determinadas hojas o determinadas celdas. Realmente por defecto todas las celdas estn protegidas o bloqueadas para que no sufran cambios, pero no nos damos cuenta ya que la hoja no est protegida, para que realmente se bloqueen las celdas antes hay que proteger la hoja de clculo. Para desbloquear las celdas: Seleccionar el rango de celdas que queremos desbloquear para poder realizar variaciones. 1. 2. 3. 4. Seleccionar la pestaa Inicio. Hacer clic sobre la flecha que se encuentra bajo la seccin Fuente. Hacer clic sobre la pestaa Proteger. Aparecer la ficha:

5. Desmarcar Bloqueada. Desactivar la casilla Bloqueada y Hacer clic sobre el botn Aceptar. Si se activa la casilla Oculta, lo que se pretende es que la frmula o el valor de la celda no se pueda visualizar en la barra de frmulas. Seleccionar la pestaa Revisar. Hacer clic sobre el botn Proteger hoja que se encuentra en la seccin Cambios. Aparecer el cuadro de dilogo Proteger. Dejar activada la casilla Proteger hoja y contenido de celdas bloqueadas para proteger el contenido de las celdas de la hoja activa. Activar las opciones deseadas de la casilla Permitir a los usuarios de esta hoja de clculo para que no tenga efecto la proteccin para la modificacin seleccionada y desactivarla para tener en cuenta la proteccin. Si queremos asignar una contrasea para que solamente pueda desproteger la hoja la persona que sepa la contrasea, escribirla en el recuadro Contrasea. Hacer clic sobre el botn Aceptar.

Recordemos como se proceda en 2003:


1. Para proteger toda una hoja de un libro (archivo) de excel, slo tenemos que ir directamente al men Herramientas/Proteger/Proteger hoja. Se abrir la siguiente ventana:

Las opciones que vienen seleccionadas por defecto son Seleccionar celdas bloqueadas, lo que nos permite situarnos en las celdas que protejamos pero no nos permitir realizar ninguna modificacin en ellas, y seleccionar celdas desbloqueadas, que nos permitir situarnos y modificar aquellas celdas que no protejamos. La lista de acciones que podemos realizar a pesar de que protejamos las celdas son,

como se puede ver en la ventana de la imagen, muchas ms (cambiar formato de celdas, de filas, de columnas, etctera).. 2. Si deseamos introducir una contrasea para desactivar posteriormente la proteccin debemos escribirla en el recuadro Contrasea para desproteger la hoja. 3. Pulsamos Aceptar tras seleccionar las opciones deseadas y ya est. Si a continuacin intentamos escribir o borrar cualquier contenido de cualquier celda, excel no nos dejar y nos presentar un mensaje como el que sigue: Para proteger celdas concretas de una hoja debemos seguir los siguientes pasos: A) Seleccionamos las celdas que NO deseamos proteger, es decir, las entradas de datos. B) Vamos al men Formato/Celdas y seleccionamos la ltima pestaa de la ventana: C) Desactivamos la opcin Bloqueada y pulsamos Aceptar. Al volver a la hoja todava no ha ocurrido nada. Si prueba a escribir en las celdas que, por ejemplo, contienen frmulas ver que puede hacerlo sin problema. D) Vamos al men Herramientas/Proteger/Proteger hoja y pulsamos directamenteAceptar. A partir de este momento slo podr modificar las celdas de entradas de datos, mientras que sus frmulas y resto de celdas vacas no podrn ser modificadas.

Hipervnculos y comentarios
Los hipervnculos no cambian demasiado respecto a la versin 2003. Supongamos que deseamos establecer un hipervnculo a la pgina de Movistar desde el rea del grfico. Slo debemos seleccionar el mismo (clic en el borde del mismo) seguidamente Men>insertar>Hipervnculo o directamente con Ctrl+Alt+k. Nos saldr la misma pantalla que en la versin 2003. Slo insertar la direccin URL y listo. Con el fin de proporcionar informacin al usuario se puede agregar en las celdas que deseemos un comentario que aparecer como texto emergente al pasar el puntero por la celda en cuestin. Por ejemplo en la celda F2 insertamos el comentario el IVA puede variar > Revisar / Comentarios / Nuevo comentario. Para modificar o eliminar un comentario abrimos el men contextual desde la celda en cuestin.

Insertar funcin
Excel dispone de un gran nmero de funciones, la versin 2003 contaba con 329 y la versin 2010 unas 340 ms o menos. En la primera versin de Microsoft Excel 2.010 se modificaron los nombres de algunas funciones. Luego, mediante el SP1 (Service Pack 1) se volvieron a los nombres originales. Estos cambios no afectan la compatibilidad entre las distintas versiones de Excel (la conversin de los nombres se hace automticamente). A continuacin mostramos una tabla donde se ven las funciones que cambiaron de nombre:

Para insertar una funcin se procede igual que en la versin 2003, podemos hacerlo desde la misma barra para insertar frmulas pinchando en fx con lo que se nos abre el asistente. La segunda forma es a travs de la pestaa Frmulas. Si vamos a trabajar con operaciones comunes como autosuma, promedio, etc tambin contamos con la herramienta directa en la cinta de opciones dentro del grupo Modificar.

Utilizacin del condicional


Si deseamos establecer una accin sobre una celda si cumple una condicin podemos utilizar las funciones lgicas. Por ejemplo observe la siguiente tabla:

En la celda c29 hemos procedido a insertar la funcin promedio. Y desde la cinta de opciones se ha seleccionado nmero desplegando la flechita hacia abajo para colocar slo dos decimales. En G9 se ha procedido a insertar la siguiente funcin lgica =SI(F5<0;RECESION;") . Para colocar el formato condicional hemos seleccionado el tem en el icono estilos. Esos estilos adems se pueden editar simplemente desplegando la pestaa:

Buscar objetivo
Sin duda una de las mejores utilidades que tiene Excel, la funcin Buscar objetivo, nos facilita averiguar el valor de la variable que determina un resultado en una ecuacin sencilla. En el siguiente ejemplo analizaremos su aplicacin en Excel 2010. Supongamos que deseamos conocer el importe peridico a satisfacer para amortizar un prstamo de 4500 al 1,5 mensual. Para ello podemos disear una tabla como la siguiente:

En la celda B9 hemos insertado una cantidad aleatoria, en este caso 200, como cuota inicial. Despus hemos calculado los intereses en base al saldo pendiente de amortizar, o sea en C9 hemos insertado =E8*$b$5/100 ; y la amortizacin es la parte de la cuota que resta una vez descontados los intereses es decir en D9>=$B$9-C9. Con esto ya tendramos la segunda lnea del cuadro de amortizacin. Rellenamos hacia abajo hasta alcanzar las 12 mensualidades. Evidentemente y como podr comprobar, con esa cuota en el perodo 12 nos quedara todava un saldo pendiente de 2772,04 . Bien aqu es cuando entra en juego nuestra funcin Buscar Objetivo. Nos posicionamos en la celda E20 y seleccionamos Datos>Anlisis Y si> Buscar Objetivo. En la ventana emergente insertaremos los datos tal y como aparecen en la imagen:

Es decir definimos la celda en donde se refleja el ltimo saldo pendiente con el valor cero, ya que al final de los 12 perodos deseamos tener amortizado el prstamo, para cambiar la cuota a abonar es decir. Dicho de otra forma a cunto debe ascender el importe peridico para devolver el prstamo en 12 cuotas.

Evidentemente que podemos utilizar otra funcin financiera ms prctica como puede ser Pago, (por ejemplo en E3 podemos insertar =PAGO(B5/100;B4;B3)) lo que nos dara el mismo resultado.

Buscar objetivo con VBA


En alguna ocasin se nos puede presentar la necesidad de programar la funcin buscar objetivo con VBA. Para ello debemos utilizar la notacin GoalSeek. Al objeto de conocer mejor su uso lo voy a explicar con el siguienteejemplo, sobre el que adems profundizar un poquito ms en el uso del formato condicional.

Imaginemos un envasador de caf que presenta los siguientes datos en su cuenta analtica:

Precio coste del kg de caf >13.95 Costes directos por kg> 0.75 Costes indirectos por kg >0.25 Margen inicial->15 % IVA inicial>7 %

Con esos datos de partida planteamos un escenario inicial, y otros tres alternativos. En el escenario inicial haciendo clic en el botn correspondiente nos debe presentar cules seran los resultados de aplicar una subida de 1 punto en el IVA (del 7 al 8%). Los datos de las celdas D22, D23, D24 y D26, son iniciales y fijos. En E22 y E24 se ha aplicado un incremento del coste del 1% por el impacto del IVA soportado. En H25 e I25 se presenta el precio final inicial, y el precio final revisado con el IVA al 8%. Para ello se ha procedido a redondear este ltimo dato con la funcin correspondiente (celda I25): =REDONDEAR.MAS(((E22+E23+E24)*(1+E26))*(1+G22);1) Como podr observarse en el ejemplo una subida de 1 punto en el IVA llevara un desplazamiento de incremento del precio en un 8,69%. evidentemente ello supondra un aumento del beneficio marginal potencial , que no real dado el menor nivel de demanda que supondra un encarecimiento del producto. Por ello se plantea en el ejemplo otro escenario denominado Escenario Costes en el que se plantea la posibilidad de mantener los mismos precios, reduciendo los costes directos. Para ello se ha insertado otro botn mediante la Vista Programador. Esta opcin es posible que no est presente en la cinta de opciones, para insertarla en la misma seleccionamos Inicio>Opciones>Personalizar vista de opciones (en la ventana de la derecha marcamos Programador) y aceptamos. A continuacin y una vez que tenemos disponible la vista Programador hacemos clic en ella y desplegamos el botn Insertar Controles. A diferencia de la versin 2003 estos controles vienen recopilados en dos grupos, los de formulario y los Active x. Seleccionaremos un botn de comando de este segundo grupo, y lo insertamos en nuestra hoja. Para cambiar el nombre, con el botn secundario seleccionamos Objeto botn de comando->Modificar o bien a travs de Propiedades -> Caption ; para cambiar el color del botn de igual forma que en VBA 2003 Propiedades ->BackColor.

El siguiente paso es insertar el cdigo asociado al evento clic. Para este Escenario Inicial solo queremos que se presenten los valores de partida, lo podemos hacer mediante una matriz o simplemente uno a uno: Private Sub CommandButton1_Click() Range(D22) = 13.95 Range(D23) = 0.75 Range(D24) = 0.25 Range(D26) = 0.15 Range(E22) = 15.07 Range(E23) = 0.75 Range(e26) = 0.15 End Sub Una vez insertado el cdigo volvemos a Excel e insertamos el siguiente botn Escenario Costes que nos va a permitir replantear los costes directos en funcin del objetivo de mantener el precio final. El cdigo asociado al evento clic en este caso sera: Private Sub CommandButton2_Click() buscamos el objetivo de aguantar el precio final para mantener mrgenes reducimos costes directos Range(E22) = 15.07 Range(e24) = 0.26 Range(e26) = 0.15 Range(I25).GoalSeek Goal:=18.4, ChangingCell:=Range(E23) End Sub Las correspondencias de la sintxis en VBA con la funcin buscar objetivo es la siguiente: Range(I25).GoalSeek>Definir la celda Goal:=18.4 >Con el valor (en nuestro caso 18.4) ChangingCell:Range(E23)>Para cambiar la celda (en el ejemplo la correspondiente a los costes directos la E23). Una vez insertado procedemos a configurar los escenarios Margen y Mixto de forma similar al anterior: Escenario margen Private Sub CommandButton3_Click() Range(E22) = 15.07 Range(e24) = 0.26 Range(E23) = 0.75 Range(e26) = 0.15 Range(I25).GoalSeek Goal:=18.4, ChangingCell:=Range(E26) End Sub Escenario Mixto Private Sub CommandButton4_Click() Range(E22) = 15.07 Range(e24) = 0.26 Range(E23) = 0.70

Range(I25).GoalSeek Goal:=19, ChangingCell:=Range(E26) End Sub Para rematar podemos establecer un conjunto de iconos por ejemplo flechas que nos permitan visualizar la evolucin que van teniendo los datos que analizamos respecto a una situacin anterior. Si escogemos el escenario Costes, seleccionamos la celda E23. Vamos a Inicio->Formato condicional >Nueva regla nos saldr el cuadro siguiente:

Desplegamos la ventana Estilo de formato y seleccionamos Conjunto de iconos. Para escoger a su vez el tipo de icono abrimos el desplegable Estilo de icono para seleccionar el que deseemos. El siguiente paso ser establecer la regla como tal, en nuestro caso marcamos que el icono sea verde en la celda E23 cuando el valor sea mayor que el de la celda D23, desplegando como tipo nmero. Con el resto procedemos de forma similar.

En la celda c29 hemos procedido a insertar la funcin promedio. Y desde la cinta de opciones se ha seleccionado nmero desplegando la flechita hacia abajo para colocar slo dos decimales. En G9 se ha procedido a insertar la siguiente funcin lgica =SI(F5<0;RECESION;") . Para colocar el formato condicional hemos seleccionado el tem en el icono estilos. Esos estilos adems se pueden editar simplemente desplegando la pestaa:

Buscar objetivo
Sin duda una de las mejores utilidades que tiene Excel, la funcin Buscar objetivo, nos facilita averiguar el valor de la variable que determina un resultado en una ecuacin sencilla. En el siguiente ejemplo analizaremos su aplicacin en Excel 2010. Supongamos que deseamos conocer el importe peridico a satisfacer para amortizar un prstamo de 4500 al 1,5 mensual. Para ello podemos disear una tabla como la siguiente:

En la celda B9 hemos insertado una cantidad aleatoria, en este caso 200, como cuota inicial. Despus hemos calculado los intereses en base al saldo pendiente de amortizar, o sea en C9 hemos insertado =E8*$b$5/100 ; y la amortizacin es la parte de la cuota que resta una vez descontados los intereses es decir en D9>=$B$9-C9. Con esto ya tendramos la segunda lnea del cuadro de amortizacin. Rellenamos hacia abajo hasta alcanzar las 12 mensualidades. Evidentemente y como podr comprobar, con esa cuota en el perodo 12 nos quedara todava un saldo pendiente de 2772,04 . Bien aqu es cuando entra e n juego nuestra funcin Buscar Objetivo. Nos posicionamos en la celda E20 y seleccionamos Datos>Anlisis Y si> Buscar Objetivo. En la ventana emergente insertaremos los datos tal y como aparecen en la imagen:

Es decir definimos la celda en donde se refleja el ltimo saldo pendiente con el valor cero, ya que al final de los 12 perodos deseamos tener amortizado el prstamo, para cambiar la cuota a abonar es decir. Dicho de otra forma a cunto debe ascender el importe peridico para devolver el prstamo en 12 cuotas. Evidentemente que podemos utilizar otra funcin financiera ms prctica como puede ser Pago, (por ejemplo en E3 podemos insertar =PAGO(B5/100;B4;B3)) lo que nos dara el mismo resultado.

Buscar objetivo con VBA


En alguna ocasin se nos puede presentar la necesidad de programar la funcin buscar objetivo con VBA. Para ello debemos utilizar la notacin GoalSeek. Al objeto de conocer mejor su uso lo voy a explicar con el siguienteejemplo, sobre el que adems profundizar un poquito ms en el uso del formato condicional.

Imaginemos un envasador de caf que presenta los siguientes datos en su cuenta analtica:

Precio coste del kg de caf >13.95 Costes directos por kg> 0.75 Costes indirectos por kg >0.25 Margen inicial->15 % IVA inicial>7 %

Con esos datos de partida planteamos un escenario inicial, y otros tres alternativos. En el escenario inicial haciendo clic en el botn correspondiente nos debe presentar cules seran los resultados de aplicar una subida de 1 punto en el IVA (del 7 al 8%). Los datos de las celdas D22, D23, D24 y D26, son iniciales y fijos. En E22 y E24 se ha aplicado un incremento del coste del 1% por el impacto del IVA soportado. En H25 e I25 se presenta el precio final inicial, y el precio final revisado con el IVA al 8%.

Para ello se ha procedido a redondear este ltimo dato con la funcin correspondiente (celda I25): =REDONDEAR.MAS(((E22+E23+E24)*(1+E26))*(1+G22);1) Como podr observarse en el ejemplo una subida de 1 punto en el IVA llevara un desplazamiento de incremento del precio en un 8,69%. evidentemente ello supondra un aumento del beneficio marginal potencial , que no real dado el menor nivel de demanda que supondra un encarecimiento del producto. Por ello se plantea en el ejemplo otro escenario denominado Escenario Costes en el que se plantea la posibilidad de mantener los mismos precios, reduciendo los costes directos. Para ello se ha insertado otro botn mediante la Vista Programador. Esta opcin es posible que no est presente en la cinta de opciones, para insertarla en la misma seleccionamos Inicio>Opciones>Personalizar vista de opciones (en la ventana de la derecha marcamos Programador) y aceptamos. A continuacin y una vez que tenemos disponible la vista Programador hacemos clic en ella y desplegamos el botn Insertar Controles. A diferencia de la versin 2003 estos controles vienen recopilados en dos grupos, los de formulario y los Active x. Seleccionaremos un botn de comando de este segundo grupo, y lo insertamos en nuestra hoja. Para cambiar el nombre, con el botn secundario seleccionamos Objeto botn de comando->Modificar o bien a travs de Propiedades -> Caption ; para cambiar el color del botn de igual forma que en VBA 2003 Propiedades ->BackColor. El siguiente paso es insertar el cdigo asociado al evento clic. Para este Escenario Inicial solo queremos que se presenten los valores de partida, lo podemos hacer mediante una matriz o simplemente uno a uno: Private Sub CommandButton1_Click() Range(D22) = 13.95 Range(D23) = 0.75 Range(D24) = 0.25 Range(D26) = 0.15 Range(E22) = 15.07 Range(E23) = 0.75 Range(e26) = 0.15 End Sub Una vez insertado el cdigo volvemos a Excel e insertamos el siguiente botn Escenario Costes que nos va a permitir replantear los costes directos en funcin del objetivo de mantener el precio final. El cdigo asociado al evento clic en este caso sera: Private Sub CommandButton2_Click() buscamos el objetivo de aguantar el precio final para mantener mrgenes reducimos costes directos Range(E22) = 15.07 Range(e24) = 0.26 Range(e26) = 0.15 Range(I25).GoalSeek Goal:=18.4, ChangingCell:=Range(E23) End Sub Las correspondencias de la sintxis en VBA con la funcin buscar objetivo es la siguiente: Range(I25).GoalSeek>Definir la celda Goal:=18.4 >Con el valor (en nuestro caso 18.4) ChangingCell:Range(E23)>Para cambiar la celda (en el ejemplo la correspondiente a los costes directos la E23).

Una vez insertado procedemos a configurar los escenarios Margen y Mixto de forma similar al anterior: Escenario margen Private Sub CommandButton3_Click() Range(E22) = 15.07 Range(e24) = 0.26 Range(E23) = 0.75 Range(e26) = 0.15 Range(I25).GoalSeek Goal:=18.4, ChangingCell:=Range(E26) End Sub Escenario Mixto Private Sub CommandButton4_Click() Range(E22) = 15.07 Range(e24) = 0.26 Range(E23) = 0.70 Range(I25).GoalSeek Goal:=19, ChangingCell:=Range(E26) End Sub Para rematar podemos establecer un conjunto de iconos por ejemplo flechas que nos permitan visualizar la evolucin que van teniendo los datos que analizamos respecto a una situacin anterior. Si escogemos el escenario Costes, seleccionamos la celda E23. Vamos a Inicio->Formato condicional >Nueva regla nos saldr el cuadro siguiente:

Desplegamos la ventana Estilo de formato y seleccionamos Conjunto de iconos. Para escoger a su vez el tipo de icono abrimos el desplegable Estilo de icono para seleccionar el que deseemos. El siguiente paso ser establecer la regla como tal, en nuestro caso marcamos que el icono sea verde en la celda E23 cuando el valor sea mayor que el de la celda D23, desplegando como tipo nmero. Con el resto procedemos de forma similar.

Tcnicas de control y depuracin de errores (2 parte)


5 OCTUBRE, 2011 DEJAR UN COMENTARIO

VBA dispone dentro de su categoria de objetos de uno de especial aplicacin para el tratamiento de errores: el objeto Err(). Este permite alamacenar informacin en tiempo de ejecucin sobre los errores que puedan presentarse apareciendo cuando se realice una operacin no vlida. Los atributos o propiedades se especifican por quien genera el error. Veamos una descripcin de cada uno: PROPIEDADES

Description (Propiedad) Erl (Propiedad)

Lectura y escritura. Devuelve o establece una cadena descriptiva asociada a un error.

Slo lectura. Devuelve un entero que indica el nmero de lnea de la

ltima instruccin ejecutada. HelpContext (Propiedad) HelpFile (Propiedad) LastDLLError (Propiedad) Number (Propiedad) Lectura y escritura. Devuelve o establece un Integer que contiene el identificador de contexto de un tema de un archivo de Ayuda. Lectura y escritura. Devuelve o establece una expresin String que contiene la ruta de acceso completa a un archivo de Ayuda. Slo lectura. Devuelve un cdigo de error proveniente del sistema y producido por una llamada a la biblioteca de enlaces dinmicos (DLL). Lectura y escritura. Devuelve o establece un valor numrico que especifica un error. Lectura y escritura. Devuelve o establece una expresin String que especifica el nombre del objeto o de la aplicacin que gener originalmente el error.

Source (Propiedad)

Mtodos

METODOS

Clear (Mtodo) Raise (Mtodo)

Borra todos los valores de las propiedades del objeto Err.

Genera un error en tiempo de ejecucin. Se puede utilizar en lugar de la instruccinError.

Veamos un ejemplo del mismo, en l vamos a generar un error por desbordamiento en tiempo de ejecucin y despus vamos a presentar el mensaje correspondiente: Sub ejemplo_error() Dim Msg As String Si se presenta un error construimos un mensaje informativo del mismo On Error Resume Next Err.Clear borramos cualquier objeto error Err.Raise (6) generamos un error por desbordamiento comprobamos que se ha dado el error y presentamos el mensaje If Err.Number <> 0 Then Msg = Error & Str(Err.Number) & ha sido generado por _ & Err.Source & Err.Description MsgBox Msg, vbCritical, Error End If End Sub

En el ejemplo ha podido ver el uso del evento Clear se utiliza para borrar explcitamente el objeto Err una vez que se ha controlado un error, como ocurre cuando se usa el control diferido de errores con On Error Resume Next. Yel evento Raise genera un error en tiempo de ejecucin. Como ya dije en la primera parte de este captulo, se nos pueden presentar diversos tipos de errores. Hemos podido analizar algunas tcnicas que nos facilita el manejo de los mismos. Pero a la hora de programar el editor VBA nos aporta otras herramientas que nos ayudan cuando estamos programando a depurar nuestro cdigo. Recordemos que al principio establecimos los cuatro tipos fundamentales de error que se pueden dar:

de sintxis de compilacin de ejecucin de lgica

Los errores de sintxis se detectan directamente a medida que se introduce el cdigo. VBA tiene una herramienta de comprobacin de sintxis que viene activada por defecto. No obstante para activarlo vaya a Herramientas>Opciones>ficha editor>Comprobacin de sintxis automtica. Los errores de sintxis que no se corrigan provocan un error de ompilacin. Los errores de compilacin dijimos que se generan cuando se compila el programa, es decir, cuando se traduce a lenguaje mquina el cdigo que hemos escrito. Cuando Excel trata de ejecutar un cdigo y detecta un procedimiento, una instruccin o una operacin invlida se produce un error de ejecucin, por ejemplo cuando estamos haciendo una llamada a una Hoja 4 siendo que esta no existe. Los ms complicados de detectar seran los errores de lgica, entre otros aquellos imputables al propio programador. Para entendernos aquellos insertos en nuestro propio algoritmo que da lugar a errores inesperados. Para este tipo de error VBA dispone de una herramienta de depuracin que permiten la ejecucin del cdigo paso a paso comprobando los procedimientos y valores de las variables. Para acceder a la misma puede activarla desde la barra de men>Ver>barra de Herramientas>Depuracin. Una vez que la active le saldr una barra de herramientas con unos iconos: las cuatro primeras leidas de izquierda a derecha ya las conoce, fijmonos en el icono de una mano alternar punto de interrupcin. En ocasiones, puede interesar poner en ejecucin un programa e interrumpirlo en una lnea especfica. Esto es posible mediante los llamados puntos de interrupcin, que se adjuntan a la lnea especfica en la cual se desea detener la ejecucin. De este modo, cuando el curso de ejecucin del programa llegue a la lnea, ste se detendr, es decir, la lnea con punto de interrupcin quedar pendiente y sin ejecutar; en ese momento, la aplicacin donde se ha creado el mdulo pasa de Modo Ejecucin a Modo Interrupcin. Tras la interrupcin, se podr las siguientes acciones:

evaluar las variables que estn siendo utilizadas a travs de la ventana Inspeccin ver el curso exacto de ejecucin del cdigo, es decir, la secuencia de acciones que se realizan

Ms a la derecha de la barra encontr una serie de iconos que activan diversas ventanas, una de ellas es laventana Locales que nos muestra todas las variables y parmetros involucrados en una funcin o procedimiento. La ventana Inmediato se utiliza en tiempo de diseo para depurar y evaluar expresiones, ejecutar instrucciones, imprimir valores de variables, etc. Permite escribir expresiones que el lenguaje de programacin evala o ejecuta durante la depuracin.
ARCHIVADO EN CONTROL DE ERRORES

Tcnicas de depuracin y de control de errores (1 parte)


4 OCTUBRE, 2011 DEJAR UN COMENTARIO

En el presente apartado vamos a abordar un acuestin no trivial, y que nos puede reportar ciertos beneficios al realizar nuestros programas. Los errores son casi inevitables, aun planificando bien nuestro cdigo podemos cometer errores de diseo, de sintxis, de compilacin o lgicos. Si VBA encuentra un error y no hemos insertado un cdigo de comprobacin de error, el programa se detiene y el usuario se encontrar con un mensaje embarazoso: Continuar,Finalizar o Depurar. Si este error se nos presenta a nosotros en el momento en que estamos probando nuestro cdigo, o es un programa realizado por nosotros mismos, al seleccionar la opcin de depurar se nos va a presentar la ventana de cdigo con una lnea en amarillo en donde se resalta la localizacin del error. Podemos por tanto detener la ejecucin del programa, corregir el error y ejecutarlo de nuevo. Pero qu ocurrira si estos errores se le presenta a un usuario que no tiene porque saber de programacin. Tenemos por tanto que establecer una estrategia para interceptar los errores. Para comenzar vamos a tratar el siguiente ejemplo: Introduzca el mdulo siguiente: Sub division() Dim x, y, z As Double x = InputBox(Introduzca el dividendo, DIVISION) y = InputBox(Introduzca el divisor, DIVISION) z=x/y MsfBox x & dividido entre & y & es igual a & z End Sub Ver que he marcado en negrita el mensaje de respuesta, en el que intencionadamente he introducido un primer error de sintxis. El mensaje que le aparecer cuando lo intente ejecutar es ERROR DE COMPILACION! NO SE ENCUENTRA SUB O FUNCTION. Es decir que cuando VBA compila (traduce a lenguaje mquina) el cdigo que le hemos insertado, no lo entiende. Corrja el error y ejectelo de nuevo. Ahora en tiempo de ejecucin cuando el programa le solicite introducir el divisor, introduzca un cero. Afortunadamente ese error VBA ha sido capaz de interpretarlo. Est dentro de la lista de errores interceptables. Inserte ahora debajo de la declaracin de variables la siguiente lnea: On error resume next Ejecute de nuevo el cdigo y observar que le arrojar la divisin entre 0, como solucin cero. O sea que con esta sentencia le indicamos a VBA que en caso de que encuentre algn error lo ignore y contine ejecutando el cdigo. Es fcil pensar que con esta lnea se resuelve todos los problemas pero realmente no es as tan slo se enmascara, con lo que si no se hace nada para corregir la causa del error, se podrn generar futuros errores. Vamos a crear por tanto unas lneas de cdigo para manejar los errores. Una opcin bastante usada es introducir una condicin con el bucle DoWhile, por ejemplo: Sub obtenernumeros() Dim hecho As Boolean Dim divisor, dividendo, division As Double hecho = False Do While Not divisor <> 0

dividendo = InputBox(Introduzca el dividendo, DIVISION) divisor = InputBox(Introduzca el divisor, DIVISION) Loop division = Format(dividendo / divisor, #0.00) MsgBox division End Sub Con ello forzamos sin ms que hasta que se introduzca una cifra distinta de cero como divisor. Una manera ms directa es crear una funcin personalizada para la operacin en s, y hacer una llamada a la misma desde un procedimiento. De esa forma para la funcin podramos escribir el siguiente cdigo: Function dividir(dividendo, divisor) As Boolean declaramos las variables Dim msg As String Dim resultado As Double establecemos la salida en caso de error On Error GoTo controldivcero si no hay errores dividimos resultado = Format(dividendo / divisor, #0.00) presentamos el resultado msg = dividendo & entre & divisor & es igual a & resultado MsgBox msg dividir = True salimos y finalizamos la funcin dividir Exit Function aqu el manejador de error controldivcero: se ha detectado un divisor=0 se le pregunta al usuario si pretende continuar resultado = MsgBox(No se puede dividir entre 0 Desea continuar?, _ vbYesNo + vbQuestion, Dividir) si dice que s rcomenzamos el bucle If resultado = vbYes Then dividir = False Else dividir = True End If End Function Y con el procedimiento siguiente obtenemos los operadores y llamamos a la funcin: Sub obtenernumeros_bis() Dim hecho As Boolean Dim divisor, dividendo As Variant hecho = False Do While Not hecho dividendo = InputBox(Introduzca el dividendo, DIVISION) divisor = InputBox(Introduzca el divisor, DIVISION) hecho = dividir(dividendo, divisor) Loop End Sub

En este ejemplo preparar un rutina de control de errores no es muy difcil dado lo previsible y obvio del error que se puede presentar. Aunque por desgracia no siempre es as. A menudo necesitamos ofrecer al usuario la opcin de continuar el programa o abandonarlo. Para ello podemos aadir una o varias sentencias Resume al manejador de errores. VBA define tres tipos:

Resume: se le dice a VBA que contine la ejecucin del programa desde la misma sentencia donde se produjo el error. Resume Next: a partir de la primera sentencia ejecutable que encuentre despus de la lnea que provoc el error. Resume Line: a partir de la etiqueta especificada con Line.

En cualquier momento podemos desactivar el manejador con la sentencia: On Error GoTo 0.

Formularios: cuadro de lista y cuadro combinado


11 SEPTIEMBRE, 2011 DEJAR UN COMENTARIO

Un cuadro de lista y un cuadro combinado son controles similares pero con ligeras diferencias y sirven para permitir al usuario elegir entre varios elementos o insertar el valor que desee en una lista. Por ejemplo: Cuadro de lista. Muestra una lista de uno o ms elementos de texto de entre los cuales puede elegir el usuario.

Cuadro combinado. Combina un cuadro de texto con un cuadro de lista para crear un cuadro de lista desplegable.Un cuadro combinado es ms compacto que un cuadro de lista, pero requiere que el usuario haga clic en la flecha abajo para mostrar la lista de elementos. Utilice un cuadro combinado para permitir que el usuario escriba una entrada o elija un solo elemento de una lista. El control muestra el valor actual en el cuadro de texto, independientemente de cmo se haya insertado ese valor.

La propiedad predeterminada de un control ListBox es Value. El evento predeterminado de un control ListBox es Click. El siguiente ejemplo agrega y elimina el contenido de un control ListBox utilizando los mtodos AddItem yRemoveItem y las propiedades ListIndex y ListCount. Para utilizar este ejemplo, copie este cdigo de ejemplo en la parte Declaraciones de un formulario. Asegrese de que el formulario contiene:

Un control ListBox llamado ListBox1. Dos controles CommandButton llamados CommandButton1 y CommandButton2.

Ejemplo:

Private Sub Command1_Click() If Text1 = Then MsgBox Debe ingresar un nombre para poder agregar un elemento, vbQuestion + vbOKOnly, Datos incompletos Salimos de la rutina ya que no se ha ingresado nada en el control text1 Exit Sub End If Agregamos el contenido del Text1 en el control List1 List1.AddItem Text1 End Sub Private Sub Command2_Click() Si la lista no est vaca entonces podemos eliminar If List1.ListIndex <> -1 Then Eliminamos el elemento que se encuentra seleccionado

List1.RemoveItem List1.ListIndex End If End Sub


ARCHIVADO EN CONTROLES DE FORMULARIOS ETIQUETADO CON CUADRO DE LISTA

Formularios (Frame)
9 SEPTIEMBRE, 2011 DEJAR UN COMENTARIO

Es un contenedor de otros controles. Los agrupa para que resulten facilmente identificables para el usuario. Para agrupar controles, en primer lugar trace el control Frame y, a continuacin, meta los controles dentro de Frame. De este modo podr mover al mismo tiempo el Frame y los controles que contiene. Si traza un control fuera del Frame y, a continuacin, intenta moverlo dentro de ste, el control se colocar sobre el Frame, pero no pertenecer a el. Es decir, si es un OptionButton este se comportar como si estuviese fuera del Frame, aunque fsicamente est dentro de el.

El evento predeterminado de un control Frame es Click.

Estructuras de decisin Select Case anidados


10 AGOSTO, 2011 DEJAR UN COMENTARIO

Me ha parecido interesante la explicacin y el ejemplo de las estructuras anidadas de Select Case y la reproduzco aqu al objeto de que vd pueda ver la potencialidad de esta estructura con un ejemplo que, a pesar de la presencia de varias condiciones, resulta bastante clara y as adems, aborda ejemplos ms desarrollados. Publicado por ExcelForo El problema planteado es el siguiente:

en una base de datos de personas, el objetivo es que Excel diga la clasificacion del porcentaje de grasa de una persona, el cual se obtiene por un numero que da una balanza. El problema es que son muchas condicionales! Si es mujer de 18-39 aos: 0-21 bajo en grasa;22-33 normal;34-39 alto en grasa;ms de 39 obesidad. Si es mujer de 40-59 aos:0-23 bajo en grasa;24-34 normal;35-40 alto en grasa; ms de 40 obesidad. Si es mujer de 60-69 aos: 0-24 bajo en grasa;25-36 normal;37-42 alto en grasa; ms de 42 obesidad. Si es hombre de 18-39 aos: 0-8 bajo en grasa;9-20 normal;21-25 alto en grasa;ms de 25 obesidad Si es hombre de 40-59 aos: 0-11 bajo en grasa;12-22 normal;23-28 alto en grasa;ms de 28 obesidad Si es hombre de 60-99 aos: 0-13 bajo en grasa;13-25 saludable;26-30 alto en grasa; ms de 30 obesidad.
Si bien podramos optar por desarrollar la frmula anidando repetidamente la funcin SI condicional, es cierto que slo lo podramos implementar con versiones superiores a Excel 2003, ya que en esta o anteriores nuesto mximo de anidaciones era de siete Recordemos que para crear una funcon personalizada o UDF debemos acceder al Editor de VBA presionando Alt+F11, y ya dentro del Editor insertar un modulo (Men Insertar > Modulo), haciendo doble clic en el mdulo copiaremos el siguiente cdigo:

creamos una funcin con tres variables Sexo, Edad y % grasa Public Function Grasa1(sexo, edad, Porcgra) Select Case sexo definimos categoras para mujeres Case Is = M Select Case edad Case 18 To 39 Select Case Porcgra Case 0 To 21: Grasa1 = bajo en grasa Case 22 To 33: Grasa1 = normal en grasa Case 34 To 39: Grasa1 = alto en grasa Case Is > 39: Grasa1 = obesidad End Select Case 40 To 59 Select Case Porcgra Case 0 To 23: Grasa1 = bajo en grasa Case 24 To 34: Grasa1 = normal en grasa Case 35 To 40: Grasa1 = alto en grasa

Case Is > 40: Grasa1 = obesidad End Select Case 60 To 99 Select Case Porcgra Case 0 To 24: Grasa1 = bajo en grasa Case 25 To 36: Grasa1 = normal en grasa Case 37 To 42: Grasa1 = alto en grasa Case Is > 42: Grasa1 = obesidad End Select End Select lo mismo para hombres Case Is = H Select Case edad Case 18 To 39 Select Case Porcgra Case 0 To 8: Grasa1 = bajo en grasa Case 9 To 20: Grasa1 = normal en grasa Case 21 To 25: Grasa1 = alto en grasa Case Is > 25: Grasa1 = obesidad End Select Case 40 To 59 Select Case Porcgra Case 0 To 11: Grasa1 = bajo en grasa Case 12 To 22: Grasa1 = normal en grasa Case 23 To 28: Grasa1 = alto en grasa Case Is > 28: Grasa1 = obesidad End Select Case 60 To 99 Select Case Porcgra Case 0 To 13: Grasa1 = bajo en grasa Case 14 To 25: Grasa1 = normal en grasa Case 26 To 30: Grasa1 = alto en grasa Case Is > 30: Grasa1 = obesidad End Select End Select End Select End Function
Ya podremos utilizar nuestra funcin Grasa1 en nuestra Hoja de clculo, sobre tres celdas =GRASA1(sexo; edad; %grasa)
ARCHIVADO EN ESTRUCTURAS DE DECISIN

Estructuras de decisin Select Case


10 AGOSTO, 2011 DEJAR UN COMENTARIO

Cuando tenemos que verificar muchas condiciones la estructura ifelse puede ser un tanto pesada. Con SelectCase podemos conseguir una estructura ms clara y legible. Su sintxis es la siguiente:

Select [ Case ] testexpression [ Case expressionlist [ statements ] ] [ Case Else [ elsestatements ] ] End Select Ejemplo: Sub usuarios() Dim usuario As String usuario = InputBox(Ingrese su nombre) Select Case usuario Case Hugo MsgBox Bienvenido Hugo Case Luis MsgBox Bienvenido Luis Case Else MsgBox Lo siento no ests registrado End Select End Sub
ARCHIVADO EN ESTRUCTURAS DE DECISIN

Estructuras de decisin if_then_else


7 AGOSTO, 2011 DEJAR UN COMENTARIO

Los pequeos programas que hemos escrito hasta ahora, se han limitado a ejecutar una serie de instrucciones de forma secuencial, una detrs de otra. En este post vamos a abordar el estudio de las estructuras de decisin, las cuales evalan si se cumplen o no una o varias condiciones antes de ejecutar la sentencia.Comenzamos con if__then__else: Veamos su estructura:

Por ejemplo evaluaremos la edad del usuario para que pueda acceder a la aplicacin:

El cdigo en VBA sera: Sub ejemplo7() Dim edad As Byte solicitamos la edad del usuario por teclado edad = InputBox(Qu edad tienes?, Edad) si es mayor de edad If edad >= 18 Then entonces bienvenido MsgBox Bienvenido en caso contrario Else mensaje y fin MsgBox Lo siento no puede acceder a la aplicacin cerramos Excel Application.Quit End If End Sub

Anlisis de datos. Los escenarios


6 AGOSTO, 2012 1 COMENTARIO

A veces es necesario observar los datos, las operaciones y los resultados desde diversos ngulos. Excel cuenta con una herramienta, que nos facilita esta tarea: el administrador de escenarios. Herramienta de anlisis que permite evaluar distintas estrategias, entendiendo por escenario un conjunto de valores que se utilizan para prever los resultados de un modelo de hoja de clculo. El funcionamiento en Excel 2010 es similar a la versin 2003. Supongamos los datos de nuestro ejemplo, donde habamos creado esos escenarios adjuntndole un botn de comando con cdigo VBA. Con la herramienta Escenarios diseamos los mismos sin necesidad de cdigo. Supongamos que tenemos los datos iniciales:

Para guardar esta presentacin de datos como un escenario posible en 2003, hacemos clic en Herramientas >Escenarios y desplegamos la caja de dialogo de escenario. En 2010 en Datos>Anlisis Y si > Administrador de escenarios. Con ello desplegamos la caja de dilogo de Escenarios:

Su funcionamiento es muy simple:

Clic en Agregar, y nos saldr otra ventana en donde escogeremos un nombre para nuestro escenario. En esta ventana se muestra el valor actual de la celda cambiante y preguntando qu nuevo valor se desea introducir en la misma. Cuando introduzca un valor podr pulsar el botn Agregar para continuar creando otros escenarios, o bien Aceptar para terminar y regresar al cuadro de dilogo Administrador de escenarios.

Con las opciones Modificar/Eliminar podemos editar o eliminar el escenario seleccionado.

ARCHIVADO EN SIN CATEGORA ETIQUETADO CON ESCENARIOS

Introduccin a las herramientas de Macros y VBA en Excel 2010


25 JULIO, 2012 DEJAR UN COMENTARIO

De forma predeterminada, las herramientas de VBA estn ocultas. Es necesario completar los pasos siguientes para cambiar la configuracin en las opciones de Excel para acceder a la ficha Programador.

Abra el men Archivo y seleccione Opciones en la barra de navegacin izquierda.

En el cuadro de dilogo Opciones de Excel, de la navegacin de la izquierda, seleccione Personalizar cinta de opciones. En el cuadro de lista derecho, seleccione la casilla de verificacin junto a la ficha Programador. Para volver a Excel, haga clic en Aceptar.

Ahora debera aparecerle la pestaa Programador en el men:

Los iconos utilizados para grabar y reproducir macros VBA en el grupo de cdigo en la ficha del desarrollador: Icono Visual Basic - Se abre el Editor de Visual Basic. Icono Macros - Muestra el cuadro de dilogo Macro, donde se puede optar por ejecutar o editar una macro de la lista de las macros. Icono Grabar macro - Comienza el proceso de grabacin de una macro. Con el icono de referencia relativa intercambiamos entre el uso de la grabacin relativa o absoluta. Icono de seguridad de macros se accede al Centro de confianza, donde se puede optar por permitir o no permitir las macros para ejecutar en este equipo.
ARCHIVADO EN SIN CATEGORA ETIQUETADO CON MACRO, VBA, VISUAL BASIC

Herramientas bsicas I
23 JULIO, 2012 DEJAR UN COMENTARIO

La nueva interfaz es sustancialmente diferente con respecto a 2003. Lo que todo el mundo se pregunta Perodnde estn las cosas?. Todo ha cambiado, tanto los mens como algunos procedimientos.

Empezando por la barra de men lo primero que nos encontramos es el botn de office en la versin 2007 y la pestaa Archivo en la versin 2010. Dicho botn nos da acceso a las opciones Nuevo,Abrir,Guardar, Guardar como, imprimir etc. Si deseamos crear un nuevo libro botn office>Nuevo (2007) o Archivo-Libro blanco-Crear (2010). Por ejemplo crearemos un libro nuevo que lo llamar PRUEBA1. Este libro los guardar en el directorio que desee, haciendo notar que en estas versiones existen varias opciones para guardar un libro de Excel.

Como libro de Excel con la extensin .xlsx (.xls en versin 2003). O como Libro de Excel habilitado para macros (con extensin .xlsm). Como recordar Excel 2003 no distingua, cuando se guardaban, libros con macros de libros sin macros. De hecho cuando intentbamos abrir un libro con macros nos avisaba e incluso nos impeda actuar sobre los objetos VB si no bajbamos el nivel de seguridad. Este tratamiento en cuanto a la seguridad no ha cambiado ni en 2007 ni en 2010. No obstante para poder trabajar con libros de extensin .xlsm debemos habilitar la seguridad de la siguiente manera: Programador> Seguridad de macros / Habilitar todas las macros-. En Excel 2010 debemos ir a Archivo>Opciones>Centro de confianza>Clic en configuracin de centro de confianza>Configuracin de macros. Marcamos Habilitar todas las macros

Con un pequeo ejemplo podemos ir tomando contacto con la nueva interfaz, por ejemplo imaginemos que queremos hacer un pequeo grfico para comparar tarifas de telefona mvil. Una vez iniciado Excel, introducimos los datos de la misma manera a como lo haramos en la versin 2003.

La introduccin de las frmulas no vara, como tampoco lo hace las referencias absolutas y relativas. Es decir podemos anclarr las celdas que nos interesa con el signo $. Una vez rellenada la hoja con los datos, podemos insertar un grfico. En principio el icono para insertar grficos no est presente en la cinta de opciones. A diferencia de la versin 2003, en 2007 y 2010 tenemos la posibilidad de personalizar nuestro entorno de trabajo. Es cierto que en la versin 2003 existe la posibilidad de establecer una barra de herramientas personalizada, a la que incluso le podamos poner nuestros propios iconos con el pequeo editor que incorpora, pero esta funcin se hace ms presente y necesaria en las versiones 2007/10. Para ello haciendo clic en Archivo/Botn office, buscamos barra de herramientas de acceso rpido o bien desplegando en el icono siguiente:

Desplegamos Comandos ms utilizados y escogemos por ejemplo en este caso Crear grfico. Si no queremos insertar esta herramienta como acceso rpido iremos a Men>Insertar>Grficos. Aqu escogemos el tipo que precisemos para representar los datos. En el ejemplo seleccionamos primero el rea de datos (en este caso A1:E42), seguidamente Insertar><grfico dispersincon lneas suavizadas Bueno con esto nos habr insertado un grfico ms o menos como este:

Para comenzar tenemos en la leyenda 4 series cuando slo tiene que haber 3. Vamos a eliminar la Serie 1, haciendo clic sobre Serie 1 botn derecho y eliminar serie. A continuacin necesitamos cambiar los respectivos nombres de las series, hacemos clic en el grfico y despus en seleccionar datos nos saldr una ventana como esta:

Y tal como se seala en la imagen clic en editar y cambiamos el nombre a las series. Si se fija bien podr observar como se activan las diferentes herramientas para los grficos. Si selecciona la pestaa Presentacin acceder a las opciones de Ttulo de grfico, Etiquetas, etc.

Los minigrficos
Los minigrficos , son una de las grandes novedades visuales con las que nos sorprende Excel 2010. Se tratan de pequeos grficos incrustados en el fondo de una celda de tal forma que complementan la informacin contenida en las celdas de al lado. Estos minigrficos suelen utilizarse para ver de un solo vistazo, tendencias o resultados sin tener que estudiar grandes tablas de nmeros. En el ejemplo de referencia: 1. 2. 3. 4. Seleccione la celda B12. Vaya a Insertar>Minigrfico de columna> Le aparecer una nueva ventana para seleccionar el rango de datos seleccione C12:E12. Clic en Aceptar.

Para eliminar un minigrfico, nos posicionamos en la celda donde se encuentra ubicado y con el botn derecho seleccionamos Minigrfico> Borrar minigrfico.
ARCHIVADO EN SIN CATEGORA ETIQUETADO CON MINIGRFICOS

Aadir barra de errores a los grficos


17 JULIO, 2012 DEJAR UN COMENTARIO

Las barras de error son una herramienta que permite mostrar el rango del desvo estndar de una medicin experimental. Para ver comprender mejor su uso y forma de aplicacin analicemos el siguiente ejemplo. Supongamos que tenemos la siguiente tabla de datos:

X 4,80 5,10 2,55 4,00 3,90

Y 2,87 4,00 6,01 6,78 1,00

Error X 0,79 1,09 2,33 0,07 0,08

Error Y 0,80 3,20 2,31 2,01 3,00

Representamos los datos como grfico de dispersin XY:

Para agregar barras de error a un grafico, seleccionamos una de las series de datos y abrimos el men de formato de series de datos (clic en cualquier botn azul). Se nos abrir un cuadro de dilogo que cuenta con una pestaa para definir las barras de error de X y otra para definir las de Y.

En el cuadro de definiciones podemos elegir entre la presentacin de la barra (ninguna, por exceso, por defecto o ambas) y la cuanta del error. Por ejemplo si definimos un error del 25% para cada punto en la ventanilla de Porcentaje y elegimos la opcin Ambas en Presentar, veremos algo como esto:

Excel ha agregado una lnea a ambos lados de cada punto, que representan una desviacin del 25% de este punto. Pruebe a modificar el grfico agregando el mismo error al valor de las Y. Si desea variar el formato de las barras lo puede hacer desde el men tramas.
ARCHIVADO EN SIN CATEGORA ETIQUETADO CON BARRAS

Utilizacin de caracteres especiales en grficos y hojas.


16 JULIO, 2012 DEJAR UN COMENTARIO

La funcin CARACTER en Excel regresa un carcter especfico para un nmero entero que ha sido proporcionado como argumento. Un PC tiene un juego de caracteres con un nmero entero asignado y es precisamente ese nmero el que debemos proporcionar como argumento.

Ejemplos de la funcin CARACTER


La funcin CARACTER puede ayudarnos a hacer uso de caracteres especiales o smbolos dentro de alguna celda como pueden ser los saltos de lnea o encontrar alguna letra del alfabeto.

Agregar un salto de lnea


Cuando necesitamos agregar dos cadenas de texto que incluyan un salto de lnea entre ellas podemos utilizar la funcin CARACTER (10), que representa precisamente el salto de lnea. Observa cmo la celda C2 hace la unin de las cadenas de texto de la celda A1 y B1 pero introduce un salto de lnea entre ambas. Para ver reflejado el salto de lnea debemos ir al cuadro de dilogo Formato de celdas (CTRL + 1) y seleccionar la opcin Ajustar texto que se encuentra en la pestaa Alineacin.

Encontrar una letra del alfabeto


Si queremos saber rpidamente cual es la letra 10 del alfabeto podemos utilizar la funcin CARACTER que nos dar el resultado inmediato sin necesidad de ir letra por letra. Antes de mostrar el ejemplo debemos saber que la letra A (mayscula) tiene asociado el cdigo 65 y de esta manera podemos imaginar que la primera letra del alfabeto es lo mismo que 64 +1, la segunda letra

del alfabeto ser 64 +2, la tercera 64 + 3 y as sucesivamente. Si necesitamos conocer la dcima letra del alfabeto utilizaremos la frmula CARACTER(64 + 10) Y cmo sera con VBA: Para insertar la letra c por ejemplo en la celda activa > ActiveCell.FormulaR1C1 = =CHAR(64+3)
ARCHIVADO EN SIN CATEGORA

Reglas de validacin
25 NOVIEMBRE, 2011 DEJAR UN COMENTARIO

Las reglas de validacin nos permiten especificar el formato para un rango de celdas, restringiendo por ejemplo la entrada de datos no deseados, sean textos, campos vacos o nmeros. La forma de activar dichas reglas, recordemos, es desde la barra de men, desplegamos datos y posteriormente validacin. En este artculo se describe cmo configurar la validacin de datos, incluidos los tipos de datos que se pueden validar y los mensajes que se pueden mostrar, adems de proporcionar un libro que se puede descargar para obtener ejemplos de validacin que se pueden modificar y utilizar en hojas de clculo propias. Con VBA tambin es posible crear reglas de validacin. En el siguiente ejemplo vamos a desarrollar una macro que nos impide dejar vaca la celda A1 y ademas slo nos va a permitir introducir valores comprendidos entre 5 y 10. Utilizaremos una estructura With _ end with. Y comenzamos seleccionando el rango a validar, en el ejemplo el A1: With Range(a1).Validation Validation es una propiedad con los mtodos siguientes:

Add: para aadir una nueva regla de validacin a un rango de celdas. Modify: cuando deseamos modificar las mismas Delete: para eliminarlas.

A su vez el evento Add contiene una serie de argumentos: Type (tipo de validacin) es un argumento obligatorio con el que especficamos que tipo de validacin vamos a aplicar, pudiendo escoger entre las siguientes:

xlValidateCustom (validacin personalizada) xlValidateDate(para fechas) xlValidateDecimal (slo nmeros decimales) xlValidateInputOnly (slo entradas determinadas) xlValidateList (mediante listas) xlValidateTextLength (texto de un determinado tamao) xlValidateTime (slo formatos horarios) xlValidateWholeNumber ( para no admitir celdas vacas) XlDVAlertStyle opcional. El estilo de alerta de validacin.

Otros argumentos son: AlertStyle

XlDVAlertStyle puede ser una de estas constantes XlDVAlertStyle. xlValidAlertInformation

xlValidAlertStopxlValidAlertWarning
Operator XlFormatConditionOperator opcional. El operador de validacin de datos.

XlFormatConditionOperator puede ser una de estas constantes XlFormatConditionOperator. xlBetween xlEqualxlGreaterxlGreaterEqualxlLessxlLessEqual xlNotBetween xlNotEqual
Formula1 Formula2 Variant opcional. La primera parte de la ecuacin de la validacin de datos. Variant opcional. La segunda parte de la validacin de datos

cuando Operator es xlBetween oxlNotBetween; de lo contrario, se omite este argumento. De esta forma, nuestra macro quedara como sigue: Sub val() With Range(a3).Validation .Delete .Add Type:=xlValidateWholeNumber, AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=5, Formula2:=10 .IgnoreBlank = True .InCellDropdown = True para que nos salga una ventanita antes de introducir los datos .InputTitle = Nmero entre 5 y 10 el ttulo de la ventanita .ErrorTitle = Error en los datos los mensajes emergentes .InputMessage = Slo se admiten valores entre 5 y 10 .ErrorMessage = Slo nmeros entre 5 y 10 .ShowInput = True .ShowError = True End With End Sub Habr observado que existe una primera sentencia .Delete, con ello nos aseguramos de que no existe una regla de validacin o condicin previa que nos anule la regla en ejecucin. De hecho si elimina esa lnea de cdigo observar que se origina un error.
ARCHIVADO EN SIN CATEGORA

Otras funciones estadsticas


21 NOVIEMBRE, 2011 DEJAR UN COMENTARIO

Adems de las funciones bsicas ya vistas anteriormente, Excel cuenta con otras que pueden resultar de gran ayuda al recontar celdas vacas u ocupadas:

CONTAR: cuenta el nmero de celdas que contienen nmeros. CONTARSI: cuenta las celdas en el rango que coinciden con una condicin dada. Por ejemplo si quisiramos saber cuntos valores dentro del rango B2:B12 (al que yo he llamado DATOS) son mayores a 50 escribira en la barra de frmulas =CONTAR.SI(DATOS;>50)

CONTAR.BLANCO: devuelve el nmero de celdas vacas dentro de un rango de datos. CONTARA:Cuenta el nmero de celdas que no estn vacas y los valores que hay en la lista de argumentos. Ojo a diferencia de la funcin CONTAR , esta cuenta cualquier cosa sea nmero, letras o carcteres.

Bien estas funciones nos ayudan a contar celdas con o sin datos, pero qu ocurre si quisiramos contar celdas con un determinado color de fondo. Veamos: Seleccionamos men Edicin Buscar (Ctrl+B) Hacemos clic en la flecha Formato Seleccionamos Elegir formato de celda

Seleccionamos la celda con formato. En nuestro caso, la A2 que es la que tiene el fondo amarillo Hacemos clic en Buscar todo. En la parte inferior del cuadro de dilogo Buscar y reemplazar, se muestran todas las celdas con dicho formato. Pulsamos Ctrl +A para seleccionar todas las celdas con dicho formato Al hacerlo en la barra de estado se mostrar la suma de los valores. En este caso, 56863. Si lo que queremos es contar el nmero de celdas en vez de sumarlas, hacemos clic con el botn derecho sobre la barra de estado Seleccionamos la funcin Cuenta. En la barra de estado se mostrar el nmero de celdas con el formato que indiquemos. En este caso hay dos celdas con color de fondo amarillo. Por tanto, en la barra de estado aparece 2. A continuacin reproduzco un post de Jorge Dun de cmo se prodra hacer con VBA :

Function contar_por_color(RangoColor As Range, CeldaColor As Range) Dim rngCelda As Range

For Each rngCelda In RangoColor If rngCelda.Interior.ColorIndex = CeldaColor.Interior.ColorIndex Then contar_por_color = contar_por_color + 1 End If Next End Function
Si quisiramos sumar los datos que contienen las celdas aplicaramos la funcin siguiente:

Function sumar_por_color(RangoColor As Range, CeldaColor As Range, RangoSumar As Range) Dim rngCelda As Range Dim colOffset As Long colOffset = RangoSumar.Column RangoColor.Column For Each rngCelda In RangoColor If rngCelda.Interior.ColorIndex = CeldaColor.Interior.ColorIndex Then sumar_por_color = sumar_por_color + rngCelda.Offset(0, colOffset).Value End If Next End Function
ARCHIVADO EN SIN CATEGORA

Clculos estadsticos bsicos: media,mediana, moda, varianza y desviacin estndar


18 NOVIEMBRE, 2011 DEJAR UN COMENTARIO

Para comenzar repasaremos las funciones bsicas que ostenta Excel para clculos estadsticos. Para ello inicie un nuevo libro Excel y en la primera hoja inserte los datos siguientes:

Seleccione por ejemplo la celda A13 para realizar clculos. Vaya a men>insertar>funcin. En seleccionar categoras, escoga Estadsticas y Promedio, que es la funcin que nos devuelve la media aritmtica de los datos escogidos.

Otra forma rpida es seleccionar el rango de celdas A1:A13 y desplegar el signo sumatorio de la barra de mens, seleccionando la misma funcin promedio. Para practicar en A14 inserte la funcin mediana , en A15 la moda y en A16 la desviacin estndar. Para la media

Veamos como podra ser con cdigo VBA: Function Media(k As Long, Arr() As Single) Dim Sum As Single Dim i As Integer Sum = 0 For i = 1 To k Sum = Sum + Arr(i) Next i Media = Sum / k End Function Y para la desviacin estndar:

Function StdDev(k As Long, Arr() As Single) Dim i As Integer Dim avg As Single, SumSq As Single avg = Media(k, Arr) For i = 1 To k SumSq = SumSq + (Arr(i) avg) ^ 2 Next i StdDev = Sqr(SumSq / (k 1)) End Function
ARCHIVADO EN SIN CATEGORA

Reconociendo los mensajes de error


6 NOVIEMBRE, 2011 DEJAR UN COMENTARIO

A veces cuando trabajamos en Excel se producen errores que la aplicacin muestra con una serie de mensajes. Los ms comunes son los siguientes:

TIPO DE ERROR DESCRIPCION

#VALUE! Se ha introducido un tipo de argumento u operador errneo.

#NAME! Excel no reconoce el texto en una frmula

#DIV/0 Se est intentando dividir entre cero

El primer tipo de error suele ocurrir:

Cuando se trata de introducir texto en una frmula que requiere un nmero o valores lgicos. Cuando se introduce una referencia a una celda , una frmula o una funcin como una array constante. Al ejecutar una macro que en realidad es una funcin. Al hacer mencin a un nombre inexistente. Usar una frmula en una etiqueta. Introducir texto en una frmula sin cerrar las correspondientes etiquetas.

El segundo tipo de error surge:

En cuanto al tipo de error div 0 no requiere mayor explicacin.


ARCHIVADO EN SIN CATEGORA

Tablas dinmicas y VBA 2 parte


19 JULIO, 2011 DEJAR UN COMENTARIO

En un anterior post hemos tratado como se realiza una tabla dinmica. Podemos potenciar el uso de la misma mediante VBA. Para poder seguir los puntos tratados a continuacin sera conveniente descargar el siguientefichero de datos. Una vez abierto el fichero desplegamos el editor VBA e insertaremos el mdulo que nos va a permitir crear nuestra tabla dinmica. Comenzamos insertando un mdulo al que he llamado CrearTD() en referencia a TablaDinmica. Declaramos una variable para cada uno de los objetos con los que vamos a trabajar:

WSD->nombre de nuestra hoja de clculo dinmica PTCache->nombre de la cach de la tabla dinmica PT->nombre de la tabla dinmica PRange->rango de datos FinalRow->fila final De esta forma cdeclaramos las variables: Dim WSD As Worksheet Dim PTCache As PivotCache Dim PT As PivotTable Dim PRange As Range Dim FinalRow As Long Asignamos una referencia de objeto a la hoja en al que va inserta la tabla dinmica a la que llamaremos Pivot Table. Set WSD = Worksheets(Pivot Table) Insertaremos a continuacin un bucle que nos elimina cualquier otra tabla dinmica que tengamos en nuestra hoja: For Each PT In WSD.PivotTables PT.TableRange2.Clear Next PT Necesitamos definir el rea de entrada de datos: FinalRow = WSD.Cells(65536, 1).End(xlUp).Row (guardo la posicin de la ltima fila con datos) Set PRange = WSD.Cells(1, 1).Resize(FinalRow, 8) (redimensionamos el rea desde la columna 1 a la 8) Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange.Address)aadimos los datos Set PT = PTCache.CreatePivotTable(TableDestination:=WSD.Range(J2), TableName:=PivotTable1) Con esta lnea creamos en s la tabla con destino en la columna J y con mombre PivotTable1. PT.ManualUpdate = True Establecemos la actualizacin a manual para evitar errores. Ahora necesitamos crear los nomres de campos en nuestra tabla. Para ello insertaremos las siguientes lneas: PT.AddFields RowFields:=Array(Producto, Cliente), ColumnFields:=Region Ordenamos los datos en el campo Ingresos calculando su total: With PT.PivotFields(Ingresos) .Orientation = xlDataField .Function = xlSum .Position = 1 End With Recalculamos todo: PT.ManualUpdate = False PT.ManualUpdate = True Dejamos seleccionada la hoja para el siguiente proyecto. WSD.Select Puede ver y descargar todo el cdigo junto aqu.
ARCHIVADO EN TABLAS DINMICAS

Tablas dinmicas y VBA


15 JULIO, 2011 DEJAR UN COMENTARIO

Las tablas dinmicas es una de las herramientas ms potentes que nos puede ofrecer Excel. Su finalidad es ofrecer un conciso resumen en pocos segundos de una gran cantidad de datos. Al objeto de poder adentrarnos en la programacin de pginas dinmicas, previamente detallar los pasos para crear una tabla dinmica en la interfaz de usuario. PASO 1 Vamos a descargarnos unos datos de internet para nuestro ejemplo. Recogeremos datos del Anuario del diario El Pas que contiene informacin estadstica y nos la proporcionan en formato de hoja de clculo Excel. Su direccin es: http://www.elpais.com/archivo/anuario/ Vamos a tomar como datos de partida los correspondientes al anuario de 2007. Luego seleccionamos Economa dentro del apartado Internacional. Llegamos a una pgina en la que descargamos la hoja de clculo correspondiente al apartado: Pases y territorios segn poblacin Nos tiene que salir un fichero xPoblamun.xls Nos centraremos en la Hoja3 que contiene informacin sobre: Los pases ms poblados del mundo 1995-2030 Disponemos de cuatro tablas con los 30 pases ms poblados en 1995, 2005, 2015 y 2030. Algunos datos son reales y otros previstos. Paso 2 Arreglamos un poco la tabla. Le colocamos ttulos a las cabeceras:

Paso 3 Lanzamos el asistente de Tablas Dinmicas: Datos>Informe de tablas y grficos dinmicos 1. 2. 3. Escogemos la tercera Rango de consolidacin mltiple en la primera ventana que aparece. Seleccionamos Crear un slo campo de pgina. En la siguiente ventana nos preguntan Dnde estn los rangos de hoja de clculo que desea consolidar?.

4. Vamos marcando cada rango y pulsando el botn Agregar, hasta tener incluidos los cuatro rangos correspondientes a las cuatro tablas. Escogemos B6 hasta C36,F7 hasta G36 y as sucesivamente. 5. Indicamos que deseamos el informe de tabla dinmica en una hoja de clculo nueva. 6. Como la columna F de total general no tiene sentido, la eliminamos. Para ello nos posicionamos en cualquier celda de la tabla dinmica. Vamos al cuadro de control de Tabla y desplegamos Tabla Dinmica>Opciones de tabla. Desmarcamos Totales generales de fila y Totales generales de columna.

Ambito de las variables


24 JULIO, 2011 DEJAR UN COMENTARIO

El mbito de una variable es el contexto dentro del que la variable est definida. Esto implica los sitios en donde dicha variable puede ser empleada y por tanto reconocida. Las variables globales o pblicas se pueden acceder en cualquier lugar de la pgina, mientras que las variables locales o privadas slo tienen validez dentro de la funcin donde han sido creadas. De modo que una variable global la podemos acceder dentro de cualquier parte del cdigo, mientras que si intentamos acceder a una variable local fuera de la funcin donde fue creada, nos encontraremos con que esa variable no tiene contenido alguno. Para entenderlo mejor vamos a realizar el siguiente ejemplo. Abra el editor e inserte el siguiente mdulo: Sub ejemplo3() variable local Dim pregunta As String pregunta = InputBox(Usuario?) Cells(1, 1) = pregunta End Sub El ejercicio nos pregunta que insertemos un nombre de usuario, que posteriormente se inserta en la celda A1. Hemos declarado la variable de forma local a nivel de mdulo o procedimiento. Si a continuacin insertramos otro mdulo exactamente igual pero sin la definicin de la variable nos dara lugar a un error: Sub ejemplo4() pregunta = InputBox(Usuario?) Cells(1, 1) = pregunta End Sub Por lo tanto para remediar esto y poder hacer uso de la variable que hemos definido a lo largo de todos los procedimientos del presente proyecto hemos de definir la variable con la palabra Public inmediatamente debajo de la frase Option Explicit: Option Explicit Public pregunta As String Hgalo y ejecute el cdigo anterior, ver que desaparece el error y funciona correctamente.
ARCHIVADO EN VARIABLES

Creando tipos definidos por el usuario


24 JULIO, 2011 DEJAR UN COMENTARIO

Con los tipos de variables ya comentados tenemos cubierto un amplio espectro suficiente para la mayora de situaciones que se pueden presentar. No obstante podemos establecer tipos de datos definidos por nosotros mismos. Esto nos facilita trabajar con elementos que estn relacionados en una misma estructura. Supongamos que nuestro programa trabaja con una cartera de valores. En este caso puede que nos interese trabajar con tipo de valor (acciones, bonos,obligaciones,),empresa emisora, ao de emisin o compra y valor de mercado. En ese caso definiramos los tipos de la siguiente forma: Dim tipovalor as Sring Dim empresaemisora as String Dim ao as Date Dim valormercado as Integer El problema se plateara si quisiramos trabajar con datos de varias empresas a la vez. Podramos definir varias variables para cada una de las empresas. Pero esto sera muy tedioso con lo que se hace mejor

definir un tipo de datos Valorempresa que guarde toda la informacin que precisemos. Para ello escribiriamos el cdigo que sigue a continuacin: Type Valorempresa tipovalor As String empresaemisora as String ao as Date valormercado as Integer End Type A partir de aqu podemos utilizar este tipo de datos como cualquier otro. Por ejemplo: Dim mivalor as Valorempresa mivalor.Valorempresa=Telefonica mivalor.tipovalor=Acciones mivalor.empresaemisora=Telefonica mivalor.ao=2010 mivalor.valormercado=8.75
ARCHIVADO EN VARIABLES

Los datos en VBA (variables y constantes)


21 JULIO, 2011 DEJAR UN COMENTARIO

Es corriente que en programacin precisemos trabajar con datos que necesitamos guardar en memoria, para poder emplearlos despus en nuestros mdulos o subrutinas. Estos datos pueden variar de una ocasin a otra, imaginemos el ejemplo de la funcin suma en la que precisamos guardar en dos variables los nmeros con los que deseamos operar. Para ello por lo tanto precisamos de las variables. Su empleo debe seguir unas reglas determinadas:

La denominacin de nuestra variable debe empezar con una letra y no con un nmero. No debe de tener ms de 250 caracteres. No puede emplearse las palabras reservadas para la sintxis de la propia Excel. Por ejmplo no podemos llamar a una variable con el nombre de WorkSheet etc. Debe de consistir en una cadena continua de caracteres. Por ejemplo no puedo emplear como nombre mi variable pero s mi_variable.

En VBA existen los siguientes tipos de variables, dependiendo del uso que vayamos darles:

Para establecer la declaracin de una variable antes de ser utilizada en el cdigo, se puede hacer en la ficha entorno del cuadro de dilogo opciones. Al activar la casilla Declaracin de las variables requerida, Visual Basic introduce la instruccin Option Explicit en la seccin de declaraciones de cada mdulo nuevo que se cree, no de los ya existentes donde hay que introducirlos manualmente. Esta instruccin obliga a declarar las variables antes de utilizarlas, lo que es muy recomendable.

La forma de declara una variable es a travs de la instruccin Dim. En la lnea se declara la variable de nombre Variable y al mismo tiempo Visual Basic guarda espacio en memoria para poder utilizarla. Veamos un ejemplo del uso de variables. Usaremos para el siguiente ejemplo un InputBox y un MsgBox , la primera son esas cajas de texto que nos permite introducir la informacin requerida por teclado. Ms adelante veremos con ms detalle su uso, por el momento analice el empleo de la misma en nuestro ejemplo: Sub ejemplo() Dim strNombre As String strNombre = InputBox(Cmo te llamas?, Saludos) MsgBox (Hola & strNombre) End Sub A continuacin insertaremos el siguiente mdulo, para analizar el uso correcto de variables: Sub ejemplo2() Dim numero1, numero2, producto As Integer Dim respuesta As String numero1 = InputBox(Introduzca el primer nmero, PRODUCTO) numero2 = InputBox(Introduzca el segundo nmero, PRODUCTO) producto = numero1 * numero2 respuesta = MsgBox(numero1 & X & numero2 & = & producto) End Sub Si introduce cualquier nmero entero le dar un resultado correcto, pero pruebe a introducir una letra, un nmero decimal o deje sin introducir un nmero. Observar que arroja un error. Esto es as porque hemos declarado variables de tipo entero, por tanto la variable resultado no espera que se introduzca letras o campos vacos. Analizaremos ms adelante como depurar el cdigo para que slo se introduzca nmeros o no se dejase la caja de texto vaca. Las constantes almacenan valores que, como su nombre indica, permanecen constantes durante la ejecucin de una aplicacin. La instruccin Const se utiliza para declarar una constante y establecer su valor. Al declarar una constante, puede asignar un nombre significativo a un valor. Una vez que se declara una constante, no se puede modificar ni se le puede asignar un nuevo valor.

Vamos con otra Luis!! Luis!. Necesitara, de ser posible, una macro que al colocar "OK" en I3, me copie lo que esta en J3 y me lo pegue nuevamente en J3 pero solamente los valores!!. Que es lo que quiero hacer??. LO que me me va a copiar (que es una fecha) la coloque en la celda nuevamente pero como si la estara poniendo a mano, osea, sin formula!! se entendio?? Gracias Luis!!

Experto

Hola Daniel esta es la solucin: Sub If Range("i3").Value Range("j3").Copy Range("j3").PasteSpecial Application.CutCopyMode End End Sub pegado() Then xlPasteValues False If

"ok"

un saludo
Usuario

Luis!! En donde la pego?? En un modulo o en una hoja. hay algo que no te aclare. Yo necesito que esta macro funcione sola, al colocar "ok" en la celda o en cada unas de las celdas. Osea, sin apretar ningn botn ni nada!!.

Yo coloco "ok" doy ENTER y se tiene que hacer la amcro!! sera posible o ya es mucho?? jua jua gracias!!

Experto

Entonces es un evento y lo colocas en la hoja en cuestin Este sera el evento change Private Sub Worksheet_Change(ByVal If Range("i3").Value = Range("j3").Copy Range("j3").PasteSpecial Application.CutCopyMode End End Sub Target "ok" As Range) Then

xlPasteValues False If

Inicio > Tecnologa e Internet > Software y aplicaciones > Microsoft Excel

Pregunta para Luis Mondelo: Macro para buscar y agrupar desde otra hoja del mismo libro excel.
Respuesta de luismondelo a andyur 18/04/2012 Usuario
Es una macro enviada por ti anteriormente. Slo Modifique algunos rangos de bsqueda Sub Application.ScreenUpdating Range("J11:L700").Clear Range("E1000").CurrentRegion.Sort Header:=xlYes, ordercustom:=1, busca_y_copia_VALORBUSCADO() = False key1:=Range("E1000"), order1:=xlAscending, MatchCase:=False, Orientation:=xlTopToBottom

valor = Range("C11").Value Set busca = ActiveSheet.Range("E1000:E" & Range("E10000").End(xlUp).Row).Find(valor, LookIn:=xlValues, lookat:=xlWhole) If Not busca Is Nothing Then ubica = busca.Address Range(ubica).Select fila = Range(ubica).Row contarsi = Application.WorksheetFunction.CountIf(Range("E1000:E" & Range("E10000").End(xlUp).Row), valor) Range(Cells(fila, 5), Cells(fila + contarsi 1, 7)).Copy ' Range("J11").PasteSpecial xlPasteAll End If Application.ScreenUpdating = True End Sub Pero necesito buscar los datos de los rangos E1000 : E10000 en otra hoja,. No s como hacerlo si pudieras ayudarme.. !!!
Anuncios Google

Real-time farm insight


Capture field activities easily. See all your records in one spot. www.conserviscorp.com

Experto
Hola, la pregunta es: particular? en qu hoja quieres buscarlo? en todas? en alguna en

Usuario
Hola. gracias por responder. Si tengo una hoja llamada Basedatos desde donde quiero obtener los datos de bsqueda. y llevarlos a Hoja1.Osea c11 de Hoja1( valor buscado) buscar todos los datos que coincidan en la hoja Basedatos(en este caso rangos E1000) y arrojar los datos en j11 Hoja1.

Esta macro esta hecha, pero en el supuesto de que todo los datos estn en la misma hoja. espero dejar mas clara mi pregunta y puedas ayudarme.

Experto
Prueba ahora con esta y me cuentas: Sub Sheets("hoja1").Select Application.ScreenUpdating Range("J11:L700").Clear busca_y_copia_VALORBUSCADO() = False

Sheets("basedatos").Select Range("E1000").CurrentRegion.Sort key1:=Range("E1000"), order1:=xlAscending, Header:=xlYes,ordercustom:=1, MatchCase:=False, Orientation:=xlTopToBottom valor =Sheets("hoja1").Range("C11").Value Set busca =ActiveSheet.Range("E1000:E" & Range("E10000").End(xlUp).Row).Find(valor, LookIn:=xlValues,lookat:=xlWhole) If Not busca Is Nothing Then ubica = busca.Address Range(ubica).Select fila = Range(ubica).Row contarsi =Application.WorksheetFunction.CountIf(Range("E1000:E" & Range("E10000").End(xlUp).Row), valor) Range(Cells(fila, 5), Cells(fila + contarsi 1, 7)).Copy Sheets("hoja1").Select Range("J11").PasteSpecial xlPasteAll End If Application.ScreenUpdating = True End Sub

Usuario
Luis. Me arroja un error 400, acepto y me lleva a la hoja basedatos. =/ ????

Experto
Acabo de probar la macro y funciona perfectamente. Solo queda que me enves tu archivo y lo pruebo yo. luismondelo@gmail.com

Usuario
Luis toda la razn. me faltaba colocar el cdigo en Thisworbook. lo tenia en la hoja 1. Funciona a la perfeccin era lo que quera.. Muchas gracias.. enseguida finalizo y punto. =)

You might also like