You are on page 1of 43

Variables _______________________________________________________________________ 0 Alcance y Visibilidad de las Variables ______________________________________________ 0

Vida de las variables:__________________________________________________________________ 0

Matrices de Parmetros __________________________________________________________ 0 Argumentos con Nombres y Opcionales _____________________________________________ 1 Objetos, Procedimiento, Mtodos y Eventos _________________________________________ 1 Bucles Mediante Cdigo __________________________________________________________ 2
Instrucciones Condicionales ___________________________________________________________ 3
Operadores de Comparacin _________________________________________________________________ 3 Instruccin Condicional If then else ______________________________________________________ 3 Ejecutar una sola instruccin cuando condicin es True ________________________________________ 3 Ejecutar varias instrucciones cuando condicin es True ________________________________________ 3 Ejecuta unas instrucciones cuando condicin es True y otras cuando es False. ____________________ 3 Comprobar una segunda condicin se la primera es False ______________________________________ 4

Visual Basic Para Aplicaciones


Instruccin Condicional Select Case ___________________________________________________________ 4

Instrucciones de Bucles ________________________________________________________________ 5


Instruccin de Bucle Do Loop ______________________________________________________________ 5 Repetir instrucciones mientras una condicin es True __________________________________________ 5 Repetir instrucciones hasta que una condicin llegue a ser True _________________________________ 5 Instruccin de salida de Do Loop desde dentro del bucle ____________________________________ 6 Instruccin de Bucle For Next ____________________________________________________________ 6 Repetir instrucciones con aumento de contador en 1 ___________________________________________ 6 Repetir instrucciones con aumento de contador personalizado __________________________________ 6 Repetir instrucciones con disminucin de contador ____________________________________________ 7 Instruccin de salida de un bucle ForNext __________________________________________________ 7 Instruccin de Bucle For Each Next _________________________________________________________ 7 Ejecucin para una coleccin de elementos ___________________________________________________ 7 Recorrido de los elementos de una matriz ____________________________________________________ 7

Instrucciones de Ejecucin sobre un mismo objeto _______________________________________ 8


Ejemplo 1:__________________________________________________________________________________ 8 Ejemplo 2:__________________________________________________________________________________ 8

Crear Procedimientos Recursivos __________________________________________________ 8 Variables de Objeto ______________________________________________________________ 9


Crear una Variable de Objeto __________________________________________________________ 9
Declarar la Variable _________________________________________________________________________ 9 Asignar la variable __________________________________________________________________________ 9

Declarar Constantes ____________________________________________________________ 10 Declarar Matrices _______________________________________________________________ 10


Matrices Variant _____________________________________________________________________ 11 Matrices con Mltiples Dimensiones __________________________________________________ 11 Matrices Dinmicas __________________________________________________________________ 11

Libros y Hojas de Clculo ________________________________________________________ 12


Crear un Libro _______________________________________________________________________ 12 Crear Hojas de Clculo _______________________________________________________________ 14 Eliminar Hojas de Clculo ____________________________________________________________ 14 Mover o Copiar Hojas de Clculo ______________________________________________________ 14 Activar una Hoja de Clculo __________________________________________________________ 15 Seleccionar Hojas de Clculo __________________________________________________________ 15

Ejemplo Caso 1: Ordenar las hojas de un libro ______________________________________ 17

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 1

Visual Basic Para Aplicaciones

Celdas y Rangos ________________________________________________________________ 18


Referencias a Celdas y Rangos ________________________________________________________ 18
Referencia mediante la propiedad Range del objeto WorkSheet ___________________________________ 18 Referencia mediante la Propiedad Cells del Objeto WorkSheet ___________________________________ 19 Referencia mediante un objeto Range _________________________________________________________ 19 Referencia mediante notacin abreviada ______________________________________________________ 20 Referencia mediante la relacin con otras celdas ________________________________________________ 20 Referencia a Varios Rangos __________________________________________________________________ 20

El Objeto Range _____________________________________________________________________ 21


Propiedades _______________________________________________________________________________ 21 Address ________________________________________________________________________________ 21 Column ________________________________________________________________________________ 22 Columns________________________________________________________________________________ 22 ColumnWidth ___________________________________________________________________________ 22 Row ___________________________________________________________________________________ 22 Rows ___________________________________________________________________________________ 22 RowHeight _____________________________________________________________________________ 23 Count __________________________________________________________________________________ 23 End ____________________________________________________________________________________ 23 Formula ________________________________________________________________________________ 24 Name __________________________________________________________________________________ 24 Value __________________________________________________________________________________ 24 Text ____________________________________________________________________________________ 24 WorkSheet ______________________________________________________________________________ 24 Characters ______________________________________________________________________________ 25 Mtodos __________________________________________________________________________________ 25 Clear ___________________________________________________________________________________ 25 ClearContents ___________________________________________________________________________ 25 ClearFormats ____________________________________________________________________________ 26 ColumnDifferences ______________________________________________________________________ 26 Copy ___________________________________________________________________________________ 26 Cut ____________________________________________________________________________________ 26 Delete __________________________________________________________________________________ 27 Insert __________________________________________________________________________________ 27 RowDifferences__________________________________________________________________________ 28 SpecialCells _____________________________________________________________________________ 28 Sort ____________________________________________________________________________________ 29

El Objeto Font _______________________________________________________________________ 30


Propiedades _______________________________________________________________________________ 31 Bold ___________________________________________________________________________________ 31 Italic ___________________________________________________________________________________ 31 Color ___________________________________________________________________________________ 31 ColorIndex ______________________________________________________________________________ 31

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 2

Visual Basic Para Aplicaciones


Size ____________________________________________________________________________________ 32

Procedimientos Function ________________________________________________________ 33 Funcin MsgBox ________________________________________________________________ 33 Funcin InputBox _______________________________________________________________ 36

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 3

Variables

Asignaciones de espacio en la memoria un que tipo guardan

especfico de datos. Los

Alcance y Visibilidad de las Variables


Hay tres niveles de alcance:
Nivel Procedimiento: Se declara dentro de un procedimiento mediante la instruccin Dim, y no es visible fuera de ese procedimiento. Nivel de Mdulo Privado: Se declara al inicio de un mdulo mediante la instruccin Private, y es visible para todos los procedimientos del mdulo pero no para otros mdulos. Nivel de Mdulos Pblicos: Se declara al inicio de un mdulo mediante la instruccin Public, y son visibles para todos los mdulos de un proyecto.

datos pueden ser de texto (String, Char), numricos (Integer, Long, Single, Double, Byte), boleanos (Bolean), de fecha (Date) o de objetos (Object). Tambin puede asignar espacio de memoria para un tipo de dato no especfico (Variant). Los nombres que se

Vida de las variables:


El tiempo durante el que una variable conserva su valor se conoce como vida. Cuando una variable pierde su alcance, ya no tiene ningn valor. Una variable declarada en un procedimiento pierde su valor al terminar este, si es declarada a nivel de mdulo mantiene su valor hasta que se termine de ejecutar el cdigo. Si se desea una variable a nivel de procedimiento puede mantener su valor mientras haya cdigo en ejecucin esto si se declara mediante la instruccin Static.

pueden asignar a una variable del pueden y estar los compuestos por las letras alfabeto nmeros. Pero no pueden iniciar por un nmero ni llevar espacios en blanco. Adems no es posible asignar a una variable un nombre palabra Cuando que sea una reservada asignamos el

(instruccin del lenguaje). nombre y el tipo a una variable se dice que la declaramos asignamos decimos inicializamos. y el que cuando valor la

Matrices de Parmetros
Una matriz de parmetros que se utiliza para pasar argumentos a un procedimiento. No es necesario saber el nmero de elementos de la matriz cuando se define. Para definirla se utiliza la instruccin ParamArray y debe ser del tipo Variant, adems debe ser el ltimo argumento en la definicin del procedimiento.
Sub Ejemplo(Nombre As String, ParamArray Punto() As Variant)

Visual Basic Para Aplicaciones . .


End sub

