vba ejercicio

Upload: roberto-llerena

Post on 07-Oct-2015

8 views

Category:

Documents


1 download

DESCRIPTION

Ejercicio de macros VBA

TRANSCRIPT

http://www.contextures.com/xlUserForm02.htmlVideos: Create a User FormTo see the steps for creating a UserForm, please watch these 3 short video tutorials. The written instructions are below the video.In the videos, Excel 2003 is used, and the same steps can be followed in later versions. When saving the file in Excel 2007 or later, save as a macro-enable file type.Creating a UserForm - Part 1In part 1, you'll see how to create a blank Userform. Then you'll name the UserForm, and next you'll add text boxes and labels.Users will be able to type data into the text boxes. Labels are added beside the text boxes, to describe what users should enter into the text box

http://www.youtube.com/watch?feature=player_embedded&v=5PN7lWJSobQ#!

Introduccin a los formularios de usuarioPara crear un formulario de usuario requiere un poco de programacin, y se puede ver los pasos de los videos que se muestran a continuacin.Para las instrucciones escritas, mira debajo de los videos.En este ejemplo, los datos de inventario se almacena en una hoja de clculo oculto, en el que est protegido de daos accidentales o eliminacin.Los usuarios introducen los datos de inventario al abrir el formulario de usuario, rellenando las casillas y haga clic en un botn.

Videos: Crear un formulario de usuarioPara ver los pasos para crear un formulario de usuario, por favor ver estos 3 tutoriales cortos de vdeo.Las instrucciones escritas son debajo del video.En los vdeos, Excel 2003 se utiliza, y los pasos que pueden seguir los mismos en versiones posteriores.Al guardar el archivo en Excel 2007 o posterior, gurdelo como un tipo de archivo de macro a habilitarlo.Creacin de un formulario de usuario - Parte 1En la parte 1, vers cmo crear un formulario de usuario en blanco.Entonces usted nombrar el formulario de usuario, y el prximo va a aadir cuadros de texto y etiquetas.Los usuarios sern capaces de escribir datos en los cuadros de texto.Las etiquetas se agregan al lado de los cuadros de texto, para describir lo que los usuarios deben entrar en el cuadro de textoCreacin de un formulario de usuario - Parte 2En la Parte 2, usted aprender cmo agregar botones y un ttulo en el formulario de usuario.Con botones en el formulario de usuario, el usuario puede hacer clic para que algo suceda.Por ejemplo, haga clic en un botn despus de introducir los datos en los cuadros de texto, cuando usted est listo para pasar los datos a la hoja de clculo de rea de almacenamiento.Creacin de un formulario de usuario - Parte 3En la Parte 3, usted aprender cmo agregar cdigo de VBA a los controles, y vers cmo probar el formulario de usuario.El cdigo de VBA se ejecuta cuando ocurre un evento especfico, como hacer clic en un botn, o entrar en un cuadro combinado.En este ejemplo, el usuario haga clic en un botn, y el cdigo de VBA mover los datos para el rea de almacenamiento de hoja de clculo.Creacin de un formulario de usuario - Parte 4En la Parte 4, podrs ver el cdigo que llena los elementos de los cuadros combinados.Configurar la hoja de clculoEn este ejemplo, un inventario de las piezas se almacenan en una hoja de clculo oculto.1. Abra un nuevo libro2. Haga doble clic en la etiqueta de la hoja para Sheet13. Tipo:PartsData4. Pulse la tecla Enter5. En las celdas A1: D1, escriba los encabezados de la base de datos de inventario de piezas, como se muestra a la derecha.6. Seleccione Archivo | Guardar y guarde el libro.En este ejemplo, el archivo ha sido nombradoPartsLocDB.xls.NOTA: En Excel 2007 y versiones posteriores, guarde el archivo como un tipo de archivo habilitado para macros.LaBCD

1PartIDUbicacinFechaCantidad

212345Tienda 00103/03/200487

3

