Visual Basic Para Aplicaciones

48
Variables__________________________________________________________________________________________0 Alcance y Visibilidad de las Variables__________________________________________________________0 Vida de las variables:__________________________________________________0 Matrices de Parámetros_________________________________________________________________________0 Argumentos con Nombres y Opcionales_______________________________________________________1 Objetos, Procedimiento, Métodos y Eventos__________________________________________________1 Bucles Mediante Código_________________________________________________________________________3 Instrucciones Condicionales_____________________________________________3 Operadores de Comparación____________________________________________________3 Instrucción Condicional If … then … else_____________________________________3 Ejecutar una sola instrucción cuando condición es True______________________3 Ejecutar varias instrucciones cuando condición es True______________________3 Ejecuta unas instrucciones cuando condición es True y otras cuando es False. ____________________________________________________________________________4

Transcript of Visual Basic Para Aplicaciones

Page 1: Visual Basic Para Aplicaciones

Variables______________________________________________________________________0

Alcance y Visibilidad de las Variables_______________________________________0

Vida de las variables:______________________________________________________________0

Matrices de Parámetros______________________________________________________0

Argumentos con Nombres y Opcionales_____________________________________1

Objetos, Procedimiento, Métodos y Eventos________________________________1

Bucles Mediante Código_____________________________________________________3

Instrucciones Condicionales______________________________________________________3Operadores de Comparación________________________________________________________________3Instrucción Condicional If … then … else____________________________________________________3

Ejecutar una sola instrucción cuando condición es True___________________________________3Ejecutar varias instrucciones cuando condición es True___________________________________3Ejecuta unas instrucciones cuando condición es True y otras cuando es False.____________4Comprobar una segunda condición se la primera es False________________________________4

Instrucción Condicional Select Case________________________________________________________4

Instrucciones de Bucles___________________________________________________________5

Page 2: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Instrucción de Bucle Do … Loop____________________________________________________________5Repetir instrucciones mientras una condición es True_____________________________________5Repetir instrucciones hasta que una condición llegue a ser True__________________________6Instrucción de salida de Do … Loop desde dentro del bucle_______________________________6Instrucción de Bucle For … Next__________________________________________________________6Repetir instrucciones con aumento de contador en 1_____________________________________7Repetir instrucciones con aumento de contador personalizado____________________________7Repetir instrucciones con disminución de contador_______________________________________7Instrucción de salida de un bucle For…Next______________________________________________7

Instrucción de Bucle For Each … Next_______________________________________________________7Ejecución para una colección de elementos_______________________________________________7Recorrido de los elementos de una matriz________________________________________________8

Instrucciones de Ejecución sobre un mismo objeto______________________________8Ejemplo 1:__________________________________________________________________________________8Ejemplo 2:__________________________________________________________________________________8

Crear Procedimientos Recursivos___________________________________________9

Variables de Objeto___________________________________________________________9

Crear una Variable de Objeto_____________________________________________________9Declarar la Variable________________________________________________________________________9Asignar la variable________________________________________________________________________10

Declarar Constantes________________________________________________________10

Declarar Matrices___________________________________________________________10

Matrices Variant__________________________________________________________________11

Matrices con Múltiples Dimensiones____________________________________________11

Matrices Dinámicas______________________________________________________________11

Libros y Hojas de Cálculo___________________________________________________12

Crear un Libro____________________________________________________________________12

Crear Hojas de Cálculo___________________________________________________________14

Eliminar Hojas de Cálculo________________________________________________________14

Mover o Copiar Hojas de Cálculo________________________________________________15

Activar una Hoja de Cálculo______________________________________________________15

Seleccionar Hojas de Cálculo____________________________________________________15

Ejemplo Caso 1: Ordenar las hojas de un libro____________________________17

Celdas y Rangos_____________________________________________________________18

Referencias a Celdas y Rangos__________________________________________________18Referencia mediante la propiedad Range del objeto WorkSheet___________________________18Referencia mediante la Propiedad Cells del Objeto WorkSheet____________________________19Referencia mediante un objeto Range_____________________________________________________19Referencia mediante notación abreviada__________________________________________________20Referencia mediante la relación con otras celdas__________________________________________20Referencia a Varios Rangos_______________________________________________________________20

Celdas y Rangos

Page 3: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

El Objeto Range___________________________________________________________________21Propiedades_______________________________________________________________________________21

Address_________________________________________________________________________________21Column_________________________________________________________________________________22Columns________________________________________________________________________________22ColumnWidth___________________________________________________________________________22Row_____________________________________________________________________________________22Rows____________________________________________________________________________________22RowHeight______________________________________________________________________________23Count___________________________________________________________________________________23End_____________________________________________________________________________________23Formula_________________________________________________________________________________24Name___________________________________________________________________________________24Value____________________________________________________________________________________24Text_____________________________________________________________________________________24WorkSheet______________________________________________________________________________24Characters______________________________________________________________________________25

Métodos___________________________________________________________________________________25Clear____________________________________________________________________________________25ClearContents___________________________________________________________________________25ClearFormats___________________________________________________________________________26ColumnDifferences______________________________________________________________________26Copy____________________________________________________________________________________26Cut______________________________________________________________________________________26Delete___________________________________________________________________________________27Insert___________________________________________________________________________________27RowDifferences_________________________________________________________________________28SpecialCells_____________________________________________________________________________28Sort_____________________________________________________________________________________29

El Objeto Font_____________________________________________________________________30Propiedades_______________________________________________________________________________31

Bold_____________________________________________________________________________________31Italic____________________________________________________________________________________31Color____________________________________________________________________________________31ColorIndex______________________________________________________________________________31Size_____________________________________________________________________________________32

Procedimientos Function___________________________________________________33

Función MsgBox_____________________________________________________________33

Función InputBox___________________________________________________________36

Celdas y Rangos

Page 4: Visual Basic Para Aplicaciones

Visual Basic Para AplicacionesAlcance y Visibilidad de las VariablesHay tres niveles de alcance:

Nivel Procedimiento : Se declara dentro de un procedimiento mediante la instrucción Dim, y no es visible fuera de ese procedimiento.

Nivel de Módulo Privado : Se declara al inicio de un módulo mediante la instrucción Private, y es visible para todos los procedimientos del módulo pero no para otros módulos.