Argumentos con Nombres y Opcionales


Al llamar un procedimiento Sub o Function se puede utilizar dos mtodos:
Posicional: Se ingresa los argumentos en el orden en que aparecen en su definicin. Por Nombre: Se ingresa los argumentos con su nombre sin respetar ningn orden.

Sub Pasar (Nombre As String, Edad As Integer, Nacimiento As Date)

. . .
End Sub

Se llama
Pasar Mara, 29, #21-2-69# Pasar Edad:=29, Nacimiento:= #21-2-69#, Nombre:= Mara

Observar que al pasar los argumentos por nombre (Nominativo) hay que indicar el nombre con que fue definido seguido de := y el valor asignado. Cuando se define un procedimiento y se dese incluir argumentos opcionales de tal forma que al llamarse el procedimiento si no se indica el argumento opcional se utiliza el valor predefinido. Sub Ejemplo(Provincia As String, Optional Pais As String=Mxico)

Objetos, Procedimiento, Mtodos y Eventos


Un objeto representa un elemento de una aplicacin, como una hoja, una celda, un diagrama, un formulario, etc. Una coleccin es un objeto espacial que contiene varios objetos que normalmente son del mismo tipo. Por ejemplo el objeto WorkBooks contiene todos los objetos WorkBook abiertos. Los objetos de una coleccin se pueden identificar mediante su nombre o su nmero de ndice. Cierra el primer libro abierto
Sub CierraPrimero() WorkBooks(1).Close End Sub

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 1

Visual Basic Para Aplicaciones Cierra un formulario llamado MiForm


Sub CierraForm() Forms(MiForm.frm).Close End Sub

Cierra todos los formularios


Sub CierraTodo() Forms.Close End Sub

Un mtodo es toda accin que puede realizar un objeto. Por ejemplo, Add es mtodo del objeto ComboBox que sirve para aadir un nuevo elemento a un cuadro combinado.
Sub Nuevo(NuevoElemento As String) Combo1.Add NuevoElemento End Sub

Una propiedad es una atributo de un objeto que define una caracterstica del objeto, tal como color, tamao, visibilidad. Para da un valor a una propiedad se debe utilizar las sintaxis Objteto.Propiedad=Valor Cambia el ttulo a un formulario llamado MiForm
Sub Cambiar()

MiForm.Caption=Nuevo
End Sub

Hay propiedades de slo lectura o de slo escritura. Se puede obtener informacin de un objeto devolviendo el valor de una de sus propiedades. Obtiene el ttulo de la Form activa y lo muestra en un mensaje
Sub Nombre()

FormNombre=Screen.ActiveForm.Caption MsgBox FormNombre


End Sub

Un evento es toda accin que puede ser reconocida por un objeto, como el clic del mouse, para la que es posible escribir cdigo como respuesta.

Bucles Mediante Cdigo


Mediante el uso de las instrucciones de control es posible la toma de decisiones o el repetir determinadas acciones.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 2

Visual Basic Para Aplicaciones

Instrucciones Condicionales
Evala si una condicin es True o False y a continuacin especifican las instrucciones a ejecutar en funcin del resultado. Una condicin es una expresin que utiliza un operador de comparacin para comparar un valor o variable con otro.

Operadores de Comparacin

Smbolo > < <= >=

Significado Mayor que Menor que Menor o igual que Mayor o igual que

Smbolo = <>

Significado Igual a Diferente a

Instruccin Condicional If then else


Salta a una instruccin cuando una condicin es True o False.

Ejecutar una sola instruccin cuando condicin es True Compara si MiFecha es anterior a la fecha actual y de ser as le asigna a MiFecha la fecha actual.
Sub FijarFecha()

MiFecha=#13/2/95#
If MiFecha < Now then MiFecha= Now End Sub

Ejecutar varias instrucciones cuando condicin es True Determina si el valor de la variable Valor es cero y de ser as se aplica al objeto Aviso color rojo, negrita y cursiva
Sub AvisoU(Valor As Long) If Valor=0 then

Aviso.ForeColor=Red Aviso.Font.Bold=True Aviso.Font.Italic= True


End Sub

Ejecuta unas instrucciones cuando condicin es True y otras cuando es False. Determina si el valor de la variable Valor es cero y de ser as se aplica al objeto Aviso color rojo, negrita sino color negro sin negrita.
Sub AvisoU(Valor As Long) If Valor=0 then

Aviso.ForeColor= vbRed

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 3

Visual Basic Para Aplicaciones Aviso.Font.Bold= True


Else

Aviso.ForeColor= vbBlack Aviso.Font.Bold= False


End If End Sub

Comprobar una segunda condicin se la primera es False Define una funcin donde dependiendo del valor de Rendimiento se calcula la Bonificacin Function Bonificacin(Rendimiento as Integer, Salario as Currency) as Currency If Rendimiento=1 then Bonificacin=Salario * 0.1 ElseIf Rendimiento=2 then Bonificacin=Salario * 0.009 ElseIf Rendimiento=3 then Bonificacin=Salario * 0.07
Else

Bonificacin=Salario * 0.01
End Function

Instruccin Condicional Select Case


Selecciona una instruccin a ejecutar en funcin de un conjunto de condiciones.
Function Bonificacin(Rendimiento, Salario) Select Case Rendimiento Case 1

Valor de rendimiento es igual a 1

Bonificacin=Salario * 0.1 Case 2, 3 Valor de rendimiento es 2 3 Bonificacin=Salario * 0.009 Case 4 to 6 Valor de rendimiento entre 4 y 6 Bonificacin=Salario * 0.07 Case is > 8 Valor de rendimiento superior a 8 Bonificacin=100 Case Else Valor de rendimiento no se encuentra las opciones. Bonificacin=0
End Select End Function

Se puede utilizar expresiones mltiples o intervalos en cada clusula


Case 1 to 4, 7 to 9, 11,13, is > 20 Tambin puede especificar intervalos y expresiones mltiples para cadenas de caracteres. Case iguales a todos, nueces to ropa

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 4

Visual Basic Para Aplicaciones

Instrucciones de Bucles
Se repiten instrucciones un nmero determinado de veces o hasta que una condicin sea True o False.

Instruccin de Bucle Do Loop


Ejecuta un bloque de instrucciones un nmero indefinido de veces. Las instrucciones se repiten mientras una condicin sea True o hasta que llegue a ser True.

Repetir instrucciones mientras una condicin es True Hay dos formas de comprobar el estado de la condicin, se puede comprobar antes de entrar al bucle o despus que se haya ejecutado al menos una vez. Esto se realiza mediante la instruccin While (Mientras que).
Sub AlInicio()

Contador=0 MiNumero=20 Do While MiNumero > 10 MiNumero= MiNumero -1 Contador= Contador + 1


Loop

MsgBox El bucle se ha repetido & Contador & veces


End Sub Sub AlFinal()

Contador= 0 MiNumero= 20
Do

MiNumero= MiNumero -1 Contador= Contador +1 Loop While MiNumero >10 MsgBox El bucle se ha repetido & Contador & veces
End Sub

Repetir instrucciones hasta que una condicin llegue a ser True


Hay dos formas de comprobar el estado de la condicin, al inicio del bucle o al final de este. Esto se logra mediante la instruccin Until (Hasta que).

Sub AlInicio()

Contador= 0 MiNumero= 20 Do Until MiNumero = 10 Contador= Contador +1 MiNumero= MiNumero -1

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 5

Visual Basic Para Aplicaciones Loop


MsgBox El bucle se repiti & Contador & veces End Sub Sub AlFinal()

Contador= 0 MiNumero= 1
Do

MiNumero= MiNumero +1 Contador= Contador +1 Loop Until MiNumero = 10 MsgBox El bucle se repiti & Contador & veces
End Sub

Instruccin de salida de Do Loop desde dentro del bucle Para salir de un bucle sin haber terminado su ejecucin se utiliza la instruccin Exit Do.
Sub Salida()