Crear un formulario de usuarioUserForms se crean en el Editor de Visual Basic.1. Para abrir el Editor de Visual Basic, mantenga pulsada la tecla Alt y pulse la tecla F112. Seleccione Ver | Explorador de proyectos, para ver una lista de los proyectos.(Por lo general, esto se muestra en el lado izquierdo de la ventana VBE.)3. En el Explorador de proyectos, seleccione el proyecto PartLocDB.4. En la barra de men, seleccione Insertar | UserForm

5. Un formulario de usuario en blanco, y la caja de herramientas abierta debera.(Si el cuadro de herramientas no aparece, seleccione Ver | Herramientas)Asigne un nombre al formulario de usuario1. Para abrir la ventana Propiedades, pulse la tecla F42. En la ventana Propiedades, haga doble clic en el nombre -UserForm1, en la parte superior derecha de la ventana.3. Tipo:frmPartLocy pulse la tecla Enter

4. El nombre del formulario cambiar en el Explorador de proyectos, pero la forma todava muestra UserForm1 en su barra de ttulo.5. En la ventana Propiedades, haga doble clic en la propiedad Caption -UserForm1.6. Tipo:Inventario de piezasy pulse la tecla Enter7. La barra de ttulo mostrar el nuevo ttulo.Agregar un cuadro combinado al formulario de usuarioLos objetos en un UserForm botones, como cuadros de texto, y se llamancontroles.Para permitir a los usuarios introducir datos, puede agregar controles TextBox al formulario de usuario Excel, con controles de etiqueta para describirlos.1. En el Cuadro de herramientas, haga clic en el botn de ComboBox.

2. En el UserForm, haga clic cerca de la parte central superior, para agregar un cuadro combinado de tamao estndar.

3. Con el nuevo cuadro combinado seleccionado, haga doble clic en la propiedad Name en la ventana Propiedades.4. Tipo:cboParty pulse la tecla Enter5. (Opcional) Establezca la propiedad ColumnCount a 2, si desea ver el nombre de la pieza en la lista con cada nmero.6. Haga clic en una parte vaca del formulario de usuario de Excel, Excel para seleccionar el formulario de usuario y para mostrar el cuadro de herramientas.

Agregar una etiqueta a la UserFormPara ayudar a los usuarios introducir datos, puede agregar etiquetas para describir los controles, o para ver las instrucciones.1. En el Cuadro de herramientas, haga clic en el botn Etiquetas.

2. En el UserForm, haga clic a la izquierda del cuadro combinado, para agregar una etiqueta de tamao estndar.

3. Con la nueva etiqueta seleccionada, haga doble clic en el ttulo propiedad en la ventana Propiedades.4. Tipo:Partey pulse la tecla Enter5. Si es necesario, puede cambiar el tamao de la etiqueta, por lo que no cubre el combobox - apuntan a la manija en su borde derecho y arrstrelo hacia la izquierda.6. Haga clic en una parte vaca del formulario de usuario, para seleccionar el formulario de usuario y para mostrar el cuadro de herramientas.Aadir casillas restantes y etiquetasRepita los pasos anteriores para aadir: un cuadro combinado denominadocboLocation, con una etiqueta deubicacin un cuadro de texto denominadotxtDate, con una etiquetaFecha un cuadro de texto denominadotxtQty, con una etiquetaCantidad

Si los cuadros de texto no estn alineados, puede alinearlos:1. Haga clic en el cuadro combinado de primera2. Mantenga presionada la tecla Ctrl y haga clic en las casillas restantes3. Elija Formato | Alinear | Izquierdas4. Haga clic en una parte vaca del formulario de usuario, para seleccionar el formulario de usuario y para mostrar el cuadro de herramientas.Agregar botones al formulario de usuarioPara permitir a los usuarios realizar una accin, puede agregar botones de comando al formulario de usuario.Este formulario tiene un botn para agregar datos a la base de datos, y un botn para cerrar el formulario.1. En el Cuadro de herramientas, haga clic en el botn de comando.