Nivel de Módulos Públicos : Se declara al inicio de un módulo mediante la instrucción Public, y son visibles para todos los módulos de un proyecto.

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 ningún valor. Una variable declarada en un procedimiento pierde su valor al terminar este, si es declarada a nivel de módulo mantiene su valor hasta que se termine de ejecutar el código. Si se desea una variable a nivel de procedimiento puede mantener su valor mientras haya código en ejecución esto si se declara mediante la instrucción Static.

Matrices de ParámetrosUna matriz de parámetros que se utiliza para pasar argumentos a un

procedimiento. No es necesario saber el número de elementos de la matriz cuando se define. Para definirla se utiliza la instrucción ParamArray y debe ser del tipo Variant, además debe ser el último argumento en la definición del procedimiento.

Sub Ejemplo(Nombre As String, ParamArray Punto() As Variant)...

End sub

Argumentos con Nombres y OpcionalesAl llamar un procedimiento Sub o Function se puede utilizar dos métodos:

Posicional: Se ingresa los argumentos en el orden en que aparecen en su definición. Por Nombre: Se ingresa los argumentos con su nombre sin respetar ningún orden.

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

Page 5: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

.

.

End SubSe llama

Pasar “María”, 29, #21-2-69# Pasar Edad:=29, Nacimiento:= #21-2-69#, Nombre:= “María”

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=”México”)

Objetos, Procedimiento, Métodos y EventosUn objeto representa un elemento de una aplicación, como una hoja, una celda,

un diagrama, un formulario, etc. Una colección 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 colección se pueden identificar mediante su nombre o su número de índice.

‘Cierra el primer libro abierto

Sub CierraPrimero()WorkBooks(1).Close

End Sub‘Cierra un formulario llamado MiForm

Sub CierraForm()Forms(“MiForm.frm”).Close

End Sub

‘Cierra todos los formularios

Sub CierraTodo()Forms.Close

End Sub

Un método es toda acción que puede realizar un objeto. Por ejemplo, Add es método del objeto ComboBox que sirve para añadir un nuevo elemento a un cuadro combinado.

Sub Nuevo(NuevoElemento As String)

Celdas y Rangos

Page 6: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Combo1.Add NuevoElementoEnd Sub

Una propiedad es una atributo de un objeto que define una característica del objeto, tal como color, tamaño, visibilidad. Para da un valor a una propiedad se debe utilizar las sintaxis Objteto.Propiedad=Valor

‘Cambia el título a un formulario llamado MiForm

Sub Cambiar()MiForm.Caption=”Nuevo”

End Sub

Hay propiedades de sólo lectura o de sólo escritura. Se puede obtener información de un objeto devolviendo el valor de una de sus propiedades.

‘Obtiene el título de la Form activa y lo muestra en un mensaje

Sub Nombre()FormNombre=Screen.ActiveForm.CaptionMsgBox FormNombre

End Sub

Un evento es toda acción que puede ser reconocida por un objeto, como el clic del mouse, para la que es posible escribir código como respuesta.

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

Instrucciones Condicionales

Evalúa si una condición es True o False y a continuación especifican las instrucciones a ejecutar en función del resultado. Una condición es una expresión que utiliza un operador de comparación para comparar un valor o variable con otro.

Operadores de Comparación

Símbolo Significado Símbolo Significado> Mayor que = Igual a< Menor que <> Diferente a<= Menor o igual que>= Mayor o igual que

Instrucción Condicional If … then … else

Salta a una instrucción cuando una condición es True o False.

Celdas y Rangos

Page 7: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Ejecutar una sola instrucción cuando condición 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= NowEnd Sub

Ejecutar varias instrucciones cuando condición 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=TrueAviso.Font.Italic= True

End Sub

Ejecuta unas instrucciones cuando condición 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= vbRedAviso.Font.Bold= True

Else

Aviso.ForeColor= vbBlackAviso.Font.Bold= False

End If End Sub

Comprobar una segunda condición se la primera es False‘Define una función donde dependiendo del valor de Rendimiento se calcula la

BonificaciónFunction Bonificación(Rendimiento as Integer, Salario as Currency) as Currency

If Rendimiento=1 then

Bonificación=Salario * 0.1ElseIf Rendimiento=2 then

Bonificación=Salario * 0.009ElseIf Rendimiento=3 then

Bonificación=Salario * 0.07Else

Bonificación=Salario * 0.01End Function

Celdas y Rangos

Page 8: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Instrucción Condicional Select Case

Selecciona una instrucción a ejecutar en función de un conjunto de condiciones.

Function Bonificación(Rendimiento, Salario)Select Case Rendimiento

Case 1 ‘Valor de rendimiento es igual a 1Bonificación=Salario * 0.1

Case 2, 3 ‘Valor de rendimiento es 2 ó 3Bonificación=Salario * 0.009

Case 4 to 6 ‘Valor de rendimiento entre 4 y 6Bonificación=Salario * 0.07

Case is > 8 ‘Valor de rendimiento superior a 8Bonificación=100

Case Else ‘Valor de rendimiento no se encuentra las opciones.Bonificación=0

End Select End FunctionSe puede utilizar expresiones múltiples o intervalos en cada cláusula

Case 1 to 4, 7 to 9, 11,13, is > 20También puede especificar intervalos y expresiones múltiples para cadenas de

caracteres.

Case “iguales a todos”, “nueces” to “ropa”

Instrucciones de Bucles

Se repiten instrucciones un número determinado de veces o hasta que una condición sea True o False.

Instrucción de Bucle Do … Loop

Ejecuta un bloque de instrucciones un número indefinido de veces. Las instrucciones se repiten mientras una condición sea True o hasta que llegue a ser True.

Repetir instrucciones mientras una condición es True

Hay dos formas de comprobar el estado de la condición, se puede comprobar antes de entrar al bucle o después que se haya ejecutado al menos una vez. Esto se realiza mediante la instrucción While (Mientras que).

Sub AlInicio()Contador=0MiNumero=20Do While MiNumero > 10

MiNumero= MiNumero -1Contador= Contador + 1

Loop

MsgBox “El bucle se ha repetido ” & Contador & “ veces”End Sub

Sub AlFinal()

Celdas y Rangos

Page 9: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Contador= 0MiNumero= 20Do

MiNumero= MiNumero -1Contador= Contador +1

Loop While MiNumero >10MsgBox “El bucle se ha repetido ” & Contador & “ veces”

End Sub

Repetir instrucciones hasta que una condición llegue a ser True

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

Sub AlInicio()Contador= 0MiNumero= 20Do Until MiNumero = 10

Contador= Contador +1MiNumero= MiNumero -1

LoopMsgBox “El bucle se repitió “ & Contador & “ veces”

