Professional Documents
Culture Documents
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
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 1
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 2
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 3
Variables
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
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)
. . .
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)
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 1
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()
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.
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 2
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
Significado Mayor que Menor que Menor o igual que Mayor o igual que
Smbolo = <>
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
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
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
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
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 4
Instrucciones de Bucles
Se repiten instrucciones un nmero determinado de veces o hasta que una condicin sea True o False.
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
MiNumero= MiNumero -1 Contador= Contador +1 Loop While MiNumero >10 MsgBox El bucle se ha repetido & Contador & veces
End Sub
Sub AlInicio()
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 5
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
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
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
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 7
Prueba(I) = I
Next I End sub
Al igual que con un bucle ForNext la instruccin de salida se ejecuta con Exit For
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
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 8
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.
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.
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
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
Matrices Variant
Hay dos formas de crear matrices de valores Viariant:
Declarar una matriz como del tipo Variant
Dim VarDatos(2) As Variant
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
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.
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
.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
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)
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)
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.
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
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
.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
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
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.
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
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
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
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 19
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
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 21
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
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.
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 23
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
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
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
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
Error! Use the Home tab to apply Ttulo 1 to the text that you want to appear here. 27
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.
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
Celdas que tengan el mismo formato. Celdas que tengan los mismos criterios de validacin. Todas las celdas visibles.
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.
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
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
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.
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.
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
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.
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
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