2. En el UserForm, haga clic en la parte inferior izquierda, para agregar un CommandButton de tamao estndar.3. Con el nuevo CommandButton seleccionado, haga doble clic en la propiedad Name en la ventana Propiedades.4. Tipo:cmdAddy pulse la tecla Enter5. Con el nuevo CommandButton seleccionado, haga doble clic en la propiedad Caption en la ventana Propiedades.6. Tipo:Aadir esta partey pulse la tecla Enter7. Haga clic en una parte vaca del formulario de usuario, para seleccionar el formulario de usuario y para mostrar el cuadro de herramientas.8. Repita los pasos anteriores para agregar un CommandButton llamadoCmdclose, con una etiquetaClose

9. Si es necesario, puede cambiar la posicin de los botones arrastrndolos a una nueva ubicacin en el formulario de usuario.Agregue cdigo a los botonesPara que los botones de realizar una accin, a crear cdigo que se ejecuta cuando se pulsa el botn.Agregue cdigo al botn cmdAdd1. Seleccione el botn cmdAdd2. En la barra de mens, seleccione Ver | Cdigo.3. Esto crea un procedimiento, donde puede agregar el cdigo.

4. Cuando el cursor est parpadeando, introduzca el siguiente cdigo:Private Sub cmdAdd_Click ()LRow dvil como a largoLpart dvil como a largoWs As Hoja de TrabajoSet ws = Worksheets ("PartsData")

'Find primera fila vaca de la base de datoslRow = ws.Cells.Find (What: = "*", SearchOrder: = xlRows, _ SearchDirection: = xlPrevious, lookin:. = XlValues) Row + 1

lpart = Me.cboPart.ListIndex

'Comprobar si hay un nmeroSi Trim (Me.cboPart.Value) = "" Then Me.cboPart.SetFocus MsgBox "Escriba un nmero" Exit SubEnd If

'Copiar los datos en la base de datosUtilizacin proteger y desproteger lneas, 'Con su contrasea'Hoja de trabajo si est protegidoCon ws. 'Password Desproteger: = "password" . Las clulas (lRow, 1). Valor = Me.cboPart.Value . Las clulas (lRow, 2). Valor = Me.cboPart.List (lpart, 1) . Las clulas (lRow, 3). Valor = Me.cboLocation.Value . Las clulas (lRow, 4). Valor = Me.txtDate.Value . Las clulas (lRow, 5). Valor = Me.txtQty.Value. 'Protect Password: = "password"Extremo con

'Borrar los datosMe.cboPart.Value = ""Me.cboLocation.Value = ""Me.txtDate.Value = Format (Fecha, "Medium Date")Me.txtQty.Value = 1Me.cboPart.SetFocus

End Sub5. En la barra de mens, seleccione Ver | Objeto, para volver al UserForm.Agregue cdigo al botn Cmdclose1. Seleccione el botn Cmdclose2. En la barra de mens, seleccione Ver | Cdigo.3. Cuando el cursor est parpadeando, introduzca el siguiente cdigo:Private Sub cmdClose_Click () Unload MeEnd Sub4. En la barra de mens, seleccione Ver | Objeto, para volver al UserForm.Para permitir a los usuarios cerrar el formulario pulsando la tecla Esc:1. Seleccione el botn Cmdclose2. En la ventana Propiedades, cambie la propiedad Cancel enciertoPara evitar que los usuarios cierren el formulario haciendo clic en el botn XCuando el UserForm se abre, hay una X en la esquina superior derecha.Adems de utilizar el botn Cerrar formulario, la gente ser capaz de cerrar el formulario mediante el X. Si desea evitar esto, siga estos pasos.1. Haga clic derecho en una parte vaca del formulario de usuario2. Seleccione Ver | Cdigo3. Desde el men desplegable Procedimiento, la parte superior derecha, seleccione QueryClose