End Sub

Sub AlFinal()Contador= 0MiNumero= 1Do

MiNumero= MiNumero +1Contador= Contador +1

Loop Until MiNumero = 10MsgBox “El bucle se repitió “ & Contador & “ veces”

End Sub

Instrucción de salida de Do … Loop desde dentro del buclePara salir de un bucle sin haber terminado su ejecución se utiliza la instrucción

Exit Do.

Sub Salida()Contador= 0MiNumero= 9Do Until MiNumero= 0

MiNumero= MiNumero -1Contador= Contador + 1If MiNumero < 10 then Exit Do

LoopEnd Sub

Celdas y Rangos

Page 10: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Instrucción de Bucle For … Next

Se utiliza para repetir un bloque de instrucciones un número determinado de veces. Esta instrucción 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

BeepNext x ‘No es necesario indicar “x” pero se realiza por claridad de

códigoEnd 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 + jNext jMsgBox “El Total es “ & Total

End Sub

Repetir instrucciones con disminución de contador

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

Total= Total + kNext kMsgBox “El Total es “ & Total

End Sub

Instrucción de salida de un bucle For…NextPara salir de un bucle sin haber terminado su ejecución se utiliza la instrucción

Exit For.

Sub Salida()For Numero= 1 to 10

Total= Total + NumeroIf Numero > 5 then Exit For

Next NumeroMsgBox “El Total es “ & Total

End Sub

Instrucción de Bucle For Each … Next

Repite un bloque de instrucciones para cada uno de los objetos de una colección o para cada elemento de una matriz.

Celdas y Rangos

Page 11: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Ejecución para una colección de elementos

Sub CierraForm() ‘Cierra todos los formularios excepto el que está en ejecución.

For Each Formulario In Application.FormsIf Formulario.Caption <> Screen.ActiveForm.Caption then

Formulario.CloseNext

End Sub

Recorrido de los elementos de una matriz

Sub Recorre()Dim Prueba(10) As Integer, I as VariantFor Each I In Prueba

Prueba(I) = I

Next IEnd sub

Al igual que con un bucle For…Next la instrucción de salida se ejecuta con Exit For

Instrucciones de Ejecución sobre un mismo objeto

Normalmente debe especificarse un objeto antes de poder ejecutar uno de sus métodos o cambiar una de sus propiedades. Se utiliza la instrucción With para especificar un objeto una sola vez para una serie completa de instrucciones.

Ejemplo 1:

Introduce en un Rango de celda el número 30, aplicando negritas.

Sub RangoFormato()With WorkSheets(“Hoja 1”).Rango(“A1:C10”)

.Value= 30

.Font.Bold= TrueEnd 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)”

Celdas y Rangos

Page 12: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

With .Font.Name= “Arial”.Bold= True.Size= 8

End WithEnd With

End Sub

Crear Procedimientos Recursivos

Un procedimiento que se llama a si mismo se llama recursivo.

Function Factorial(N)If N <= 1 then

Factorial= 1

ElseFactorial = Factorial(N-1) * N

End IfEnd 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 métodos.

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 declaración Dim, Public, Private o Static, asignando el tipo Viariant, Object o un tipo específico de objeto.

Dim MiObjeto As Object ‘Declara como tipo Objeto.

Dim MiObjeto As Font ‘Declara como tipo Font

Dim MiObjeto ‘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 específico no se conoce hasta que se ejecuta el procedimiento, pero si conoce el tipo de objeto a utilizar

Celdas y Rangos

Page 13: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

es más recomendable declarar la variable bajo ese tipo, para mejorar el rendimiento del procedimiento.

Asignar la variable

Para asignar la variable se utiliza la instrucción Set. Es posible asignar una expresión de objeto o Nothing. Al asignar Nothing a una variable se deshace la relación entre el objeto y la variable.

Set MiObjeto= SuObjeto ‘Asigna a la variable Miobjeto es objeto SuObjeto

Set MiObjeto= Nothing ‘Deshace la ralación.

Se puede efectuar al mismo tiempo la declaración y la asignación, esto mediante la instrucción New.

Set MiObjeto= New Form

Utilice la palabra Me para hacer referencia a la definición actual del objeto donde se está ejecutando el código. 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 instrucción Const se utiliza para declarar una constante y darle valor. Se puede declarar una constante dentro de un procedimiento o al principio de un módulo.

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 instrucción se pueden declarar varias constantes.

Const Edad As Integer = 34, Salario As Currency = 35 000

Declarar Matrices

Se declaran igual que las demás variables, utilizando instrucciones Dim, Static, Private o Public, la diferencia está en que hay que normalmente especificar el tamaño de la matriz. Una matriz con un tamaño especificado es una matriz de tamaño fijo. Una

Celdas y Rangos

Page 14: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

matriz cuyo tamaño puede cambiar mientras el programa se está ejecutando es un matriz dinámica.

Si una matriz se indexa desde 0 o desde 1 depende del valor de la instrucción Option Base. Si Option Base 1 no se especifica, todos los índices de matrices comienzan en cero.

Dim MiMatriz(9,7) As Integer ‘Matriz entera de 10 filas y 8 columnas

Dim MiMatriz() As Integer ‘Matriz entera dinámica

Matrices Variant

Hay dos formas de crear matrices de valores Viariant:

Declarar una matriz como del tipo Variant

Dim VarDatos(2) As VariantVarDatos(0)= “Cristian”VarDAtos(1)= 38VarDatos(2)= Format(“06-09-1952”, “Fecha General”)

Asignar la matriz que devuelve la función Array a una variable Variant

Dim VarDatos As VariantVarDatos = Array(“Cristian”, 38, Format(“06-09-1952”, “Fecha

General”))

Matrices con Múltiples Dimensiones

Se pueden declarar matrices con hasta 60 dimensiones.

Sub LlenaMatriz()Dim IntI As Integer, IntJ As IntegerDim MatrizMult( 1 to 5, 1 to 10) As SingleFor IntI= 1 to 5

For IntJ = 1 to 10 MatrizMult(IntI,IntJ) = IntI * IntJDebug.Print MatrizMult(IntI, IntJ)

Next IntJNext IntI

End Sub

Matrices Dinámicas

Para definir una matriz dinámica se dejan los paréntesis vacíos.

Dim MiMatriz() As Single

La instrucción ReDim se utiliza para asignar o cambiar el tamaño de una matriz dinámica declarados dentro del alcance de un procedimiento. Esta instrucción puede utilizarse repetidamente para cambiar el número de elementos y dimensiones de una matriz.