Contador= 0 MiNumero= 9 Do Until MiNumero= 0 MiNumero= MiNumero -1 Contador= Contador + 1 If MiNumero < 10 then Exit Do
Loop End Sub

Instruccin de Bucle For Next Se utiliza para repetir un bloque de instrucciones un nmero determinado de veces. Esta instruccin utiliza una variable contador que se aumenta o disminuye cada vez que se ejecuta el bucle. Repetir instrucciones con aumento de contador en 1
Sub AumentoUno() For x = 1 to 50 Beep Next x No es necesario indicar x pero se realiza por claridad de cdigo End Sub

Repetir instrucciones con aumento de contador personalizado


Sub AumentoDos() For j= 2 to 10 Step 2

Aumenta el contador de 2 en 2

Total= Total + j

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 6

Visual Basic Para Aplicaciones


Next j MsgBox El Total es & Total End Sub

Repetir instrucciones con disminucin de contador


Sub DismiUno() For k= 16 to 2 Step -1

Total= Total + k
Next k MsgBox El Total es & Total End Sub

Instruccin de salida de un bucle ForNext Para salir de un bucle sin haber terminado su ejecucin se utiliza la instruccin Exit For.
Sub Salida() For Numero= 1 to 10

Total= Total + Numero If Numero > 5 then Exit For Next Numero MsgBox El Total es & Total
End Sub

Instruccin de Bucle For Each Next


Repite un bloque de instrucciones para cada uno de los objetos de una coleccin o para cada elemento de una matriz.

Ejecucin para una coleccin de elementos