4. Cuando el cursor est parpadeando, pegue el cdigo en negrita de la muestra siguientePrivate Sub UserForm_QueryClose (Cancel As Integer, _ CloseMode As Integer) Si CloseMode vbFormControlMenu = Entonces Cancel = True MsgBox "Por favor, utilice el botn Cerrar formulario!" End IfEnd Sub4. En la barra de mens, seleccione Ver | Objeto, para volver al UserForm.Ahora, si alguien hace clic en la X en el formulario de usuario, vern su mensaje.

Aadir a listas ComboBoxesPara rellenar la lista desplegable,dinmicas rangos con nombre, se crear en el libro.A continuacin, el cdigo a aadir los elementos del rea de distribucin de los cuadros combinados, en el formulario de usuario se inicializa.Crear dinmicas rangos con nombre1. En Excel, inserte una hoja de clculo denominadaLookupLists2. En las columnas A y B, introduzca los ID de las partes y piezas, como se muestra a la derecha, y en la columna E, escriba una lista de ubicaciones.

3. Seleccione Insertar | Nombre | Definir4. En el cuadro Nombre, escriba: PartIDList5. En el cuadro Se refiere a, escriba:= OFFSET ($ A $ LookupLists! 2,0,0, CONTARA (LookupLists! $ A: $ A) -1,1)6. Haga clic en Agregar7. En el cuadro Nombre, escriba:PartsLookup8. En el cuadro Se refiere a, escriba:= OFFSET (PartIDList, 0,0, 2)9. Haga clic en Agregar10. En el cuadro Nombre, escriba:LocationList11. En el cuadro Se refiere a, escriba:= OFFSET (LookupLists! $ E $ 2,0,0, CONTARA (LookupLists! $ E: $ E) -1,1)Agregue cdigo para crear las listas dePara crear las listas desplegables, puede recorrer a travs de una lista en la hoja de clculo, tal como se describe a continuacin.O bien, escriba el nombre de la lista de rango en las propiedades del cuadro combinado, como se describe en elExcel VBA Partido ComboBoxpgina.1. En el VBE, seleccione el formulario de usuario y seleccione Ver | Cdigo.2. Desde la lista desplegable Procedimiento, la parte superior derecha, seleccione Iniciar

3. Escriba el siguiente cdigo.Para obtener instrucciones detalladas acerca de este cdigo, veaExcel VBA Listas ComboBoxPrivate Sub UserForm_Initialize ()CPart As RangeCLOC As RangeWs As Hoja de TrabajoSet ws = Worksheets ("LookupLists")

For Each cPart En ws.Range ("PartIDList") Con Me.cboPart . AddItem cPart.Value . Lista (ListCount -. 1, 1). CPart.Offset = (0, 1) Valor Extremo conSiguiente cPart

For Each CLOC En ws.Range ("LocationList") Con Me.cboLocation . AddItem cLoc.Value Extremo conSiguiente CLOC

Me.txtDate.Value = Format (Fecha, "Medium Date")Me.txtQty.Value = 1Me.cboPart.SetFocus

End SubProbar el formulario de usuarioPara probar el formulario, puede ejecutarlo desde el VBE.1. Haga clic en una parte vaca del formulario de usuario, para seleccionar el formulario de usuario y para mostrar el cuadro de herramientas.2. En la barra de mens, seleccione Ejecutar | Ejecutar Sub / UserForm.