Celdas y Rangos

Page 15: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Cada vez que se hace la redimensión se pierden los valores asignados en la matriz, si se desea conservar los datos se utiliza la cláusula Preserve, n obstante si se redimensiona a un límite de dimensión menor se perderán los datos sobrantes.

Cuando se utiliza Preserve sólo se puede cambiar el límite superior de la última dimensión, no pudiendo modificar el número de dimensiones ni el límite inferior.

Dim MiMatriz() As Integer ‘Declara la matriz dinámica.

ReDim MiMatriz(5) ‘Define la matriz en 5 elementos.

ReDim MiMatriz(10) ‘Borra las entras y asigna 10 elementos.

ReDim Preserve MiMatriz(20) ‘Asigna 10 elementos más sin borrar los anteriores.

ReDim MiMatriz(10,10) ‘Borra las entradas y asigna dos dimensiones de 10.

Redim Preserve MiMatriz(10,15) ‘Conserva datos y asigna 5 elementos a una dimensión.

Libros y Hojas de Cálculo

Crear un Libro

Para crear un libro se utiliza el método Add de la colección WorkBooks que asigna un libro nuevo y le asigna el nombre “Libro N” dónde N es el número de libro disponible.

Sub AgregaLibro()WorkBooks.Add

End SubOtra forma es asignar una variable de objeto al libro creado para así controlar

con facilidad sus propiedades.

Sub AgregaLibro()Set LibroNuevo= WorkBooks.AddWith LibroNuevo

.Title= “Ventas”

.Subject= “Ventas Empresa”

.SaveAs FileName:= “Ventas Totales.xls”End With

End Sub

La colección WorkBooks contiene todos los libros abiertos en Excel. Algunos de sus métodos importantes son:

Celdas y Rangos

Page 16: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

.Add Crea un libro nuevo. El libro nuevo se convierte en el libro activo.

.Close Cierra un objeto u objetos de la colección. Si se desea cerra un libro en específico debe indicarse su nombre como parámetro en formato de cadena. Sub CierraLibro() 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 métodos:

.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 subSi tenemos un libro active podemos hacer referencia a él mediante la instrucción ActiveWorkBook.

.Close Cierra el objeto y según sus parámetros 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 específico. Este método se utiliza para guardar cambios no para guardar un libro por primera vez.

Celdas y Rangos

Page 17: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Sub GuardaTodos() For Each Libro in Application.WorkBooks Libro.Save Next Libro End Sub

Crear Hojas de Cálculo

La colección WorkSheets contiene todas las hojas de cálculo abiertas en Excel. Cada objeto WorkSheet representa una hoja de cálculo. También se cuenta con la colección Sheets que contiene todas las hojas de un libro, tanto hojas de cálculo como hojas gráficas.

Para crear una hoja nueva se utiliza el método Add el cual cuenta con una serie de parámetros a tener en cuenta.

.Add (Before, After, Count, Type)

Before Objeto que especifica la hoja antes de la cual se agregará la hoja nueva.

After Objeto que especifica la hoja después de la cual se agregará la hoja nueva.

Count Número de hojas que se agregaran. El valor predeterminado es uno.

Type Específica el tipo de hoja. El valor predeterminado es xlWorkSheet.

Si se especifica Before no se puede especificar After y viceversa, además 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 Cálculo

Para eliminar una hoja de cálculo se utiliza el método Delete.WorkSheets(1).Delete ‘Elimina la primera hoja del libro.WorkSheets(“Hoja3”) ‘Elimina la hoja 3

Mover o Copiar Hojas de Cálculo

Para mover una hoja en el libro se utiliza el método Move.

.Move(Before, After)

Before Objeto que específica la hoja antes de la cual se moverá la hoja indicada.

After Objeto que específica la hoja después de la cual se moverá la hoja

Celdas y Rangos

Page 18: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

indicada.

Si se específica Before no se puede especificar After y viceversa, además si no se específica 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 método .Copy.

.Copy(Before, After)

Before Objeto que específica la hoja antes de la cual se insertará la hoja indicada.

After Objeto que específica la hoja después de la cual se insertará la hoja indicada.

Si se específica Before no se puede especificar After y viceversa, además si no se específica ninguno de los dos, se creará un libro nuevo con la copia

‘Crea una copia de la Hoja1 y la coloca después de la Hoja3

WorkSheets(“Hoja1”).Copy After:= WorkSheets(“Hoja3”)

Activar una Hoja de Cálculo

Para determinar que una hoja de cálculo sea la hoja activa se utiliza el método 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 cómo hoja activa.

Si una hoja de cálculo se determina como activa, puede usar la instrucción ActiveSheet para hacer referencia a ella.

Seleccionar Hojas de Cálculo

Para seleccionar una o varias hojas de cálculo utilizamos el método Select.

.Select(Replace)

Replace True/False, si es True remplaza la selección actual por la nueva selección. False agrega a la selección actual la nueva selección.

Celdas y Rangos

Page 19: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Sub SelecionarHojas()

ActiveWorkBook.WorkSheets.Select ‘Selecciona todas las hojas

End Sub

Sub SeleccionarHojas()

AtiveWorkBookWorkSheets(Array(1,2)).Select ‘Selecciona las hoja 1 y 2

ActiveWorkBookWorkSheets(3).Select(False) ‘Agrega a la selección la hoja 3

End Sub

Algunas propiedades a tener en cuenta del objeto WorkSheets son:

.Count Devuelve un valor tipo Long que representa el número 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 thenHoja.Visible= True

ElseMsgBox “Mostrando “ & Hoja.Name

End IfNextEnd 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” Sub CrearHoja() Dim HojaNueva As WorkSheet Set HojaNueva=WoorkSheets.Add(After:=Sheets(WorkSheets.Count)) HojaNueva.Name= “Ventas” End Sub

Celdas y Rangos

Page 20: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

.Index Devuelve un valor tipo Long que representa la posición de la hoja en la colección WorkSheets.

La siguiente macro solicita al usuario el nombre de una hoja y devuelve el número de posición de la hoja en el libro.

Sub MostrarNumeroPosicion() Dim NombreHoja As String NombreHoja = InputBox("Digite el nombre de la hoja.") MsgBox "Se encuentra la posición " & 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 Opción:

Sub OrdenarAscendentemente()Dim X As Integer, Y As IntegerFor X = 1 To Sheets.Count