Sub CierraForm() Cierra todos los formularios excepto el que est{ en ejecucin. For Each Formulario In Application.Forms If Formulario.Caption <> Screen.ActiveForm.Caption then Formulario.Close Next End Sub

Recorrido de los elementos de una matriz

Sub Recorre() Dim Prueba(10) As Integer, I as Variant

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 7

Visual Basic Para Aplicaciones


For Each I In Prueba

Prueba(I) = I
Next I End sub

Al igual que con un bucle ForNext la instruccin de salida se ejecuta con Exit For

Instrucciones de Ejecucin sobre un mismo objeto


Normalmente debe especificarse un objeto antes de poder ejecutar uno de sus mtodos o cambiar una de sus propiedades. Se utiliza la instruccin With para especificar un objeto una sola vez para una serie completa de instrucciones.

Ejemplo 1:
Introduce en un Rango de celda el nmero 30, aplicando negritas.
Sub RangoFormato() With WorkSheets(Hoja 1).Rango(A1:C10) .Value= 30 .Font.Bold= True End With End Sub

Ejemplo 2:
Inserta una formula en la celda A1 y selecciona el tipo de fuente.
Sub MiFormula() With WorkBooks(Libro1).WorkSheets(Hoja1).Cells(1,1) .Formula= =SQRT(50) With .Font .Name= Arial .Bold= True .Size= 8 End With End With End Sub

Crear Procedimientos Recursivos


Un procedimiento que se llama a si mismo se llama recursivo.
Function Factorial(N)

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 8

Visual Basic Para Aplicaciones


If N <= 1 then

Factorial= 1
Else

Factorial = Factorial(N-1) * N
End If End Function

Variables de Objeto
Son variables que hacen referencia a un objeto. Se pueden activar o devolver las propiedades del objeto o utilizar cualquiera de sus mtodos.

Crear una Variable de Objeto


Para crear una variable de objeto es necesarios realizar dos procedimiento:
Declarar la variable de objeto. Asignar la variable a un obejto.

Declarar la Variable
Se hace uso de las instrucciones de declaracin Dim, Public, Private o Static, asignando el tipo Viariant, Object o un tipo especfico de objeto.

Dim MiObjeto As Object Dim MiObjeto As Font Dim MiObjeto

Declara como tipo Objeto. Declara como tipo Font Declara como tipo Variant

El tipo predefinido para una variable de objeto es Variant pero se puede declarar una variable con el tipo Object cuando el tipo de objeto especfico no se conoce hasta que se ejecuta el procedimiento, pero si conoce el tipo de objeto a utilizar es ms recomendable declarar la variable bajo ese tipo, para mejorar el rendimiento del procedimiento.

Asignar la variable
Para asignar la variable se utiliza la instruccin Set. Es posible asignar una expresin de objeto o Nothing. Al asignar Nothing a una variable se deshace la relacin entre el objeto y la variable. Set MiObjeto= SuObjeto Set MiObjeto= Nothing Asigna a la variable Miobjeto es objeto SuObjeto Deshace la ralacin.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 9

Visual Basic Para Aplicaciones

Se puede efectuar al mismo tiempo la declaracin y la asignacin, esto mediante la instruccin New. Set MiObjeto= New Form Utilice la palabra Me para hacer referencia a la definicin actual del objeto donde se est ejecutando el cdigo. Todos los procedimientos asociados con el objeto actual tienen acceso al objeto al que se hace referencia como Me.
Sub CambiaColor(MiObjetoNombre As Object) Me.ColorFondo= RGB(Rnd*256,Rnd*256,Rnd*256) End Sub

Declarar Constantes
La instruccin Const se utiliza para declarar una constante y darle valor. Se puede declarar una constante dentro de un procedimiento o al principio de un mdulo. Public Const Edad As Integer = 34 Las constants pueden declararse como tipo Boolean, Byte, Integer, Long, Currency, Single, Double, Date, String o Variant. En una sola instruccin se pueden declarar varias constantes. Const Edad As Integer = 34, Salario As Currency = 35 000

Declarar Matrices
Se declaran igual que las dems variables, utilizando instrucciones Dim, Static, Private o Public, la diferencia est en que hay que normalmente especificar el tamao de la matriz. Una matriz con un tamao especificado es una matriz de tamao fijo. Una matriz cuyo tamao puede cambiar mientras el programa se est ejecutando es un matriz dinmica. Si una matriz se indexa desde 0 o desde 1 depende del valor de la instruccin Option Base. Si Option Base 1 no se especifica, todos los ndices de matrices comienzan en cero. Dim MiMatriz(9,7) As Integer Dim MiMatriz() As Integer Matriz entera de 10 filas y 8 columnas Matriz entera din{mica

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 10

Visual Basic Para Aplicaciones

Matrices Variant
Hay dos formas de crear matrices de valores Viariant:
Declarar una matriz como del tipo Variant
Dim VarDatos(2) As Variant

VarDatos(0)= Cristian VarDAtos(1)= 38 VarDatos(2)= Format(06-09-1952, Fecha General)


Asignar la matriz que devuelve la funcin Array a una variable Variant
Dim VarDatos As Variant VarDatos = Array(Cristian, 38, Format(06-09-1952, Fecha General))

Matrices con Mltiples Dimensiones


Se pueden declarar matrices con hasta 60 dimensiones.
Sub LlenaMatriz() Dim IntI As Integer, IntJ As Integer Dim MatrizMult( 1 to 5, 1 to 10) As Single For IntI= 1 to 5 For IntJ = 1 to 10

MatrizMult(IntI,IntJ) = IntI * IntJ


Debug.Print MatrizMult(IntI, IntJ) Next IntJ Next IntI End Sub

Matrices Dinmicas
Para definir una matriz dinmica se dejan los parntesis vacos. Dim MiMatriz() As Single La instruccin ReDim se utiliza para asignar o cambiar el tamao de una matriz dinmica declarados dentro del alcance de un procedimiento. Esta instruccin puede utilizarse repetidamente para cambiar el nmero de elementos y dimensiones de una matriz. Cada vez que se hace la redimensin se pierden los valores asignados en la matriz, si se desea conservar los datos se utiliza la clusula Preserve, n obstante si se redimensiona a un lmite de dimensin menor se perdern los datos sobrantes. Cuando se utiliza Preserve slo se puede cambiar el lmite superior de la ltima dimensin, no pudiendo modificar el nmero de dimensiones ni el lmite inferior.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 11

Visual Basic Para Aplicaciones

Dim MiMatriz() As Integer ReDim MiMatriz(5) ReDim MiMatriz(10) ReDim Preserve MiMatriz(20) ReDim MiMatriz(10,10) Redim Preserve MiMatriz(10,15)

Declara la matriz din{mica. Define la matriz en 5 elementos. Borra las entras y asigna 10 elementos. Asigna 10 elementos m{s sin borrar los anteriores. Borra las entradas y asigna dos dimensiones de 10. Conserva datos y asigna 5 elementos a una dimensin.

Libros y Hojas de Clculo


Crear un Libro
Para crear un libro se utiliza el mtodo Add de la coleccin WorkBooks que asigna un libro nuevo y le asigna el nombre Libro N dnde N es el nmero de libro disponible.
Sub AgregaLibro() WorkBooks.Add End Sub

Otra forma es asignar una variable de objeto al libro creado para as controlar con facilidad sus propiedades.
Sub AgregaLibro() Set LibroNuevo= WorkBooks.Add With LibroNuevo .Title= Ventas .Subject= Ventas Empresa .SaveAs FileName:= Ventas Totales.xls End With End Sub

La coleccin WorkBooks contiene todos los libros abiertos en Excel. Algunos de sus mtodos importantes son: .Add .Close Crea un libro nuevo. El libro nuevo se convierte en el libro activo. Cierra un objeto u objetos de la coleccin. Si se desea cerra un libro en especfico debe indicarse su nombre como parmetro en formato de cadena. Sub CierraLibro()

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 12

Visual Basic Para Aplicaciones


WorkBooks(Libro 1).Close End Sub

.Open

Abre un libro. Se debe especificar el nombre del libro Sub AbreLibro() WorkBooks.Open Libro 1
End Sub Sub AbreLibro() WorkBooks.Open(C:\Mis Documentos\Libro 1) End Sub

El objeto WorkBook representa un libro abierto en Excel. Presenta los siguientes mtodos: .Activate Activa la primera ventana asociada al libro.
Sub Activor() WorkBooks.(Libro 1).Activate End Sub Sub Activar() Set LibroActivo = WorkBooks(Libro1) LibroActivo.Activate End sub

Si tenemos un libro active podemos hacer referencia a l mediante la instruccin ActiveWorkBook. .Close Cierra el objeto y segn sus parmetros guarda el libro. .Close(SaveChanges, FileName, RouteWorkBook) SaveChanges = True/False indica si se guardan los cambios al cerrar el libro.Si no se ha guardado anteriormente y no se indica valor en FileName se pedir el nombre al usuario. FileName = Nombre con el cual se guardar el archivo. RouteWorkBook = Si no es necesario distribuir el libro se pasa por alto.
Sub CierraLibro() WorkBooks(Libro1).Close SaveChanges:= True, FileName:=H3 End Sub Sub CierraLibro() Set LibroCierre= WorkBooks(Libro1) LibroCierre.Close SaveChange:= True, FileName:= H3 End Sub

.Save

Guarda los cambios del libro especfico. Este mtodo se utiliza para guardar cambios no para guardar un libro por primera vez.
Sub GuardaTodos()

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 13

Visual Basic Para Aplicaciones


For Each Libro in Application.WorkBooks Libro.Save Next Libro End Sub

Crear Hojas de Clculo


La coleccin WorkSheets contiene todas las hojas de clculo abiertas en Excel. Cada objeto WorkSheet representa una hoja de clculo. Tambin se cuenta con la coleccin Sheets que contiene todas las hojas de un libro, tanto hojas de clculo como hojas grficas. Para crear una hoja nueva se utiliza el mtodo Add el cual cuenta con una serie de parmetros a tener en cuenta.
.Add (Before, After, Count, Type)

Before After Count Type

Objeto que especifica la hoja antes de la cual se agregar la hoja nueva. Objeto que especifica la hoja despus de la cual se agregar la hoja nueva. Nmero de hojas que se agregaran. El valor predeterminado es uno. Especfica el tipo de hoja. El valor predeterminado es xlWorkSheet.

Si se especifica Before no se puede especificar After y viceversa, adems si se omiten tanto Before como After la hoja se insertara antes de la hoja activa.
WorkSheets.Add Count:= 2, Before:= Sheets(1)

Eliminar Hojas de Clculo


Para eliminar una hoja de clculo se utiliza el mtodo Delete. WorkSheets(1).Delete Elimina la primera hoja del libro. WorkSheets(Hoja3) Elimina la hoja 3

Mover o Copiar Hojas de Clculo


Para mover una hoja en el libro se utiliza el mtodo Move. .Move(Before, After) Before Objeto que especfica la hoja antes de la cual se mover la hoja indicada.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 14

Visual Basic Para Aplicaciones After Objeto que especfica la hoja despus de la cual se mover la hoja indicada. Si se especfica Before no se puede especificar After y viceversa, adems si no se especfica ninguno de los dos, se crear un libro nuevo al que se mover la hoja. Mueve la Hoja 1 detr{s de la Hoja 3.
WorkSheets(Hoja 1).Move After:= WorkSheets(Hoja 3)

Para sacar una copia de una hoja se utiliza el mtodo .Copy. .Copy(Before, After) Before After Objeto que especfica la hoja antes de la cual se insertar la hoja indicada. Objeto que especfica la hoja despus de la cual se insertar la hoja indicada.

Si se especfica Before no se puede especificar After y viceversa, adems si no se especfica ninguno de los dos, se crear un libro nuevo con la copia Crea una copia de la Hoja1 y la coloca despus de la Hoja3
WorkSheets(Hoja1).Copy After:= WorkSheets(Hoja3)

Activar una Hoja de Clculo


Para determinar que una hoja de clculo sea la hoja activa se utiliza el mtodo Activate.
WorkSheets(Hoja1).Activate

Determina la Hoja1 como la hoja activa.

Debe tenerse presente que una hoja que se encuentre oculta no se puede determinar cmo hoja activa. Si una hoja de clculo se determina como activa, puede usar la instruccin ActiveSheet para hacer referencia a ella.

Seleccionar Hojas de Clculo


Para seleccionar una o varias hojas de clculo utilizamos el mtodo Select.
.Select(Replace)

Replace

True/False, si es True remplaza la seleccin actual por la nueva seleccin. False agrega a la seleccin actual la nueva seleccin.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 15

Visual Basic Para Aplicaciones

Sub SelecionarHojas() ActiveWorkBook.WorkSheets.Select End Sub

Selecciona todas las hojas

Sub SeleccionarHojas() AtiveWorkBookWorkSheets(Array(1,2)).Select

Selecciona las hoja 1 y 2

ActiveWorkBookWorkSheets(3).Select(False) Agrega a la seleccin la hoja 3 End Sub

Algunas propiedades a tener en cuenta del objeto WorkSheets son: .Count Devuelve un valor tipo Long que representa el nmero de hojas del libro. Hojas= WorkSheets.Count .Visible Devuelve o establece si el objeto es visible o no.
WorkSheets(Hoja1).Visible=False WorkSheets(Hoja1).Visible= True

Sub MostrarTodos() For Each Hoja In ActiveWorkBook.WorkSheets If Hoja.Visible= False then Hoja.Visible= True Else MsgBox Mostrando & Hoja.Name End If Next End Sub

Algunas propiedades importantes de tener en cuenta del objeto WorkSheet son: .Name Devuelve o establece un valor tipo String que representa el nombre del objeto.
ActiveWorkSheet.Name= Ventas

La siguiente macro crea una hoja nueva, la mueve al final y la llama Ventas

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 16

Visual Basic Para Aplicaciones


Sub CrearHoja() Dim HojaNueva As WorkSheet Set HojaNueva=WoorkSheets.Add(After:=Sheets(WorkSheets.Count)) HojaNueva.Name= Ventas End Sub

.Index

Devuelve un valor tipo Long que representa la posicin de la hoja en la coleccin WorkSheets. La siguiente macro solicita al usuario el nombre de una hoja y devuelve el nmero de posicin de la hoja en el libro.
Sub MostrarNumeroPosicion() Dim NombreHoja As String NombreHoja = InputBox("Digite el nombre de la hoja.") MsgBox "Se encuentra la posicin " & Sheets(NombreHoja).Index End Sub

Ejemplo Caso 1: Ordenar las hojas de un libro


El caso a resolver es ordenar las hojas de un libro en orden ascendente o descendente. Primera Opcin:
Sub OrdenarAscendentemente() Dim X As Integer, Y As Integer For X = 1 To Sheets.Count For Y = X To Sheets.Count If UCase(Worksheets(Y).Name) < UCase(Worksheets(X).Name) Then Worksheets(Y).Move Before:=Worksheets(X) End If Next Y Next X End Sub

Sub OrdenarDescendentemente() Dim X As Integer, Y As Integer For X = 1 To Sheets.Count For Y = X To Sheets.Count If UCase(Worksheets(Y).Name) > UCase(Worksheets(X).Name) Then Worksheets(Y).Move Before:=Worksheets(X) End If Next Y

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 17

Visual Basic Para Aplicaciones


Next X End Sub

Celdas y Rangos
Una tarea comn cuando se trabaja con macros es especificar una celda o un rango de datos para realizar una accin sobre ellas, como escribir una frmula o cambiar el formato. Esto se realiza en un a instruccin que identifica el rango como un objeto Range y, adems, cambia una propiedad o aplica un mtodo. Un objeto Range en Visual Basic puede ser una celda individual o un rango de celdas.

Referencias a Celdas y Rangos

Existen diversas formas de seleccionar celdas, mediante objetos Range y Cell.

Referencia mediante la propiedad Range del objeto WorkSheet


La propiedad Range del objeto WorkSheet devuelve un objeto Range que representa una celda o un rango de celdas.
Sub ActivaCelda() ActiveWorkBook.WorkSheets(Hoja1).Range(A2).Activate End Sub

Sub SelecionarCeldas() ActiveWorkBook.WorkSheets(Hoja1).Range(A1:B3).Select End Sub

Mediante la propiedad Range podemos hacer referencia a una celda especfica, un rango de celdas, una fila, una columna o un conjunto de reas en la hoja de clculo. La siguiente tabla muestra la forma en que se hace referencia a cada uno de los diferentes objetos mediante la propiedad Range

Referencia Range("A1") Range("A1:B5") Range("C5:D9;G9:H16")

Significado Celda A1 Celdas de la A1 a la B5 Seleccin de varias reas

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 18

Visual Basic Para Aplicaciones Range("A:A") Range("1:1") Range("A:C") Range("1:5") Range("1:1;3:3;8:8") Range("A:A;C:C;F:F") Columna A Fila 1 Columnas de la A a la C Filas de la 1 a la 5 Filas 1, 3 y 8 Columnas A, C y F

Referencia mediante la Propiedad Cells del Objeto WorkSheet


La propiedad Cells devuelve un objeto Range que representa una sola celda de un libro, la referencia es global y no se utiliza la notacin A1. .Cells(Fila,Columna)

Sub Activar() WorkSheets(Hoja1).Cells(5,1).Activate End Sub

La propiedad Cells funciona muy bien para ejecutar bucles en un rango de celdas, ya que puede sustituir las variables por los nmeros de ndice.
Sub RellenaValor() Dim Contador As Integer For Contador=1 to 20 WorkSheets(Hoja1).Cells(Contador,3).Value=Contador Next Contador End Sub

Referencia mediante un objeto Range


Si se establece una variable de objeto para un objeto Range, puede manipularse fcilmente el rango utilizando el nombre de la variable, este procedimiento no crea un rango con nombre dentro de Excel, tan solo asigna un nombre dentro del procedimiento.
Sub Seleccionar() Dim MiRango As Range Set MiRango = WorkSheets(Hoja1).Range(A1:C5) MiRango.Select End Sub

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 19

Visual Basic Para Aplicaciones

Referencia mediante notacin abreviada


Puede utilizarse el estilo de referencia A1 o un rango con nombre entre parntesis cuadrados como mtodo abreviado para la propiedad Range. No es necesario escribir la palabra Range o utilizar comillas.
Sub Selecciona() WorkSheets(Hoja1).*A1:B5+.Select End Sub

Referencia mediante la relacin con otras celdas


Para hacer referencia a una celda en relacin a otras celdas se utiliza la propiedad OffSet. OffSet(Fila,Columna)

Sub Seleccionar() WorkSheets(Hoja1).Cells(2,2).OffSet(1,1).Select End Sub

Referencia a Varios Rangos


Usando el mtodo apropiado, puede hacer referencia fcilmente a varios rangos. Use los mtodos Range y Union para hacer referencia a cualquier grupo de rangos. Utilizando la propiedad Areas podemos hacer referencia al grupo de rangos seleccionados en una hoja de clculo. Mediante la propiedad Range se hace referencia a varios rangos insertando como parmetros los rangos separados por comas.
Sub SeleccionMultiple() WorkSheets(Hoja1).Range(A1:B2, C3:D5).Select End Sub

Podemos combinar varios rangos en un objeto Range utilizando el mtodo Union, indicando los rangos a unir separados por comas.
Sub RangoMultiple() Dim Rango1 As Range, Rango2 As Range, MultiRango As Range Set Rango1= WorkSheets(Hoja1).Range(A1:B3) Set Rango2= WorkSheets(Hoja1).Range(B4:C6) Set MultiRango= Union(Rango1, Rango2) MultiRango.Select End Sub

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 20

Visual Basic Para Aplicaciones Podemos utilizar la propiedad Areas para hacer referencia al rango o conjunto de rangos seleccionados en una seleccin de varias reas.
Sub RangoMultiple() Dim Rango1 As Range, Rango2 As Range, MultiRango As Range Set Rango1= WorkSheets(Hoja1).Range(A1:B3) Set Rango2= WorkSheets(Hoja1).Range(B4:C6) Set MultiRango= Union(Rango1, Rango2) MultiRango.Select MsgBox Cantidad de Rangos Seleccionados &MultiRango.Areas.Count End Sub

El Objeto Range
Representa una celda, una fila, una columna, una seleccin de celdas o ms bloques de celdas o rangos 3D.

Propiedades

Entre las propiedades ms importantes de tener en cuenta del objeto Range tenemos:

Address Esta propiedad devuelve un valor tipo String que representa la referencia del rango.
.Address(RowAbsolute,ColumnAbsolute,ReferenceStyle,External,RelativeTo) RowAbsolute True/False Si es True se devuelve la parte de la fila en forma de referencia absoluta. El valor predeterminado es True. True/False Si es True se devuelve la parte de la columna en forma de referencia absoluta. El valor predeterminado es True. Estilo de la referencia. El valor predeterminado es xlA1 (Referencia A1) y se puede indicar xlR1C1 (Referencia R1C1) True/False Si es True se devuelve una referencia externa. Si es False se devuelve una referencia local. El valor predeterminado es False. Si RowAbsolute y ColumnAbsolute tienen el valor False y ReferenceStyle es xlR1C1, se debe incluir un punto inicial para la referencia relativa. Este argumento es objeto Range que define el punto inicial de la referencia.

ColumnAbsolute

ReferenceStyle

External

RelativeTo

Sub Referencias() Set MiRango = WorkSheets(Hoja1).Cells(1,1)

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 21

Visual Basic Para Aplicaciones


MsgBox MiRango.Address() MsgBox MiRango.Address(RowAbsolute:= False) MsgBox MiRango.Address(ColumnAbsolute:= False) MsgBox MiRango.Address(ReferenceStyle:= xlR1C1) MsgBox MiRango.Address(ReferenceStyle:= xxlR1C1, RowAbsolute:=False, _ ColumnAbsolute:= False, RelativeTo:= WorkSheets(1).Cells(3,3)) End Sub

Column Devuelve el nmero de la primera columna de la primera rea del rango especificado como un Long.
Sub NmeroColumna() MsgBox Columna # &WorkSheets(Hoja1).Range(B6:C8).Column End Sub

Columns Devuelve un objeto Range que representa las columnas del rango especificado.
Sub ValorColumna() WorkSheets(Hoja1).Range(A1:D5).Columns(2).Value= 30 End Sub

ColumnWidth Devuelve o establece el ancho de las columnas del rango espacificado. Es tipo Variant.
Si todas las columnas del rango indicado tienen el mismo ancho ColumnWidth devuelve el valor del ancho, pero si las columnas tienen anchos diferentes, devuelve Null.
Sub FijarAncho() With WorkSheets(Hoja1).Columns(A) .ColumnWidth= .ColumnWidth*2 End With End Sub

Row
Devuelve el nmero de la primera fila del rango especificado. Es tipo Long.
Sub NumeroFila() MsgBox La Fila es &WorkSheets.Range(C3:F4).Row End Sub

Rows
Devuelve un objeto Range que representa las filas del rango especificado.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 22

Visual Basic Para Aplicaciones


Sub LlenaFila() WorkSheets(Hoja1).Range(D2:E10).Rows(2).Value= 20 End Sub

RowHeight Devuelve o establece el alto de todas las filas del rango especificado. Devuelve Null si todas las filas del rango especificado no tienen el mismo alto.
Sub EstableceAlto() With WorkSheets(Hoja1).Range(A1:C10).Rows(1) .RowHeight= RowHeight*2 End With End Sub

Count
Devuelve un valor tipo Long que representa el nmero de objetos de la coleccin.
Sub UltimaColumna() Dim MiRango as Range Set MiRango =WorkSheets(Hoja1).Range(A1:D3) MsgBox Ultima Columna es &MiRango.Columns(MiRango.Columns.Count).Column End Sub

End
Devuelve un objeto Range que representa la celda situada al final de la regin que contiene el rango espacificado. Equivale a presionar las teclas FIN+FLECHA ARRIBA, FIN+FLECHA ABAJO, FIN+FLECHA IQUIERDA, FIN+FLECHA DERECHA.
Sub SeleccionaFinalAbajo() WorkSheets(Hoja1).Range(B4).End(xlUp).Select End Sub

El parmetro de la propiedad es una de las siguientes constantes de Excel. xlDown xlToLeft xlToRight xlUp Hacia Abajo. Hacia la izquierda. Hacia la derecha. Hacia Arriba.

Sub SeleccionaRango() WorkSheets(Hoja1).Range(B4).Activate Range(B4,Range(B4).End(xlDown)).Select End Sub

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 23

Visual Basic Para Aplicaciones

Formula Devuelve o establece un valor de tipo Variant que representa la frmula del objeto en notacin de estilo A1. Si la celda contiene una constante esta propiedad la devolver, si est vaca devolver una cadena vaca. Si se define el valor o la frmula como una fecha, la celda automticamente tomar el formato de fecha corta. Si se trata de un rango, las celdas se llenarn con la frmula especificada.
Sub SumaRango() WorkSheets(1).Range(A1).Formula==Promedio(B3:C7) End Sub

Name
Devuelve o establece un valor tipo Variant que representa el nombre del objeto. Se utiliza est propiedad para nombrar rangos en una hoja de datos.
Sub NombrarRango() WorkSheets(1).Range(A5:A6).Name= RangoPrueba End Sub

Value
Devuelve o establece un valor de tipo Variant que representa el valor del rango especificado.
Sub DarValor() WorkSheets(Hoja1).Range(B7).Value= 5000 End Sub

Text
Devuelve el valor del objeto especificado como tipo String.
Sub DevuelveTexto() Dim Celda As Range Set Celda = WorkSheets(1).Range(C2) Celda.Value= 7000 Celda.NumberFormat= $#,##0_);($#,##0) MsgBox Celda.Value MsgBox Celda.Text End sub

WorkSheet Devuelve un objeto WorkSheet que representa la hoja de clculo que contiene el rango especificado.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 24

Visual Basic Para Aplicaciones


Sub NombreHoja() MsgBox El Nombre es &WorkSheets(1).Range(A1).WorkSheet.Name End Sub

Characters Devuelve un objeto Characters que representa un rango de caracteres dentro del texto del objeto. Puede usar el objeto Characters para dar formato a los caracteres de una cadena de texto.
Characters(Start, Length)

Primer carcter que se debe devolver. Si el argumento es 1 o no se Start especifica, la propiedad devuelve un rango de caracteres que empieza con el primer carcter. Nmero de caracteres que se deben devolver. Si no se especifica este Length argumento, la propiedad devuelve el resto de la cadena (todo lo que est despus del carcter Start). En este ejemplo se da formato de negrita al tercer carcter de la celda A1 de Hoja1.
With Worksheets("Hoja1").Range("A1") .Value = "abcdefg" .Characters(3, 1).Font.Bold = True End With

Mtodos

Clear
Borra todo el objeto. Elimina frmulas, valores y formatos del rango especificado.
Sub Borrador() ActiveSheet.Range(B7:B12).Clear End Sub

ClearContents Borra las formulas y valores del rango dejando intacto el formato.
Sub BorraValores() ActiveSheet.Range(B8:B12).ClearContents End Sub

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 25

Visual Basic Para Aplicaciones

ClearFormats Borra los formatos del rango especificado dejando frmulas y valores intactos.
Sub BorraFormato() ActiveSheet.Range(B8:B12).ClearFormats End Sub

ColumnDifferences Devuelve un objeto Range que representa todas las celdas cuyo contenido es diferente del de la celda de comparacin de cada columna.
.ColumnDifferences(Comparison) Comparison = Una sola celda que sirve de criterio de comparacin.
Sub ComparaColumna()

'Agregando datos para la comparacin Dim Datos(5) As String Worksheets(1).Activate For x = 0 To 5 Datos(x) = InputBox("Ingrese Dato de Texto") Next x For fila = 1 To 6 ActiveSheet.Range("A" & fila).Value = Datos(fila - 1)
Next fila Dim RangoComparado As Range Set RangoComparado = _ ActiveSheet.Columns("A").ColumnDifferences(Comparison:=ActiveSheet.Range("A1")) RangoComparado.Select End Sub

Copy
Copia el rango en rango especificado o en el portapapeles. .Copy(Destination) Destination= Rango en el que se copiar el rea especificada. Si no indica este parmetro el objeto se pega en Portapapeles.
Sub CopiaRango() WorkSheets(Hoja1).Range(A1:D4).Copy Destination:=WorkSheets(Hoja2).Range(E1) End Sub

Cut
Corta un rango y lo pega en el Portapapeles o en el destino especificado.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 26

Visual Basic Para Aplicaciones .Cut(Destination) Destination= Rango en el que se pegar el rea especificada. Si no indica este parmetro el objeto se pega en Portapapeles.
Sub CopiaRango() WorkSheets(Hoja1).Range(A1:D4).Cut Destination:=WorkSheets(Hoja2).Range(E1) End Sub

El rango cortado debe estar compuesto por celdas adyacentes.

Delete Elimina el objeto.


.Delete(Shift) Shift= Especifica cmo se realiza el desplazamiento de las celdas al sustituir el rea borrada. xlShiftToLeft xlShiftUp Las celdas se desplazan hacia la izquierda Las celdas se desplazan hacia arriba.

Sub Borrar() WorkSheets(1).Range(A1:A2).Insert(xlShiftToLeft) End Sub

Insert
Inserta una celda o un rango de celdas en la hoja de clculo y desplaza las otras celdas para crear espacio. .Insert(Shift, CopyOrigin) Shift Especifica hacia qu lado se desplazarn las celdas. Puede ser una de las siguientes constantes xlShiftToRight XlShiftDown CopyOrigin Desplaza hacia la derecha Desplaza hacia abajo

Origen de la copia

Sub Insertar() WorkSheets(1).Range(A1:A2).Insert(xlShiftDown) End Sub

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 27

Visual Basic Para Aplicaciones

RowDifferences Devuelve un objeto Range que representa todas las celdas cuyo contenido es diferente del de la celda de comparacin de cada fila.
.RowDifferences(Comparison) Comparison = Una sola celda que sirve de criterio de comparacin.

Sub Comparacinfila() Set Filas= ActiveSheet.Rows(1).RowDifferences(Comparison:= ActiveSheet.Range(D1)) Filas.Select End Sub

SpecialCells Devuelve un objeto Range que representa todas las celdas que coinciden con el tipo y valor especificados.
.SpecialCells(Type,Value) Type Value Celdas que incluirn segn el tipo indicado. Este tipo debe ser xlCellType Si Type es xlCellTypeConstants o xlCellTypeFormulas, este argumento se utilizar para determinas los tipos de celdas que se incluirn en el resultado.

Los valores xlCellType que se pueden utilizar son Constantes XlCellType xlCellTypeAllFormatConditions. xlCellTypeAllValidation. xlCellTypeBlanks. xlCellTypeComments. xlCellTypeConstants. xlCellTypeFormulas. xlCellTypeLastCell. Valor Celdas con cualquier formato. Celdas con criterios de validacin. Celdas vacas. Celdas que contengan notas. Celdas que contengan constantes. Celdas que contengan frmulas. La ltima celda del rango.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 28

Visual Basic Para Aplicaciones

xlCellTypeSameFormatConditions. xlCellTypeSameValidation. xlCellTypeVisible.

Celdas que tengan el mismo formato. Celdas que tengan los mismos criterios de validacin. Todas las celdas visibles.

Sub UltimaCelda() WorkSheets(1).Activate ActivateSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate End sub

Sort
Ordena un rango de valores. .Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3) Todos los parmetros son opcionales y Key1, Key2, Key3 se utilizan si se desean varios niveles de ordenacin. Nombre Key1 Descripcin Especifica el primer campo de ordenacin, ya sea como nombre de rango (cadena) u objeto Range; determina los valores que se deben ordenar. Order1 Determina el criterio de ordenacin para los valores especificados en Key1. Debe ser un valor xlSortOrder Key2 Segundo campo de ordenacin; no se puede utilizar al ordenar tablas dinmicas. Type Especifica qu elementos se deben ordenar. Order2 Determina el criterio de ordenacin para los valores especificados en Key2. Debe ser un valor xlSortOrder Key3 Tercer campo de ordenacin; no se puede utilizar al ordenar tablas dinmicas. Order3 Determina el criterio de ordenacin para los valores especificados en Key3. Debe ser un valor xlSortOrder Header Especifica si la primera fila contiene informacin de encabezado. xlNo es el valor predeterminado; especifique xlGuess si desea que Excel intente determinar cul es el encabezado. OrderCustom Especifica un entero en base uno que constituye la posicin en la lista de criterios de ordenacin personalizados. MatchCase Se debe establecer en True para realizar una ordenacin que distinga entre

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 29

Visual Basic Para Aplicaciones maysculas y minsculas, o en False para no tener en cuenta las maysculas y minsculas al llevar a cabo la ordenacin; no se puede utilizar con tablas dinmicas. Especifica si la ordenacin debe realizarse en orden ascendente o descendente. Especifica el mtodo de ordenacin. Debe ser una dato xlSortMethod Especifica cmo se debe ordenar el texto del rango especificado en el parmetro Key1; no se aplica a la ordenacin de tablas dinmicas. Debe ser dato xlSortDataOption. Especifica cmo se debe ordenar el texto del rango especificado en el parmetro Key2; no se aplica a la ordenacin de tablas dinmicas. Debe ser un dato xlSortDataOption. Especifica cmo se debe ordenar el texto del rango especificado en el parmetro Key3; no se aplica a la ordenacin de tablas dinmicas. Debe ser dato xlSortDataOption.

Orientation SortMethod DataOption1

DataOption2

DataOption3

Valores xlSortOrder xlAscending 1 Ordena el campo especificado en sentido ascendente. ste es el valor predeterminado. xlDescending 2 Ordena el campo especificado en sentido descendente.

Valores xlSortOrientation xlSortColumns xlSortRows 1 2 Ordena por columnas. Ordena por filas. ste es el valor predeterminado.

Valores xlSortDataOption xlSortNormal 0 Predeterminado. Ordena por separado los datos numricos y el texto. xlSortTextAsNumbers 1 Trata el texto como datos numricos para la ordenacin.

Sub Ordenar () With Range(A1:Z45) .Sort Key1:=Range("G9"), Order1:=xlAscending, Header:=xlGuess .Sort Key1:=Range("F3"), Order1:=xlDescending, Header:=xlGuess .Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("B2"), _ Order2:=xlAscending, Key3:=Range("C2"), Order3:=xlAscending, Header:=xlGuess End With End Sub

El Objeto Font
Contiene los atributos de fuente (nombre, tamao, color, etc.) de un objeto. Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 30

Visual Basic Para Aplicaciones Si no desea dar el mismo formato a todo el texto contenido en una celda o un grfico, use la propiedad Characters para devolver un subconjunto del texto.

Propiedades

Bold
Devuelve o establece si la fuente est en negrita. Sus valores son True o False.

Italic
Devuelve o establece si la fuente est en cursiva. Sus valores son True o False.

Color
Devuelve o establece el color primario del objeto, tal como se muestra en la tabla. Use la funcin RGB para crear un valor de color. Variant de lectura y escritura. La propiedad Color tambin puede ser aplicada a diversos objetos: Objeto Border Color Color del borde. Color de los cuatro bordes de un rango. Si no son todos del mismo color, Color devuelve 0 (cero). Color de la fuente.

Borders

Font

Interior Color del sombreado de la celda o color de relleno del objeto de dibujo. Tab Color de la ficha.

ColorIndex Devuelve o establece un valor tipo Variant que determina el color de la fuente segn el ndice de colores que presenta el tema.
El valor de la propiedad se establece con un entero que representa el color en la paleta de colores o mediante una constante de tipo XlColorIndex. Nombre xlColorIndexAutomatic Descripcin Color automtico.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 31

Visual Basic Para Aplicaciones xlColorIndexNone Sin color.

Size
Devuelve o establece un valor tipo Variant que especfica el tamao de la fuente.

Funcin RGB se utiliza para determinar un color determinado. Su sintaxis es la siguiente: RGB(Rojo, Verde, Azul) Parte Rojo Descripcin Nmero en el intervalo de 0-255, ambos inclusive, que representa el componente rojo del color. Verde Nmero en el intervalo de 0-255, ambos inclusive, que representa el componente verde del color. Azul Nmero en el intervalo de 0-255, ambos inclusive, que representa el componente azul del color.

Algunas de las combinaciones utilizadas para los colores ms comunes son: Color Negro Azul Verde Cin Rojo Magenta Amarillo Blanco Valor de rojo 0 0 0 0 255 255 255 255 Valor de verde 0 0 255 255 0 0 255 255 Valor de azul 0 255 0 255 0 255 0 255

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 32

Visual Basic Para Aplicaciones

Procedimientos Function
Un procedimiento Function es una serie de instrucciones de Visual Basic encerradas entre dos instrucciones Function y End Function. Un procedimiento Function es similar a un procedimiento Sub, aunque una funcin puede devolver adems un valor. Un procedimiento Function acepta argumentos, como pueden ser constantes, variables o expresiones que le pasa el procedimiento que efecta la llamada. Si un procedimiento Function no tiene argumentos, la instruccin Function debe incluir un par de parntesis vacos. Una funcin devuelve un valor asignndolo a su nombre en una o ms instrucciones del procedimiento. En el siguiente ejemplo, la funcin Celsius calcula grados centgrados a partir de grados Fahrenheit. Cuando se llama a la funcin desde el procedimiento Principal, se le pasa una variable que contiene el valor del argumento. El resultado de los clculos se devuelve al procedimiento que efecto la llamada y se presenta en un cuadro de mensaje.
Sub Principal() temp = Application.InputBox(Texto:= _ "Por favor, introduzca la temperatura en grados F.", Tipo:=1) MsgBox "La temperatura es " & Celsius(temp) & " grados C." End Sub Function Celsius(GradosF) Celsius = (GradosF - 32) * 5 / 9 End Function

Funcin MsgBox
Muestra un mensaje en un cuadro de dilogo, espera a que el usuario haga clic en un botn y devuelve un tipo Integer correspondiente al botn elegido por el usuario. MsgBox(prompt[, buttons][, title][, helpfile, context]) La sintaxis de la funcin MsgBox consta de estos argumentos con nombre: prompt Requerido. Expresin de cadena que representa el prompt en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de ms de una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)) o un carcter de avance de lnea (Chr(10)), o una combinacin de caracteres de retorno de carro avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 33

Visual Basic Para Aplicaciones buttons Opcional. Expresin numrica que corresponde a la suma de los valores que especifican el nmero y el tipo de los botones que se pretenden mostrar, el estilo de icono que se va a utilizar, la identidad del botn predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0. title Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si se omite title, en la barra de ttulo se coloca el nombre de la aplicacin. helpfile Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de dilogo. Si se especifica helpfile, tambin se debe especificar context. context Opcional. Expresin numrica que es igual al nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, tambin se debe especificar helpfile. El argumento buttons tiene estos valores: Constante Valor Descripcin

VbOKOnly VbOKCancel

Constantes que determinan el tipo de botones a mostrar en el mensaje 0 Muestra solamente el botn Aceptar. 1 2 3 4 5 Muestra los botones Aceptar y Cancelar. Muestra los botones Anular, Reintentar e Ignorar. Muestra los botones S, No y Cancelar. Muestra los botones S y No. Muestra los botones Reintentar y Cancelar.

VbAbortRetryIgnore VbYesNoCancel VbYesNo VbRetryCancel

VbCritical VbQuestion VbExclamation VbInformation

Constantes que determinan el tipo de iconos a mostrar en el mensaje 16 Muestra el icono de mensaje crtico. 32 48 64 Muestra el icono de pregunta de advertencia. Muestra el icono de mensaje de advertencia. Muestra el icono de mensaje de informacin.

Constantes que determinan cul es el botn predeterminado

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 34

Visual Basic Para Aplicaciones VbDefaultButton1 VbDefaultButton2 VbDefaultButton3 VbDefaultButton4 0 256 512 768 El primer botn es el predeterminado. El segundo botn es el predeterminado. El tercer botn es el predeterminado. El cuarto botn es el predeterminado.

Constantes que determinan la modalidad del cuadro de dilogo Aplicacin modal; el usuario debe responder al VbApplicationModal 0 cuadro de mensajes antes de poder seguir trabajando en la aplicacin actual. Sistema VbSystemModal 4096 modal; se suspenden todas las

aplicaciones hasta que el usuario responda al cuadro de mensajes.

Constantes que determinan caractersticas especiales del cuadro de mensaje VbMsgBoxHelpButton 16384 Agrega el botn Ayuda al cuadro de mensaje. VbMsgBoxSetForeground VbMsgBoxRight VbMsgBoxRtlReading 65536 524288 1048576 Especifica la ventana del cuadro de mensaje como la ventana de primer plano. El texto se alnea a la derecha. Especifica que el texto debe aparecer para ser ledo de derecha a izquierda en sistemas hebreo y rabe.

Valores devueltos por MsgBox Constante vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Valor 1 2 3 4 5 6 7 Descripcin Aceptar Cancelar Anular Reintentar Ignorar S No

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 35

Visual Basic Para Aplicaciones Si desea especificar ms que el primer argumento con nombre, debe utilizar MsgBox en una expresin. Si desea omitir algn argumento de posicin, debe incluir el delimitador de coma correspondiente. En este ejemplo se utiliza la funcin MsgBox para mostrar un mensaje de error crtico en un cuadro de dilogo con botones S y No. El botn No se considera la respuesta predeterminada. El valor devuelto por la funcin MsgBox depende del botn elegido por el usuario. En este ejemplo, se supone que DEMO.HLP es un archivo de Ayuda que contiene un tema con un nmero de contexto igual a 1000.

Dim Mensaje, Estilo, Ttulo, Ayuda, Ctxt, Respuesta, MiCadena

Mensaje = "Desea continuar?" Estilo = vbYesNo + vbCritical + vbDefaultButton2 Ttulo = "Demostracin de MsgBox" Ayuda = "DEMO.HLP" Ctxt = 1000

' Define el mensaje. ' Define los botones. ' Define el ttulo. ' Define el archivo de ayuda. ' Define el tema ' el contexto ' Muestra el mensaje.

Respuesta = MsgBox(Mensaje, Estilo, Ttulo, Ayuda, Ctxt) If Respuesta = vbYes Then ' El usuario eligi el botn S. MiCadena = "S" ' Ejecuta una accin. Else ' El usuario eligi el botn No. MiCadena = "No" ' Ejecuta una accin.
End If

Funcin InputBox
Muestra un mensaje en un cuadro de dilogo, espera que el usuario escriba un texto o haga clic en un botn y devuelve un tipo String con el contenido del cuadro de texto. InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context]) La sintaxis de la funcin InputBox consta de estos argumentos con nombre: Parte prompt Descripcin Requerido. Expresin de cadena que se muestra como mensaje en el cuadro de dilogo. La longitud mxima de prompt es de aproximadamente 1024 caracteres, segn el ancho de los caracteres utilizados. Si prompt consta de

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 36