3. En la caja de texto Part, haga clic en la flecha y seleccione un ID de pieza4. Pulse la tecla de tabulacin para desplazarse al siguiente control.5. Cuando las cajas se han completado, haga clic en 'Agregar esta pieza' botn.6. Haga clic en el botn "Cerrar Modelo", para volver a la VBE.Si el orden de tabulacin es incorrecta (por ejemplo, cuando se presiona la tecla de tabulacin que se mud a la caja de texto equivocado o botn), puede cambiar1. Haga clic derecho en una parte vaca del formulario de usuario2. ElegirOrden de tabulacin3. Seleccione un control de la lista, y haga clic enMover arribaoMover abajobotn4. Haga clic en AceptarCrear un botn para abrir el formulario de usuarioPara que sea ms fcil para los usuarios a abrir el formulario de usuario, puede agregar un botn a una hoja de clculo.1. Cambie a Excel y activar laPartLocDB.xlslibro2. Haga doble clic en la ficha de hoja de Hoja23. Tipo:Piezas de introduccin de datos4. Pulse la tecla Enter5. En la barra de herramientas Dibujo, haga clic en la herramienta Rectngulo (En Excel 2007/2010, utilizar una forma de la pestaa Insertar)6. En el centro de la hoja de clculo, dibujar un rectngulo, y un formato como se desee.7. Con el rectngulo seleccionado, escriba:Haga clic aqu para agregar la informacin de parte

8. Haga clic en el borde rectngulo y seleccione "Asignar Macro '9. Haga clic en elnuevobotn10. Cuando el cursor est parpadeando, escriba:frmPartLoc.Show11. Vaya a la ventana de Excel y haga clic en el botn para abrir el formulario de usuario. NOTA: Mientras el UserForm est abierto, usted no ser capaz de realizar ninguna otra accin en Excel, como la introduccin de datos en la hoja de clculo.Vas a tener que cerrar la primera forma. Si desea que los usuarios puedan llevar a cabo otras acciones en Excel mientras est abierto el formulario, cambie la lnea anterior a:frmPartLoc.Show Falsopara desactivar el ajuste modal Crear una tabla dinmicaPara resumir los datos en el inventario de las piezas, puede crear una tabla dinmica.1. Cambie a Excel y activar laPartLocDBCombo.xlslibro2. Seleccione laPartsDatahoja.3. Crear un rango con nombre dinmico PartsDatabase, con un refiere a la frmula:= OFFSET ($ A $ PartsData! 1,0,0, CONTARA (PartsData! $ A: $ A), 5)4. En la barra de men, seleccione Datos | Informe de tablas y grficos dinmicos (En Excel 2007/2010, utilice el comando de tabla dinmica en la pestaa Insertar)5. Haga clic en Siguiente y, en el cuadro Origen de datos, escriba:PartsDatabase6. Haga clic en siguiente y haga clic en el botn Diseo.7. Arrastre el botn PartID y el botn de la parte al rea Fila.8. Arrastre el botn de ubicacin para el rea de columna9. Arrastre el botn Cant. al rea de datos10. Haga clic en el botn Finalizar11. Nombre de la hoja de tabla dinmica,PartsInventory.Crear un botn para ver la tabla dinmicaPara que sea ms fcil para los usuarios para actualizar y ver la tabla dinmica, puede agregar un botn a una hoja de clculo.1. Cambie a Excel y activar laPartLocDB.xlslibro2. Seleccione laentrada de datos de piezashoja3. Agregar un rectngulo con el texto ::Presiona aqu para ver el inventario de piezas

4. Haga clic en el borde rectngulo y seleccione "Asignar Macro '5. Haga clic en elnuevobotn6. Cuando el cursor est parpadeando, escriba el siguiente cdigo: On Error Resume Next Con Worksheets ("PartsInventory") . Activar . Tablas dinmicas (1). PivotCache.Refresh Extremo conTermina el libroPara terminar el libro, puede ocultar la hoja que contiene la base de datos.1. Cambie a Excel y activar laPartLocDB.xlslibro2. Seleccione laPartsDatahoja.3. En la barra de men, seleccione Formato | Hoja | Ocultar (En Excel 2007/2010, utilice los comandos de formato de la ficha Inicio)4. Eliminar todas las hojas, exceptolas partes de introduccin de datos5. Haga clic en elHaga clic aqu para aadir informacin Partebotn e introduzca sus datos en la base de datos.6. Cierre y guarde el libro