For Y = X To Sheets.CountIf UCase(Worksheets(Y).Name) < UCase(Worksheets(X).Name) Then

Worksheets(Y).Move Before:=Worksheets(X) End IfNext Y

Next XEnd Sub

Sub OrdenarDescendentemente()Dim X As Integer, Y As IntegerFor X = 1 To Sheets.Count For Y = X To Sheets.Count

If UCase(Worksheets(Y).Name) > UCase(Worksheets(X).Name) ThenWorksheets(Y).Move Before:=Worksheets(X)

End If Next YNext X

End Sub

Celdas y Rangos

Una tarea común cuando se trabaja con macros es especificar una celda o un rango de datos para realizar una acción sobre ellas, como escribir una fórmula o cambiar el formato. Esto se realiza en un a instrucción que identifica el rango como un

Celdas y Rangos

Page 21: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

objeto Range y, además, cambia una propiedad o aplica un método. 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 específica, un rango de celdas, una fila, una columna o un conjunto de áreas en la hoja de cálculo.

La siguiente tabla muestra la forma en que se hace referencia a cada uno de los diferentes objetos mediante la propiedad Range

Referencia Significado

Range("A1") Celda A1Range("A1:B5") Celdas de la A1 a la B5Range("C5:D9;G9:H16") Selección de varias áreasRange("A:A") Columna ARange("1:1") Fila 1Range("A:C") Columnas de la A a la CRange("1:5") Filas de la 1 a la 5Range("1:1;3:3;8:8") Filas 1, 3 y 8Range("A:A;C:C;F:F") 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 notación A1.

.Cells(Fila,Columna)

Celdas y Rangos

Page 22: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

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 números de índice.

Sub RellenaValor()Dim Contador As IntegerFor Contador=1 to 20

WorkSheets(“Hoja1”).Cells(Contador,3).Value=ContadorNext Contador

End Sub

Referencia mediante un objeto Range

Si se establece una variable de objeto para un objeto Range, puede manipularse fácilmente 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 RangeSet MiRango = WorkSheets(“Hoja1”).Range(“A1:C5”)MiRango.Select

End Sub

Referencia mediante notación abreviada

Puede utilizarse el estilo de referencia A1 o un rango con nombre entre paréntesis cuadrados como método 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 relación con otras celdas

Para hacer referencia a una celda en relación a otras celdas se utiliza la propiedad OffSet.

OffSet(Fila,Columna)

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

End Sub

Celdas y Rangos

Page 23: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Referencia a Varios Rangos

Usando el método apropiado, puede hacer referencia fácilmente a varios rangos. Use los métodos 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 cálculo.

Mediante la propiedad Range se hace referencia a varios rangos insertando como parámetros 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 método Union, indicando los rangos a unir separados por comas.

Sub RangoMultiple()Dim Rango1 As Range, Rango2 As Range, MultiRango As RangeSet Rango1= WorkSheets(“Hoja1”).Range(“A1:B3”)Set Rango2= WorkSheets(“Hoja1”).Range(“B4:C6”)Set MultiRango= Union(Rango1, Rango2)MultiRango.Select

End Sub

Podemos utilizar la propiedad Areas para hacer referencia al rango o conjunto de rangos seleccionados en una selección de varias áreas.

Sub RangoMultiple()Dim Rango1 As Range, Rango2 As Range, MultiRango As RangeSet Rango1= WorkSheets(“Hoja1”).Range(“A1:B3”)Set Rango2= WorkSheets(“Hoja1”).Range(“B4:C6”)Set MultiRango= Union(Rango1, Rango2)MultiRango.SelectMsgBox “Cantidad de Rangos Seleccionados

“&MultiRango.Areas.CountEnd Sub

El Objeto Range

Representa una celda, una fila, una columna, una selección de celdas o más bloques de celdas o rangos 3D.

Propiedades

Entre las propiedades más importantes de tener en cuenta del objeto Range tenemos:

Celdas y Rangos

Page 24: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

AddressEsta 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.

ColumnAbsolute True/False Si es True se devuelve la parte de la columna en forma de referencia absoluta. El valor predeterminado es True.

ReferenceStyle Estilo de la referencia. El valor predeterminado es xlA1 (Referencia A1) y se puede indicar xlR1C1 (Referencia R1C1)

External True/False Si es True se devuelve una referencia externa. Si es False se devuelve una referencia local. El valor predeterminado es False.

RelativeTo 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.

Sub Referencias()Set MiRango = WorkSheets(“Hoja1”).Cells(1,1)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

ColumnDevuelve el número de la primera columna de la primera área del rango

especificado como un Long.

Sub NúmeroColumna()MsgBox “Columna #

“&WorkSheets(“Hoja1”).Range(“B6:C8”).ColumnEnd Sub

ColumnsDevuelve un objeto Range que representa las columnas del rango especificado.

Sub ValorColumna() WorkSheets(“Hoja1”).Range(“A1:D5”).Columns(2).Value= 30

Celdas y Rangos

Page 25: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

End Sub

ColumnWidthDevuelve 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*2End With

End Sub

RowDevuelve el número de la primera fila del rango especificado. Es tipo Long.

Sub NumeroFila()MsgBox “La Fila es “&WorkSheets.Range(“C3:F4”).Row

End Sub

RowsDevuelve un objeto Range que representa las filas del rango especificado.

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

End Sub

RowHeightDevuelve 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*2End With

End Sub

CountDevuelve un valor tipo Long que representa el número de objetos de la

colección.

Sub UltimaColumna()Dim MiRango as RangeSet MiRango =WorkSheets(“Hoja1”).Range(“A1:D3”)MsgBox “Ultima Columna es “&MiRango.Columns(MiRango.Columns.Count).Column

End Sub

Celdas y Rangos

Page 26: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

EndDevuelve un objeto Range que representa la celda situada al final de la región

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 parámetro de la propiedad es una de las siguientes constantes de Excel.

xlDown Hacia Abajo.

xlToLeft Hacia la izquierda.

xlToRight Hacia la derecha.

xlUp Hacia Arriba.Sub SeleccionaRango()

WorkSheets(“Hoja1”).Range(“B4”).ActivateRange(“B4”,Range(“B4”).End(xlDown)).Select

End Sub

FormulaDevuelve o establece un valor de tipo Variant que representa la fórmula del

objeto en notación de estilo A1. Si la celda contiene una constante esta propiedad la devolverá, si está vacía devolverá una cadena vacía. Si se define el valor o la fórmula como una fecha, la celda automáticamente tomará el formato de fecha corta. Si se trata de un rango, las celdas se llenarán con la fórmula especificada.