Visual Basic Para Aplicaciones ms de una lnea, puede separarlos utilizando un carcter de retorno de carro (Chr(13)), un carcter de avance de lnea (Chr(10)) o una combinacin de los caracteres de retorno de carro-avance de lnea (Chr(13) y Chr(10)) entre cada lnea y la siguiente. title Opcional. Expresin de cadena que se muestra en la barra de ttulo del cuadro de dilogo. Si omite title, en la barra de ttulo se coloca el nombre de la aplicacin. default Opcional. Expresin de cadena que se muestra en el cuadro de texto como respuesta predeterminada cuando no se suministra una cadena. Si omite default, se muestra el cuadro de texto vaco. xpos Opcional. Expresin numrica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo del cuadro de dilogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de dilogo se centra horizontalmente. ypos Opcional. Expresin numrica que especifica, en twips, la distancia en sentido vertical entre el borde superior del cuadro de dilogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de dilogo se coloca a aproximadamente un tercio de la altura de la pantalla, desde el borde superior de la misma. helpfile Opcional. Expresin de cadena que identifica el archivo de Ayuda que se utilizar para proporcionar ayuda interactiva para el cuadro de dilogo. Si se especifica helpfile, tambin deber especificarse context. context Opcional. Expresin numrica que es el nmero de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, tambin deber especificarse helpfile.

