formularios vba

15/09/2006 - 23:27 por SantiRv | Informe spam
Planteo el siguiente modelo en busca de solucion:
En una hoja de excel (a la cual tomo como base de datos) e ingresado
datos desde un formulario pero el trabajo que estoy tratando de hacer
es el siguiente:

1) Mediante la seleccion de un item de la tabla a traves de un Combo
Box (por ejemplo seleccion de productos) que me permita modificar
alguno campos de la tabla referidos a ese articulo

2) similar a 1 pero que me permita eliminar completamente el articulo
(o sea que me elimine la fila a la cual se refiere el combobox


Desde Ya gracias por su colaboracion
SantiRv

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
16/09/2006 - 04:57 | Informe spam
hola, Santi !

... hoja de excel... como base de datos) e ingresado datos desde un formulario pero... tratando de...
1) Mediante la seleccion de un item... a traves de un ComboBox... que me permita modificar algunos campos de la tabla..
2) similar a 1 pero que me permita eliminar completamente el articulo [...]



asumiendo que usas ya controles TextBox para el ingreso de los datos 'nuevos'...
y que los elementos listados en el ComboBox estan 'directamente relacionados' con los datos de la lista [en orden y todo eso]...
podrias 'vincularlos' con la celda 'correspondiente' y te servirian como controles de edicion/entrada 'directa' a esos campos ;)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 SantiRv
16/09/2006 - 22:43 | Informe spam
Héctor Miguel

He leído tu sugerencia pero no se como hacer para que una vez
seleccionado un elemento de una hoja de excel ( a la cual he llamado
por ejemplo datos) mediante un combobox, los cuadros de texto que he
insertado en el formulario cambien de propiedda controlsource para
modificarlos directamente (Me explico)

Y, por otro lado, para eliminar los datos, lo que pretendo es , una vez
que selecciono el objeto desde un combobox, que elimine completamente
la fila incluyendo el dato que he elegido

Desde ya, gracias nuevamente

P/d: favor de adjuntar algun codigo ejemplificativo que me es mas util
y me sirve de guia (si no es mucha la molestia)
Respuesta Responder a este mensaje
#3 Héctor Miguel
17/09/2006 - 04:21 | Informe spam
hola, Santiago !

He leido tu sugerencia pero no se como hacer para que una vez seleccionado un elemento de una hoja de excel
(a la cual he llamado por ejemplo datos) mediante un combobox, los cuadros de texto que he insertado en el formulario
cambien de propiedda controlsource para modificarlos directamente
Y, por otro lado, para eliminar los datos, lo que pretendo es, una vez que selecciono el objeto desde un combobox
que elimine completamente la fila incluyendo el dato que he elegido
P/d: favor de adjuntar algun codigo ejemplificativo que me es mas util y me sirve de guia [...]



[creo que] no resulta muy 'acertado' andar suponiendo el arreglo de los datos y algunas otras caracteristicas no comentadas aun :))
al final te expongo un codigo a manera de ejemplo y te comento en seguida los supuestos utilizados ;)

- un formulario con 1 ComboBox1, 3 TextBox1, 2 y 3, y 3 CommandButtons1, 2 y 3
- una hoja llamada 'datos' con un rango nombrado 'base' que hace referencia a la columna1 del rango con la lista de tu base de datos
este rango esta asignado a la propiedad que 'llena' los elementos del combo [te sugiero usar un rango dinamico desde la hoja] ;)
- los 3 textboxes se inhiben al presentarse el formulario y se habilitan al click de los commandbutton 1 y 3 [el 2 es para 'bajas']
ademas de que se asumen SOLO 3 columnas adicionales relacionadas con la ID del elemento seleccionado en el combo