Sub SumaRango()WorkSheets(1).Range(“A1”).Formula=”=Promedio(B3:C7)”

End Sub

NameDevuelve 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

ValueDevuelve o establece un valor de tipo Variant que representa el valor del rango

especificado.

Sub DarValor()

Celdas y Rangos

Page 27: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

WorkSheets(“Hoja1”).Range(“B7”).Value= 5000End Sub

TextDevuelve el valor del objeto especificado como tipo String.

Sub DevuelveTexto()Dim Celda As RangeSet Celda = WorkSheets(1).Range(“C2”)Celda.Value= 7000Celda.NumberFormat= “$#,##0_);($#,##0)”MsgBox Celda.ValueMsgBox Celda.Text

End sub

WorkSheetDevuelve un objeto WorkSheet que representa la hoja de cálculo que contiene el

rango especificado.

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

End Sub

CharactersDevuelve 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)

StartPrimer carácter que se debe devolver. Si el argumento es 1 o no se especifica, la propiedad devuelve un rango de caracteres que empieza con el primer carácter.

Length

Número de caracteres que se deben devolver. Si no se especifica este argumento, la propiedad devuelve el resto de la cadena (todo lo que esté después del carácter Start).

En este ejemplo se da formato de negrita al tercer carácter de la celda A1 de Hoja1.

With Worksheets("Hoja1").Range("A1") .Value = "abcdefg" .Characters(3, 1).Font.Bold = TrueEnd With

Celdas y Rangos

Page 28: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Métodos

ClearBorra todo el objeto. Elimina fórmulas, valores y formatos del rango

especificado.

Sub Borrador()ActiveSheet.Range(“B7:B12”).Clear

End Sub

ClearContentsBorra las formulas y valores del rango dejando intacto el formato.

Sub BorraValores()ActiveSheet.Range(“B8:B12”).ClearContents

End Sub

ClearFormatsBorra los formatos del rango especificado dejando fórmulas y valores intactos.

Sub BorraFormato()ActiveSheet.Range(“B8:B12”).ClearFormats

End Sub

ColumnDifferencesDevuelve un objeto Range que representa todas las celdas cuyo contenido es

diferente del de la celda de comparación de cada columna.

.ColumnDifferences(Comparison)

Comparison = Una sola celda que sirve de criterio de comparación.

Sub ComparaColumna()'Agregando datos para la comparaciónDim Datos(5) As StringWorksheets(1).ActivateFor x = 0 To 5

Datos(x) = InputBox("Ingrese Dato de Texto")Next xFor fila = 1 To 6

ActiveSheet.Range("A" & fila).Value = Datos(fila - 1)Next filaDim RangoComparado As RangeSet RangoComparado = _

ActiveSheet.Columns("A").ColumnDifferences(Comparison:=ActiveSheet.Range("A1"))RangoComparado.Select

End Sub

Celdas y Rangos

Page 29: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

CopyCopia 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 parámetro el objeto se pega en Portapapeles.

Sub CopiaRango()WorkSheets(“Hoja1”).Range(“A1:D4”).Copy

Destination:=WorkSheets(“Hoja2”).Range(“E1”)End Sub

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

.Cut(Destination)

Destination= Rango en el que se pegará el área especificada. Si no indica este parámetro 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.

DeleteElimina el objeto.

.Delete(Shift)

Shift= Especifica cómo se realiza el desplazamiento de las celdas al sustituir el área borrada.

xlShiftToLeft Las celdas se desplazan hacia la izquierda

xlShiftUp Las celdas se desplazan hacia arriba.

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

End Sub

InsertInserta una celda o un rango de celdas en la hoja de cálculo y desplaza las otras

celdas para crear espacio.

.Insert(Shift, CopyOrigin)

Celdas y Rangos

Page 30: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Shift Especifica hacia qué lado se desplazarán las celdas. Puede ser una de las siguientes constantes

xlShiftToRight Desplaza hacia la derecha

XlShiftDown Desplaza hacia abajo

CopyOrigin Origen de la copia

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

End Sub

RowDifferencesDevuelve un objeto Range que representa todas las celdas cuyo contenido es

diferente del de la celda de comparación de cada fila.

.RowDifferences(Comparison)

Comparison = Una sola celda que sirve de criterio de comparación.

Sub Comparaciónfila() Set Filas= ActiveSheet.Rows(1).RowDifferences(Comparison:=

ActiveSheet.Range(“D1”)) Filas.Select

End Sub

SpecialCellsDevuelve un objeto Range que representa todas las celdas que coinciden con el

tipo y valor especificados.

.SpecialCells(Type,Value)

Type Celdas que incluirán según el tipo indicado. Este tipo debe ser xlCellType

Value Si Type es xlCellTypeConstants o xlCellTypeFormulas, este argumento se utilizará para determinas los tipos de celdas que se incluirán en el resultado.

Los valores xlCellType que se pueden utilizar son

Constantes XlCellType ValorxlCellTypeAllFormatConditions.

Celdas con cualquier formato.

xlCellTypeAllValidation. Celdas con criterios de validación.

Celdas y Rangos

Page 31: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

xlCellTypeBlanks. Celdas vacías.

xlCellTypeComments. Celdas que contengan notas.

xlCellTypeConstants. Celdas que contengan constantes.

xlCellTypeFormulas. Celdas que contengan fórmulas.

xlCellTypeLastCell. La última celda del rango.

xlCellTypeSameFormatConditions.

Celdas que tengan el mismo formato.

xlCellTypeSameValidation. Celdas que tengan los mismos criterios de validación.

xlCellTypeVisible. Todas las celdas visibles.

Sub UltimaCelda()WorkSheets(1).ActivateActivateSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate

End sub

SortOrdena un rango de valores.

.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

Todos los parámetros son opcionales y Key1, Key2, Key3 se utilizan si se desean varios niveles de ordenación.

Nombre DescripciónKey1 Especifica el primer campo de ordenación, ya sea como nombre de rango

(cadena) u objeto Range; determina los valores que se deben ordenar.Order1 Determina el criterio de ordenación para los valores especificados en

Key1. Debe ser un valor xlSortOrderKey2 Segundo campo de ordenación; no se puede utilizar al ordenar tablas

dinámicas.Type Especifica qué elementos se deben ordenar.Order2 Determina el criterio de ordenación para los valores especificados en

Key2. Debe ser un valor xlSortOrderKey3 Tercer campo de ordenación; no se puede utilizar al ordenar tablas

dinámicas.Order3 Determina el criterio de ordenación para los valores especificados en

Key3. Debe ser un valor xlSortOrderHeader Especifica si la primera fila contiene información de encabezado. xlNo es

Celdas y Rangos

Page 32: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

el valor predeterminado; especifique xlGuess si desea que Excel intente determinar cuál es el encabezado.

OrderCustom

Especifica un entero en base uno que constituye la posición en la lista de criterios de ordenación personalizados.

MatchCase Se debe establecer en True para realizar una ordenación que distinga entre mayúsculas y minúsculas, o en False para no tener en cuenta las mayúsculas y minúsculas al llevar a cabo la ordenación; no se puede utilizar con tablas dinámicas.

Orientation

Especifica si la ordenación debe realizarse en orden ascendente o descendente.

SortMethod

Especifica el método de ordenación. Debe ser una dato xlSortMethod

DataOption1

Especifica cómo se debe ordenar el texto del rango especificado en el parámetro Key1; no se aplica a la ordenación de tablas dinámicas. Debe ser dato xlSortDataOption.

DataOption2

Especifica cómo se debe ordenar el texto del rango especificado en el parámetro Key2; no se aplica a la ordenación de tablas dinámicas. Debe ser un dato xlSortDataOption.

DataOption3

Especifica cómo se debe ordenar el texto del rango especificado en el parámetro Key3; no se aplica a la ordenación de tablas dinámicas. Debe ser dato xlSortDataOption.

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 1 Ordena por columnas.xlSortRows 2 Ordena por filas. Éste es el valor predeterminado.

Valores xlSortDataOption

xlSortNormal 0 Predeterminado. Ordena por separado los datos numéricos y el texto.

xlSortTextAsNumbers

1 Trata el texto como datos numéricos para la ordenación.

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 WithEnd Sub

Celdas y Rangos

Page 33: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

El Objeto Font

Contiene los atributos de fuente (nombre, tamaño, color, etc.) de un objeto.

Si no desea dar el mismo formato a todo el texto contenido en una celda o un gráfico, use la propiedad Characters para devolver un subconjunto del texto.

Propiedades

BoldDevuelve o establece si la fuente está en negrita. Sus valores son True o False.

ItalicDevuelve o establece si la fuente está en cursiva. Sus valores son True o False.

ColorDevuelve o establece el color primario del objeto, tal como se muestra en la

tabla. Use la función RGB para crear un valor de color. Variant de lectura y escritura.

La propiedad Color también puede ser aplicada a diversos objetos:

Objeto Color

Border Color del borde.

Borders

Color de los cuatro bordes de un rango. Si no son todos del mismo color, Color devuelve 0 (cero).

Font Color de la fuente.

Interior

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

Tab Color de la ficha.

ColorIndexDevuelve o establece un valor tipo Variant que determina el color de la fuente

según 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 Descripción

xlColorIndexAutomatic Color automático.

Celdas y Rangos

Page 34: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

xlColorIndexNone Sin color.

SizeDevuelve o establece un valor tipo Variant que específica el tamaño de la fuente.

Función RGB se utiliza para determinar un color determinado. Su sintaxis es la siguiente:

RGB(Rojo, Verde, Azul)

Parte Descripción

Rojo Número en el intervalo de 0-255, ambos inclusive, que representa el componente rojo del color.

Verde Número en el intervalo de 0-255, ambos inclusive, que representa el componente verde del color.

Azul Número en el intervalo de 0-255, ambos inclusive, que representa el componente azul del color.

Algunas de las combinaciones utilizadas para los colores más comunes son:

Color Valor de rojo Valor de verde Valor de azul

Negro 0 0 0

Azul 0 0 255

Verde 0 255 0

Cián 0 255 255

Rojo 255 0 0

Magenta 255 0 255

Amarillo 255 255 0

Blanco 255 255 255

Celdas y Rangos

Page 35: Visual Basic Para Aplicaciones

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 función puede devolver además un valor. Un procedimiento Function acepta argumentos, como pueden ser constantes, variables o expresiones que le pasa el procedimiento que efectúa la llamada. Si un procedimiento Function no tiene argumentos, la instrucción Function debe incluir un par de paréntesis vacíos. Una función devuelve un valor asignándolo a su nombre en una o más instrucciones del procedimiento.

En el siguiente ejemplo, la función Celsius calcula grados centígrados a partir de grados Fahrenheit. Cuando se llama a la función desde el procedimiento Principal, se le pasa una variable que contiene el valor del argumento. El resultado de los cálculos se devuelve al procedimiento que efectúo 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 / 9End Function

Función MsgBox

Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve un tipo Integer correspondiente al botón elegido por el usuario.

MsgBox(prompt[, buttons][, title][, helpfile, context])

La sintaxis de la función MsgBox consta de estos argumentos con nombre:

prompt Requerido. Expresión de cadena que representa el prompt en el cuadro de diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los caracteres utilizados. Si prompt consta de más de una línea, puede separarlos utilizando un carácter de retorno de carro (Chr(13)) o un carácter de avance de línea (Chr(10)), o una combinación de caracteres de retorno de carro – avance de línea (Chr(13) y Chr(10)) entre cada línea y la siguiente.

buttons Opcional. Expresión numérica que corresponde a la suma de los valores que especifican el número y el tipo de los botones que se pretenden

Celdas y Rangos

Page 36: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

mostrar, el estilo de icono que se va a utilizar, la identidad del botón predeterminado y la modalidad del cuadro de mensajes. Si se omite este argumento, el valor predeterminado para buttons es 0.

title Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si se omite title, en la barra de título se coloca el nombre de la aplicación.

helpfile Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utiliza para proporcionar ayuda interactiva en el cuadro de diálogo. Si se especifica helpfile, también se debe especificar context.

context Opcional. Expresión numérica que es igual al número de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, también se debe especificar helpfile.

El argumento buttons tiene estos valores:

Constante Valor Descripción

Constantes que determinan el tipo de botones a mostrar en el mensajeVbOKOnly 0 Muestra solamente el botón Aceptar.

VbOKCancel 1 Muestra los botones Aceptar y Cancelar.

VbAbortRetryIgnore 2Muestra los botones Anular, Reintentar e Ignorar.

VbYesNoCancel 3 Muestra los botones Sí, No y Cancelar.

VbYesNo 4 Muestra los botones Sí y No.

VbRetryCancel 5Muestra los botones Reintentar y Cancelar.

