Beruflich Dokumente
Kultur Dokumente
Un objeto representa un elemento de una aplicacin, como una hoja de clculo, una celda, un diagrama, un formulario o un informe. En cdigo de Visual Basic, un objeto debe identificarse antes de se pueda aplicar uno de los mtodos del objeto o cambiar el valor de una de sus propiedades. Una coleccin es un objeto que contiene varios objetos que normalmente, pero no siempre, son del mismo tipo. En Microsoft Excel, por ejemplo, el objeto Workbooks contiene todos los objetos Workbook abiertos. En Visual Basic, la coleccin Forms contiene todos los objetos Form existentes en una aplicacin. Los elementos de una coleccin se pueden identificar mediante su nmero o su nombre. Por ejemplo, en el siguiente procedimiento, Libro(1) identifica al primer objeto Workbook abierto.
Para dar valor a una propiedad, hay que colocar un punto detrs de la referencia a un objeto, despus el nombre de la propiedad y finalmente el signo igual (=) y el nuevo valor de la propiedad. Por ejemplo, el siguiente procedimiento cambia el ttulo de un formulario de Visual Basic dando un valor a la propiedad Caption.
Devolver objetos
Cada aplicacin tiene una forma de devolver los objetos que contiene. Sin embargo estos procedimientos no son siempre iguales, por ello debe consultar el tema de ayuda correspondiente al objeto o coleccin que est usando en la aplicacin para determinar la forma de devolver el objeto.
Declarar constantes
Al declarar una constante, se puede asignar a un valor un nombre que tenga algn significado apropiado. La instruccin Const se utiliza para declarar una constante y darle valor. Una constante no puede modificarse o cambiar de valor una vez que ha sido declarada. Se puede declarar una constante dentro de un procedimiento o al principio de un mdulo, en la seccin de Declarations. Las constantes a nivel de mdulo son privadas, a menos que se especifique lo contrario. Para declarar una constante pblica a nivel de mdulo, la instruccin Const debe ir precedida por la palabra clave Public. Se puede declarar explcitamente una constante como privada colocando la palabra clave Private antes de la instruccin Const para facilitar la lectura y comprensin del cdigo. Si desea ms informacin, consulte la seccin "Comprender el alcance y la visibilidad" en la Ayuda de Visual Basic. El siguiente ejemplo declara la constante Public EdadCon como un Integer y le asigna el valor 34.
Dim x, y, z As Integer
Si se declara una variable matriz, deben incluirse los parntesis. Los subscriptos son opcionales. La siguiente instruccin define las dimensiones de una matriz dinmica, miMatriz.
Dim miMatriz()
Declarar variables
Para declarar variables se utiliza normalmente una instruccin Dim. La instruccin de declaracin puede incluirse en un procedimiento para crear una variable de nivel de procedimiento. O puede colocarse al principio de un mdulo, en la seccin Declarations, para crear una variable de nivel de mdulo. El siguiente ejemplo crea la variable NombreTexto y especficamente le asigna el tipo de datos String.
Si esta instruccin aparece dentro de un procedimiento, la variable NombreTexto se puede usar slo en ese procedimiento. Si la instruccin aparece en la seccin Declarations del mdulo, la variable NombreTexto estar disponible en todos los procedimientos dentro del mdulo, pero no para los restantes mdulos del proyecto. Para hacer que esta variable est disponible para todos los procedimientos de un proyecto, basta con comenzar la declaracin con la instruccin Public, tal y como muestra el siguiente ejemplo:
En Visual Basic se puede declarar implcitamente una variable usndola en una instruccin de asignacin. Todas las variables que se definen implcitamente son del tipo Variant. Las variables del tipo Variant consumen ms recursos de memoria que la mayor parte de las otros tipos de variables. Su aplicacin ser ms eficiente si se declaran explcitamente las variables y se les asigna un tipo de datos especfico. Al declararse explcitamente las variables se reduce la posibilidad de errores de nombres y el uso de nombres errneos. Si no desea que Visual Basic realice declaraciones implcitas, puede incluir en un mdulo la instruccin Option Explicit antes de todos los procedimientos. Esta instruccin exige que todas las variables del mdulo se declaren explcitamente. Si un mdulo incluye la instruccin Option Explicit, se producir un error en tiempo de compilacin cuando Visual Basic encuentre un nombre de variable que no ha sido previamente declarado, o cuyo nombre se ha escrito incorrectamente. Se puede seleccionar una opcin del entorno de programacin de Visual Basic para incluir automticamente la instruccin Option Explicit en todos los nuevos mdulos. Consulte la documentacin de su aplicacin para encontrar la forma de modificar las opciones de entorno de Visual Basic. Tenga en cuenta que esta opcin no tiene ningn efecto sobre el cdigo que se haya escrito con anterioridad. Nota Las matrices fijas y dinmicas siempre se tiene que declarar explcitamente.
Tipo de datos
Intervalo
Byte Boolean Integer Long (entero largo) Single (coma flotante/ precisin simple) Double (coma flotante/ precisin doble)
4 bytes
-3,402823E38 a 1,401298E-45 para valores negativos; 1,401298E-45 a 3,402823E38 para valores positivos
8 bytes
-1.79769313486231E308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1,79769313486232E308 para valores positivos -922.337.203.685.477,5808 a 922.337.203.685.477,5807
8 bytes
14 bytes
+/-79.228.162.514.264.337.593.543.950.335 sin punto decimal; +/-7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el nmero ms pequeo distinto de cero es +/-0,0000000000000000000000000001 1 de enero de 100 a 31 de diciembre de 9999 Cualquier referencia a tipo Object Desde 0 a 2.000 millones
Date Object String (longitud variable) String (longitud fija) Variant (con nmeros) Variant (con caracteres) Definido por el usuario (utilizando Type)
16 bytes
Cualquier valor numrico hasta el intervalo de un tipo Double El mismo intervalo que para un tipo String de longitud variable El intervalo de cada elemento es el mismo que el intervalo de su tipo de datos.
Nota Las matrices de cualquier tipo de datos requieren 20 bytes de memoria ms cuatro bytes para cada dimensin de matriz, ms el nmero de bytes que ocupan los propios datos. Puede calcular la memoria que ocupan los datos multiplicando el nmero de elementos de datos por el tamao de cada elemento. Por ejemplo, los datos de una matriz unidimensional que consten de cuatro elementos de datos tipo Integer de dos bytes cada uno, ocupan ocho bytes. Los ocho bytes que requieren los datos ms los 24 bytes necesarios para la matriz suman un requisito total de memoria de 32 bytes para dicha matriz. Un tipo Variant que contiene una matiz requiere 12 bytes ms que la matriz por s sola. Note Use the StrConv function to convert one type of string data to another.
Sub VariableLocal() Dim strMensaje As String strMensaje = "Esta variable no se puede usar fuera de este procedimiento." MsgBox strMensaje End Sub Sub FueraAlcance() MsgBox strMensaje End Sub
' Aada lo siguiente a la seccin de Declarations del mdulo. Private strMensaje As String Sub InicializaVariablePrivada()
strMensaje = "Esta variable no se puede usar fuera de este mdulo." End Sub Sub UsaVariablePrivada() MsgBox strMensaje End Sub
Nota Los procedimientos pblicos de un mdulo estndar o mdulo de clase estn disponibles para cualquier proyecto de referencia al proyecto actual. Para limitar el alcance de todos los procedimientos de un mdulo al proyecto actual, aada una instruccin Option Private Module a la seccin Declarations del mdulo. Las variables y procedimientos pblicos seguirn estando disponibles para los restantes procedimientos del proyecto actual, pero no lo estarn para los proyectos que a los que puedan hacer referencia.
' Incluya esto en la seccin Declarations del mdulo. Public strMensaje As String
Todos los procedimientos son pblicos a menos que se especifique lo contrario, excepto en el caso de los procedimientos evento. Cuando Visual Basic crea un procedimiento evento, la palabra clave Private se inserta automticamente antes de la declaracin del procedimiento. Para los restantes procedimientos, debe declarar explcitamente con la palabra clave Private si no desea que sean pblicos. Se pueden usar procedimientos, variables y constantes pblicas definidas en mdulos estndar o mdulos de clase de proyectos que hagan referencia al actual. Sin embargo, es preciso establecer una referencia al proyecto en que estn definidos. Los procedimientos, variables y constantes pblicas definidas en mdulos que no sean estndar o de clase, como pueden ser los mdulos de formulario o mdulos de informe, no estn disponibles desde los proyectos que hacen referencia al actual, ya que estos mdulos son privados para el proyecto en el que residen.
Sub Busca1() T = Timer Range("Valor").ClearContents Application.ScreenUpdating = False Range("Lista").Select While ActiveCell <> Range("Dato") ActiveCell.Offset(1, 0).Select Wend Range("Valor") = ActiveCell.Offset(0, 1) Range("Valor").Select Application.ScreenUpdating = True Range("Tiempo") = Timer - T End Sub
2do Metodo:
Utiliza la opcin Buscar de la ficha Inicio/Buscar y reemplazar/Buscar. Este mtodo es mas rpido que el anterior.
Sub Busca2() T = Timer Range("Valor").ClearContents Dato = Range("Dato") Cells.Find(What:=Dato, After:=ActiveCell, LookIn:=xlValues, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate Range("Valor") = ActiveCell.Offset(0, 1) Range("Valor").Select Range("Tiempo") = Timer - T End Sub
3er Metodo:
Utiliza la sentencia Find del mismo Visual Basic.. Este mtodo es mucho ms rpido que los anteriores porque ya no utiliza herramientas de la hoja de calculo de Excel, sino la sentencia Find que es nativa de Visual Basic.
Sub Busca3() T = Timer Range("Valor").ClearContents Dato = Range("Dato") Set c = Range("Lista").Find(Dato, LookIn:=xlValues) If Not c Is Nothing Then Celda = c.Address Range("Valor") = Range(Celda).Offset(0, 1) Range("Valor").Select Range("Tiempo") = Timer T End Sub
Sub AbrirArchivo() 'elije un archivo para abrirlo ChDrive Left(ActiveWorkbook.Path, 1) ChDir ActiveWorkbook.Path Archivo = Application.GetOpenFilename("Archivos del Excel & _ (*.xls*),*.xls*", , "Elija el Archivo que desea Abrir") On Error GoTo Sale Workbooks.Open Archivo Archivo = ActiveWorkbook.Name Rpta = MsgBox("El archivo: " & Archivo & " ha sido cargado" & _ vbNewLine & "Desea cerrarlo?", vbYesNo) If Rpta = vbNo Then Exit Sub Application.DisplayAlerts = False ActiveWorkbook.Close Sale: End Sub
Sub AbrirLibro2() Ruta = ActiveWorkbook.Path Archivo = InputBox("Nombre del archivo a abrir (Ej: Lista.xls Lista.xlsx)") If Archivo = "" Then Exit Sub For Each Libro In Application.Workbooks If UCase(Libro.Name) = UCase(Archivo) Then Windows(Archivo).Activate Exit Sub End If Next On Error GoTo NoHay Workbooks.Open Ruta & "\" & Archivo Exit Sub NoHay: MsgBox ("El archivo " & Archivo & " no existe en la carpeta actual") End Sub
Luego con esta nueva herramienta, dibuje el calendario dentro del formulario, y al hacer doble clic sobre l, agrguele el siguiente cdigo:
Private Sub Calendar1_Click() ActiveCell = Calendar1.Value Unload Me End Sub Private Sub UserForm_Activate() Calendar1.Value = date End Sub
Luego con esta nueva herramienta, dibuje el calendario dentro del formulario, y al hacer doble clic sobre l, agrguele el siguiente cdigo:
1. Ficha Programador/ Insertar/ Controles ActiveX 2. Clic en la herramienta "Mas controles" y seleccionar la opcin "Microsoft ProgressBar Control, version 6.0" y clic en Aceptar.
4. Luego cambiar las siguientes propiedades: (Name) BorderStyle Scrolling (Name) BorderStyle Scrolling Barra1 1-ccFixedSingle 1-ccScrollingSmooth Barra2 1-ccFixedSingle 1-ccScrollingStandard
5. En un Modulo de Visual Basic escribir la siguiente macro: Sub Avance() Dim i As Double, j As Double ActiveSheet.Barra1.Visible = True ActiveSheet.Barra2.Visible = True Range("A3:C13").ClearContents Range("A3").Select For i = 1 To 100 For j = 1 To 200000 Sqr (j) Next ActiveCell.Cells(i / 10 + 1, 1) = i ActiveCell.Cells(i / 10 + 1, 2) = i * i ActiveCell.Cells(i / 10 + 1, 3) = Sqr(i) ActiveSheet.Barra1.Value = i ActiveSheet.Barra2.Value = i Next MsgBox ("Terminado") ActiveSheet.Barra1.Value = 0 ActiveSheet.Barra2.Value = 0 End Sub 6. Finalmente asignar la macro Avance al botn "Barra con ActiveX"
1. Crear el formulario que se muestra a continuacion. 2. En el cuadro de herramientas hacer un clic derecho y elegir Controles adicionales, luego activar la casilla: Microsoft ProgressBarr Control, version 6.0, y Aceptar.
3. Con el nuevo control dibuje los controles como se muestran en la ventana anterior, y cambie las siguientes propiedades: (Name) Barra1 BorderStyle 1-ccFixedSingle Scrolling 1-ccScrollingSmooth (Name) Barra1 BorderStyle 1-ccFixedSingle Scrolling 1-ccScrollingSmooth 4. Escribir los siguientes codigos para los botones "Calculo" y "Cerrar" Private Sub Calculo_Click() Dim i As Double, j As Double Range("A3:C13").ClearContents Range("A3").Select Mensaje.Caption = "Procesando..." Application.Wait (Now + TimeValue("00:00:01"))
For i = 1 To 100 For j = 1 To 200000 Sqr (j) Next ActiveCell.Cells(i / 10 + 1, 1) = i ActiveCell.Cells(i / 10 + 1, 2) = i * i ActiveCell.Cells(i / 10 + 1, 3) = Sqr(i) Barra.Value = i Barra2.Value = i Next Mensaje = "Proceso terminado" Barra.Value = 0 Barra2.Value = 0 End Sub Private Sub Cerrar_Click() Unload Me End Sub 5. En un Modulo de Visual Basic escribir la siguiente macro: Sub Ventana() UserForm1.Show End Sub 6. Finalmente asignar la macro Ventana al botn "Barra con Formulario"
.
If Pelicula = "" Then Exit Sub RUTA = ActiveWorkbook.Path Video.URL = RUTA & "\" & Pelicula End Sub
Nota.- Los archivos de video debern estar guardados en la misma carpeta donde se encuentra el archivo de Excel.