Si desea especificar ms que el primer argumento con nombre, debe utilizar InputBox en una expresin. Si desea omitir algunos argumentos de posicin, debe incluir el delimitador de coma correspondiente. En este ejemplo se muestran distintas maneras de utilizar la funcin InputBox para indicar al usuario que debe introducir un valor. Si se omiten las posiciones x e y, el dilogo se centra automticamente segn los ejes respectivos. La variable MyValue contiene el valor introducido por el usuario, si ste hace clic sobre Aceptar o presiona ENTER. Si el usuario hace clic sobre Cancelar, se devuelve una cadena de caracteres de longitud cero.

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 37

Visual Basic Para Aplicaciones


Dim Mensaje, Ttulo, ValorPred, MiValor

Mensaje = " Introduzca un nmero del 1 a 3" Ttulo = "Demostracin de InputBox" ValorPred = "1"

' Establece el mensaje. ' Establece el ttulo. ' Establece el valor predeterminado.

' Muestra el mensaje, el ttulo, y el valor predeterminado. MiValor = InputBox(Mensaje, Ttulo, ValorPred)

' Muestra el mensaje, el ttulo y el valor predeterminado. MiValor = InputBox(Mensaje, Ttulo, , , , "DEMO.HLP", 10)

' Se muestra el dilogo en la posicin 100, 100. MiValor = InputBox(Mensaje, Ttulo, ValorPred, 100, 100)

Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 38

You might also like