seguramente haran falta un buen numero de 'eventualidades' y situaciones en que se requiera de prevencion/correccion de errores :-(
[es solo un ejemplo y a falta de detalles mas... 'precisos'] :D

saludos,
hector.

== en el modulo de codigo del formulario =Dim TB_Col As Byte, Base As Range
Private Sub UserForm_Initialize()
Habiitar_Textboxes
Set Base = Worksheets("datos").Range("base")
End Sub
Private Sub ComboBox1_Change()
If ComboBox1.ListIndex >= 0 Then Rescatar_Textboxes ComboBox1.ListIndex + 1
End Sub
Private Sub CommandButton1_Click()
Rescatar_Textboxes Base.Row + Base.Rows.Count - 1
Habiitar_Textboxes True
End Sub
Private Sub CommandButton2_Click()
If MsgBox("El registro seleccionado sera eliminado Permanentemente !!!" & vbCr & _
"Confirma por favor", vbYesNo + vbDefaultButton2, "Importante !!!") = vbYes _
Then Base.Cells(ComboBox1.ListIndex + 1, 1).EntireRow.Select
End Sub
Private Sub CommandButton3_Click()
Habiitar_Textboxes True
End Sub
Private Sub Habiitar_Textboxes(Optional On_Off As Boolean = False)
For TB_Col = 1 To 3
Controls("textbox" & TB_Col).Enabled = On_Off
Next
End Sub
Private Sub Rescatar_Textboxes(Fila As Long)
With Worksheets("datos").Range("base")
For TB_Col = 1 To 3
Controls("textbox" & TB_Col).ControlSource = .Cells(Fila, TB_Col + 1).Address
Next
End With
End Sub
Respuesta Responder a este mensaje
#4 SantiRv
17/09/2006 - 06:25 | Informe spam
Héctor Miguel
Especifico aun mas la situacion pork no logro entender el procedimiento
:(

Partimos de una hoja de excel en la cual se van cargando datos cuyas
columnas son :
*id
*cliente
*direccion
*telefono
*localidad
*e-MAIL

el objetivo que se pretende es , una vez cargado gran cantidad de
datos, el usuario tenga la posibilidad de elegir desde un combobox (me
parece la herramienta mas oportuna) el nombre del cliente
una vez realizada dicha operacion, se le presenten tantos textbox (o
label, no se cual seria de mas utilidad) como columnas de la tabla con
sus respectivos valores.
Hecho ello, el usuario debe poder modificar los datos relacionados con
ese "cliente" (incluyendo el campo "cliente") o , una vez seleccionado
el cliente, proceda a eliminarlo de su "base de datos" (algo asi como
eliminar la fila)

Si bien el codigo me has facilitado es completo, hay sentencias que no
logro descifrar ( no soy tan amateur ni tan experto) como por ejemplo
"habiitar_textboxes" o algo por el estilo
Asi que nuevamente te planteo el problemilla para ver si ud me puede
dar una solucion y sacarme de este "embrollo" que me esta haciendo
demorar un poquitillo

Sin mas, y agradecinedo siempre su pronta respues (por ésta y por las
ya enviadas)
;)

SantiRv
Respuesta Responder a este mensaje
#5 Héctor Miguel
17/09/2006 - 06:47 | Informe spam
hola, Santiago !

Especifico aun mas la situacion pork no logro entender el procedimiento :(
Partimos de una hoja de excel en la cual se van cargando datos cuyas columnas son:
*id *cliente *direccion *telefono *localidad *e-MAIL
... se pretende... una vez cargado gran cantidad de datos
... tenga la posibilidad de elegir desde un combobox... el nombre del cliente una vez realizada dicha operacion
... presenten tantos textbox (o label, no se cual seria de mas utilidad) como columnas de la tabla con sus respectivos valores.
... debe poder modificar los datos relacionados con ese "cliente" (incluyendo el campo "cliente") o
... seleccionado el cliente, proceda a eliminarlo de su "base de datos" (algo asi como eliminar la fila)
... el codigo... facilitado... hay sentencias que no logro descifrar... por ejemplo "habiitar_textboxes" o algo por el estilo [...]



comentas que ya tienes un formulario que 'carga' datos a la hoja ['base de datos']...
[me parece que] continuar por el camino de las 'suposiciones'... podria retardar alguna propuesta 'global' -?-
[si no te es inconveniente]... podrias enviar [una copia de] tu archivo y algunas instrucciones ?
solo quita de la direccion que aparece el 'NO...SPAM...PLS' ;)
[o 'subirlo' a algun sitio con hospedaje de archivos para que lo descargue cualquier interesado en resolver esta situacion] :D

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida