¿Cómo hago un formulario para crear, editar y eliminar clientes en VBA?
Necesito hacer un formulario que me permita crear, editar y eliminar clientes en una base de datos en excel, me gustaría por favor me enviaras ejemplos, debo aclarar que aun me falta comprensión de sintaxis y terminología, así que me gustaría me explicaras por favor (si no es mucho pedir claro!) Lo que hace cada código en cada box* (textbox, combobox, etc) soy principiante! :
.09/08/16
Hola, Mónica
Diré una obviedad, pero MS Excel es un producto sumamente potente. Tanto así, que lo que solicitas, ya está diseñado en él. Antes, debajo de la opción de menú "Datos", existía la opción "Formularios" que apunta a lo que solicitas.
Ahora esa opción no está directamente disponible en la Cinta de opciones.
Hay que a añadirla a la Barra de acceso rápido. Para ello, haz click menú Archivo > Opciones > Personalizar Cinta, y pulsa Agregar el icono Formulario..., lo encontrarás más facilmente en la sección de Comandos que no están en la cinta de opciones. Probablemente te pida agregar un grupo nuevo a tal cinta para poder incorporarlo. Una pena, una herramienta tan útil.
Ok, una vez que tengas el ícono en tu cinta, procede como te indico:
Para empezar necesitas una fila con títulos para cada columna. Estos serán, más tarde, los campos o indicadores para introducir la información de cada registro.
Recuerda no dejar celdas en blanco entre estos títulos.
Después, Párate en cualquiera de esos encabezados y clickea el ícono que agregaste de "Formularios...".
Estas dos simples instrucciones arman una planilla o formulario de entrada de datos, mostrando sólo aquellos campos habilitados para la carga. Si tuviera fórmulas, mostrará el resultado pero no permitirá modificarlas.
Este formulario permite ingresar datos en una plantilla que son volcados en tu matriz o base de datos. Facilita la visualización, permite agregar o eliminar registros, etc.
Nota que, ésto, habría tomado un centenar de líneas de programación en VBA si quisieras hacerlo "a mano." Algo de alta exigencia, en particular si no estás familiarizada con escribir códigos.
Creo que deberías echarle una mirada y ver cómo funciona.
Obviamente se arma uno por cada archivo o tabla de Excel que quieras.
Si no quieres ejecutar esas dos primeras instrucciones, puedes incorporar una simple línea de datos en un módulo de Visual Basic (Alt F11 para activar el Editor de VBA), como la siguiente:
Sub MuestraForm() ActiveSheet.ShowDataForm End Sub
Por supuesto, puede que necesites seleccionar el área del formulario primero en este caso la rutina quedaría de la siguiente manera:
Sub MuestraForm() ActiveSheet.Range ("B4") .select ActiveSheet.ShowDataForm End Sub
Esto, claro está, en caso de que alguno de los encabezados estuviera en la celda B4. (Si no es así, simplemente, cambia la referencia a tu celda específica)
Pero, siendo tan simple de operar, realmente no creo que valga la pena, agregar una macro...
En definitiva: el diseño de un formulario en VBA es una tarea mayor, que implica múltiples controles y condicionales, para obtener algo que difícilmente se acerque a la utilidad que MS Excel ya tiene incluida "de fábrica".
Pienso que esto contesta tu pregunta.
Saludos
Fernando
(Buenos Aires, Argentina)
.
Hola, de nuevo
Te preparé esta imagen para que veas los componentes de esta herramienta y cómo se agregó a la cinta:
A la derecha del formulario, verás botones para crear, editar y eliminar (como lo solicitabas) registros de la base. Además puedes practicar búsquedas sobre tu base.
Saludos,
Fernando
.
.
Y, finalmente (creo), me pareció más práctico agregar el ícono de Formularios... a la barra de acceso rápido que a la cinta de opciones.
En tal caso la pantalla para hacerlo sería similar, como esto:
Y lo tendrías más a mano.
¡Gracias amigo!
De inmediato empiezo con tu instrucción, aunque cabe aclararte que mi trabajo me exige que sea con visual basic ya que la base de datos entera funciona con formularios y macros, estoy relacionada con los códigos,sin embargo tengo dificultades aun con la sintaxis y con los términos que se usan para dar una instrucción, pero mi intención es comprender mejor la lógica del programa... te agradezco responderme y ayudarme!
.10/08/16
Hola, de nuevo
Te entiendo, Mónica.
Sin embargo es curioso que te exijan que se haga con VBA y que seas principiante como dijiste en tu primera consulta. Por eso apunté a una solución más sencilla aunque cubría exactamente lo que pedías.
Como imaginarás una capacitación integral en creación de formularios excede el alcance de este sitio, más bien dirigido a consultas puntuales.
Sin embargo, no te dejaré sola, sino que te comparto este video que me fue de mucha utilidad para despejar algunas dudas al respecto:
https://www.youtube.com/watch?v=542Kh0_hm_4
Y si quieres ver algo más avanzado, completa con este otro:
https://www.youtube.com/watch?v=JF87lbE39IM
Saludos
Fer
.
¡Gracias de nuevo... debí aclararte que en este camino no estoy sola, yo soporto al creador (que si sabe y mucho) de los archivos, es decir, hago los trabajos fáciles de copy and paste de formulas y/o códigos donde sea necesario, gracias a ésto he aprendido algunos conceptos básicos de programación, de hecho he creado userforms basicos con dos o tres textbox que muestren alguna celda y hasta ahí. Éste es un nuevo reto de trabajo, como es él quien los crea, mi tarea es investigar y llegar a crear un formulario como el que solicité que supla las necesidades que él me expone; estuve trabajando en el que me recomendaste y, aunque funciona, necesitamos uno más específico y automático, adicionalmente que esté ubicado en una hoja y se acceda a él desde un CommandButton, sigo investigando y he llegado a aclarar algunas dudas sobre la terminología y los usos de cada línea de código, y he descargado algunos ejemplos, los que me han servido para comparar y ensayar, básicamente lo que pedía era un ejemplo en donde, digamos, si hay un código como:
Sub carganombre()
ComboBox3.Clear
Sheets("proveedores").Activate
Range("b1").Select
For i = 1 To 100
If ActiveCell.Offset(i, 0).Value <> "" Then
ComboBox3.AddItem ActiveCell.Offset(i, 0).Value
End If
Next
End Sub
yo pudiese evidenciar que hace cada línea, asi:
Sub carganombre() (Nombre )
ComboBox3.Clear (limpia el combobox 3)
Sheets("proveedores").Activate (activa la hoja Proveedores)
Range("b1").Select (selecciona el rango B1)
For i = 1 To 100 ( este por ejemplo no tengo muy claro que hace)
If ActiveCell.Offset(i, 0).Value <> "" Then ( por ende, éste tampoco)
ComboBox3.AddItem ActiveCell.Offset(i, 0).Value ( agregue lo que encuentre en tal celda de tal fila) etc etc
End If
End Sub
Algo así por el estilo es lo que realmente estoy solicitando, mas para comprender la sintaxis y para entender por que no funciona cuando lo replico en un useform que yo haya creado.
Gracias igual por tu tiempo, dedicaré un tiempo a ver los vídeos y te agradezco por contestarme y no dejarme sola :)
.
Buenas, de nuevo.
Aquí explico lo que hacen las líneas de código que no conoces (aún):
For i = 1 To 100 ' Incia una Estructura Cíclica -o Loop- For-Next, asignado valores a la variable i desde 1 hasta 100.
If ActiveCell.Offset(i, 0).Value <> "" Then 'evalúa que la celda evaluada no esté vacía. Offset sirve para evaluar otra celda a partir de la actual. El valor que tome la variable i (entre 1 y 100) indicará la cantidad de filas hacia abajo de la actual que se analiza.
ComboBox3. AddItem ActiveCell.Offset(i, 0).Value Agrega lo encontrado en la celda al combobox3
End If ' finaliza evaluación de celda vacía.
Nota: Si la lista a cargar en el combobox3 fuese continua, sin celdas en blanco en el medio, yo le hubiera agregado antes de esta linea un par más para que deje de evaluar celdas:
Else
Exit For
Con esto no necesitaría evaluar las 100 filas inferiores y aceleraría la ejecución de la macro.
Next Vuelve a la instrucción For incrementando una unidad la variable i
Bien, Mónica te deseo éxitos en tus futuros proyectos y mucho entusiasmo para aprender esta maravillosa herramienta.
Ya sabes donde encontrarme en caso de otras dudas.
Saludos
Fer
.
- Compartir respuesta