Constantes que determinan el tipo de iconos a mostrar en el mensajeVbCritical 16 Muestra el icono de mensaje crítico.

VbQuestion 32Muestra el icono de pregunta de advertencia.

VbExclamation 48Muestra el icono de mensaje de advertencia.

VbInformation 64Muestra el icono de mensaje de información.

Constantes que determinan cuál es el botón predeterminadoVbDefaultButton1 0 El primer botón es el predeterminado.

VbDefaultButton2 256 El segundo botón es el predeterminado.

Celdas y Rangos

Page 37: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

VbDefaultButton3 512 El tercer botón es el predeterminado.

VbDefaultButton4 768 El cuarto botón es el predeterminado.

Constantes que determinan la modalidad del cuadro de diálogo

VbApplicationModal 0

Aplicación modal; el usuario debe responder al cuadro de mensajes antes de poder seguir trabajando en la aplicación actual.

VbSystemModal 4096Sistema modal; se suspenden todas las aplicaciones hasta que el usuario responda al cuadro de mensajes.

Constantes que determinan características especiales del cuadro de mensaje

VbMsgBoxHelpButton 16384Agrega el botón Ayuda al cuadro de mensaje.

VbMsgBoxSetForeground

65536Especifica la ventana del cuadro de mensaje como la ventana de primer plano.

VbMsgBoxRight 524288 El texto se alínea a la derecha.

VbMsgBoxRtlReading 1048576Especifica que el texto debe aparecer para ser leído de derecha a izquierda en sistemas hebreo y árabe.

Valores devueltos por MsgBox

Constante

Valor Descripción

vbOK 1 Aceptar

vbCancel

2 Cancelar

vbAbort 3 Anular

vbRetry 4 Reintentar

vbIgnore 5 Ignorar

vbYes 6 Sí

vbNo 7 No

Celdas y Rangos

Page 38: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

Si desea especificar más que el primer argumento con nombre, debe utilizar MsgBox en una expresión. Si desea omitir algún argumento de posición, debe incluir el delimitador de coma correspondiente.

En este ejemplo se utiliza la función MsgBox para mostrar un mensaje de error crítico en un cuadro de diálogo con botones Sí y No. El botón No se considera la respuesta predeterminada. El valor devuelto por la función MsgBox depende del botón elegido por el usuario. En este ejemplo, se supone que DEMO.HLP es un archivo de Ayuda que contiene un tema con un número de contexto igual a 1000.

Dim Mensaje, Estilo, Título, Ayuda, Ctxt, Respuesta, MiCadenaMensaje = "¿Desea continuar?" ' Define el mensaje.

Estilo = vbYesNo + vbCritical + vbDefaultButton2 ' Define los botones.Título = "Demostración de MsgBox" ' Define el título.Ayuda = "DEMO.HLP" ' Define el archivo de ayuda.Ctxt = 1000 ' Define el tema ' el contexto

' Muestra el mensaje.

Respuesta = MsgBox(Mensaje, Estilo, Título, Ayuda, Ctxt)If Respuesta = vbYes Then ' El usuario eligió el botón Sí. MiCadena = "Sí" ' Ejecuta una acción.Else ' El usuario eligió el botón No. MiCadena = "No" ' Ejecuta una acción.End If

Función InputBox

Muestra un mensaje en un cuadro de diálogo, espera que el usuario escriba un texto o haga clic en un botón y devuelve un tipo String con el contenido del cuadro de texto.

InputBox(prompt[, title][, default][, xpos][, ypos][, helpfile, context])

La sintaxis de la función InputBox consta de estos argumentos con nombre:

Parte Descripción

prompt Requerido. Expresión de cadena que se muestra como mensaje en el cuadro de diálogo. La longitud máxima de prompt es de aproximadamente 1024 caracteres, según el ancho de los caracteres utilizados. Si prompt consta de más de una línea, puede separarlos utilizando un carácter de retorno de carro (Chr(13)), un carácter de avance de línea (Chr(10)) o una combinación de los caracteres de retorno de carro-avance de línea (Chr(13) y Chr(10)) entre cada línea y la siguiente.

Celdas y Rangos

Page 39: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

title Opcional. Expresión de cadena que se muestra en la barra de título del cuadro de diálogo. Si omite title, en la barra de título se coloca el nombre de la aplicación.

default Opcional. Expresión 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 vacío.

xpos Opcional. Expresión numérica que especifica, en twips, la distancia en sentido horizontal entre el borde izquierdo del cuadro de diálogo y el borde izquierdo de la pantalla. Si se omite xpos, el cuadro de diálogo se centra horizontalmente.

ypos Opcional. Expresión numérica que especifica, en twips, la distancia en sentido vertical entre el borde superior del cuadro de diálogo y el borde superior de la pantalla. Si se omite ypos, el cuadro de diálogo se coloca a aproximadamente un tercio de la altura de la pantalla, desde el borde superior de la misma.

helpfile Opcional. Expresión de cadena que identifica el archivo de Ayuda que se utilizará para proporcionar ayuda interactiva para el cuadro de diálogo. Si se especifica helpfile, también deberá especificarse context.

context Opcional. Expresión numérica que es el número de contexto de Ayuda asignado por el autor al tema de Ayuda correspondiente. Si se especifica context, también deberá especificarse helpfile.

Si desea especificar más que el primer argumento con nombre, debe utilizar InputBox en una expresión. Si desea omitir algunos argumentos de posición, debe incluir el delimitador de coma correspondiente.

En este ejemplo se muestran distintas maneras de utilizar la función InputBox para indicar al usuario que debe introducir un valor. Si se omiten las posiciones x e y, el diálogo se centra automáticamente según 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.

Dim Mensaje, Título, ValorPred, MiValorMensaje = " Introduzca un número del 1 a 3" ' Establece el mensaje.Título = "Demostración de InputBox" ' Establece el título.ValorPred = "1" ' Establece el valor predeterminado.

' Muestra el mensaje, el título, y el valor predeterminado.MiValor = InputBox(Mensaje, Título, ValorPred)

' Muestra el mensaje, el título y el valor predeterminado.

Celdas y Rangos

Page 40: Visual Basic Para Aplicaciones

Visual Basic Para Aplicaciones

MiValor = InputBox(Mensaje, Título, , , , "DEMO.HLP", 10)

' Se muestra el diálogo en la posición 100, 100.MiValor = InputBox(Mensaje, Título, ValorPred, 100, 100)

Celdas y Rangos