visual basic para aplicaciones
TRANSCRIPT
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
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
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
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).
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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