UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo

No se pueden hacer consultas de Excel o VBA por mensaje privado.
Utiliza el botón buscar del foro y te ahorras tiempo para obtener "ayuda".

No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

donbuca


Buenos dias ilustres señores, por aqui ando necesitando una ayudadita en un proyecto que estoy haciendo en exel, que por cierto esta basado en lo que voy aprendiendo de este foro.
tengo un useform que supuestamente va a ingresar/modificar datos, no tengo problemas con los textbox y combobox pero si con los checkbox y option botton no logro hacer que los valores ingresados se carguen al useform.
por decir ingreso el genero Masculino:(o) Femenino() ingreso el dato, el formulario se limpia,pero al cargar los campos del option botton salen como grises y si modifico asi como esta en la base de datos cambia el valor inicial.
mucho agradeceria si alguein me puede dar una mano con este tema, de antemano muchas gracias por el tiempo empleado en ller mi requerimiento
saludos desde ecuador
Archivos
Cargar valores de Checkbox y option botton vba.xlsm
Cargar valores de Checkbox y option botton vba
No tienes los permisos para descargar los archivos.
(104 KB)

tyno


Hola donbuca, bien venido al foro.

Estoy mirando tu archivo pero no logro darme cuenta de cual es el problema, mas que nada porque no entiendo como debería funcionar el formulario. Antes que anda ¿este problema que mencionas es con los controles de la pestaña DATOS DE BRIGADA Y USUARIO?
Si es así, podrías explicarme usando como ejemplo uno de los registros o usuarios que tienes e indicarme donde esta el problema. Por ejemplo si selecciono la SOLICITUD nº 090000002 veo que se traen ciertos datos al formulario, bueno, entonces con este caso de ejemplo ¿donde esta el problema?

Saludos

donbuca


muy amable amigo por responder, veras tratare de detallar mejor el problema:
imagine que queremos ingresar un registro nuevo (090000002), llenamos todos los campos normalmente (los textbox y los combobox) hasta llegar a una parte donde estan unos controles "NF:" (si el usuario firma tiene que estar deseleccionado caso contrario si el usuario no sabe firmar se lo selecciona, es checkbox) y "M/F" (genero masculino o femenino,son optionboton).
el problema es que logro hacer que los datos ingresen si es nuevo registro, pero si lo quiero modificar cuando llamo al ingreso 090000002 ya no se cargan como cuando 090000002 era un ingreso nuevo, es mas vi que salian como sombreados.
resumiendo un poco las cosas:
cuando ingreso nuevo no hay problema pero cuando busco para modificar ahi no vuelven los datos como cuando los ingrese.

espero haber sido un poco mas explicito ... de antemano muchisimas gracias por ayudarme y por el tiempo empleado en leer mi problema.

saludos maximiliano desde ecuador

tyno


donbuca, ingresa este código al botón INGRESAR/MODIFICAR en la pestaña DATOS DE BRIGADA Y USUARIO:

Private Sub cmd_Agregar_Click()
'la variable rw va a tomar el valor de fila ya sea vacía o de un nº de solicitud que exista
Dim rw As Long
On Error Resume Next

'buscamos la fila del nº de solicitud seleccionado
rw = Range("a1:a1000000").Find(CBSOL, lookat:=xlWhole).Row
'si el nº de solicitud no existe se genera un error nº 91 esto implica que hay que hacer un ingreso y buscamos la primer fila vacía
If Err.Number = 91 Then rw = Range("a1:a1000000").Find("").Row


Cells(rw, 1) = CBSOL
Cells(rw, 2) = BMEMO
Cells(rw, 3) = BSAL
Cells(rw, 4) = CBCAN
Cells(rw, 5) = CBDIG
Cells(rw, 6) = CBCAM
Cells(rw, 7) = CBCAT
Cells(rw, 8 )= BNOM1
Cells(rw, 9) = BCED1
If BNF1 = True Then
Cells(rw, 10) = "NO"
Else
If BNF1 = False Then
Cells(rw, 10) = "SI"
End If
End If
Cells(rw, 11) = CBOCU1
If BGM1 = True Then
Cells(rw, 12) = "MASCULINO"
Else
If BGF1 = True Then
Cells(rw, 12) = "FEMENINO"
End If
End If
Cells(rw, 13) = BNAC1

Err.Number = 0
Ordenar
CargarLista
LimpiarFormulario
CBSOL.SetFocus

End Sub

Creo que el mismo te va a permitir modificar en caso que ya exista el nº de solicitud seleccionado o bien hacer un nuevo registro si no existe dicho nº de solicitud.

Saludos

donbuca


gracias por responder mi querido y estimado amigo, pero en si ese no es mi problema, el problema es cuando quiero cargar la informacion de un registro ya ingresado, por decir la persona del informe 090000002 por error se ingreso que era de sexo masculino cuando deberia ser de sexo femenino, eso se hace en la parte de los option botton, al ingresar no hay problema pero cuando se pone en CBSOL el numero 090000002 el formulario trae todos los datos como los ingrese pero el checkbox sale seleccionado y sombreado, los option boton salen igual en todo caso creo que el error no es cuando se ingresan los datos si no en el evento change creo que se llama.

asi que por lo pronto sigo en el mismo punto de partida....Sad

saludos maximiliano desde ecuador

tyno


donbuca, prueba reemplazando el código que tienes por  este código en el combobox CBSOL


Private Sub CBSOL_Change()
On Error Resume Next
Dim rw As Long
LimpiarFormulario
rw = Range("a1:a1000000").Find(CBSOL, lookat:=xlWhole).Row
BMEMO = Cells(rw, 2)
BSAL = Cells(rw, 3)
CBCAN = Cells(rw, 4)
CBDIG = Cells(rw, 5)
CBCAM = Cells(rw, 6)
CBCAT = Cells(rw, 7)
BNOM1 = Cells(rw, 8 )
BCED1 = Cells(rw, 9)
If Cells(rw, 10) = "SI" Then BNF1 = True
If Cells(rw, 10) = "NO" Then BNF1 = False
CBOCU1 = Cells(rw, 11)
If Cells(rw, 12) = "MASCULINO" Then BGM1 = True
If Cells(rw, 12) = "FEMENINO" Then BGF1 = True
BNAC1 = Cells(rw, 13)
End Sub

donbuca


el cambio con ese codigo es que los controles que tienen el problema ya no se quedan sombreados pero siguen sin cargar la informacion que se guardo en un principio..
si no se puede con todo estoy haciendo en vez de usar esos controles estoy usando textbox en donde solo introduzco la "x".. jaja osea a la antigua.

me pregunto si me puedes ayduar en mi ultimo incoveniente.

veras el formulario genera un base de datos, la informacion en la base de datos asi como la boy introduciendo no me sirve para imprimir.

lo que deseo es que el registro que estoy ingresando se vaya a una fila en algun lado y esta fila tenerla enlazada a un informe de 4 paginas para ahi si pueda imprimirlo.

espero me hayas entendido y de verdad gracias por la ayuda
de antemano gracias por el tiempo empleado en ayudarme

saludos desde ecuador maximiliano

tyno


Hola donbuca.

Si el código que te he pasado te funciona (en parte), quiere decir que aquellos datos que faltan traer es porque no se han establecido algunas de las referencias. En el código que tenías para Private Sub CBSOL_Change() me parece que hay unos errores de instrucción, como por ejemplo esto:

        If BGM1 = True Then
        ActiveCell.Offset(0, 11) = BGM1.Value
        Else
        If BGF1 = True Then
        ActiveCell.Offset(0, 11) = BGF1.Value
        End If
        End If

Si se supone que este comobobox CBSOL es para traer datos al formulario ¿porque inserta los valores de  BGM1/BGF1 en ActiveCell.Offset(0, 11)? esto no parece tener sentido. Por esto verás que yo reemplace esa instrucción por esto:

If Cells(rw, 12) = "MASCULINO" Then BGM1 = True
If Cells(rw, 12) = "FEMENINO" Then BGF1 = True

A lo que voy es que si están faltando traer datos, teniendo el código de ejemplo que te he pasado es solo cuestión de crear y/o modificar las referencias que faltan. Por ejemplo si el TextBox??? tiene que traer los datos de la columna 18 entonces la instrucción es así:  
TextBox??? = Cells(rw, 18) y así para cada caso.


Con respecto a imprimir, bueno el tema es que no se que es lo que quieres imprimir de esa base de datos(supongo que son los datos de la Hoja BD)
¿No te sirve crear una tabla dinámica con esos datos de la Hoja BD? con dicho informe de tabla dinámica vas a poder agrupar los datos que quieras y de esta forma ver solo la información que te interese para imprimir, acomando las columnas y filas de datos que quieras.

donbuca


como vamos amigo, veras revisando el codigo que me enviaste note que habia un error en esta parte en el evento change

If Cells(rw, 10) = "SI" Then BNF1 = True
If Cells(rw, 10) = "NO" Then BNF1 = False


cuando lo que se desea hacer era esto

If Cells(rw, 10) = "NO" Then BNF1 = True
If Cells(rw, 10) = "SI" Then BNF1 = False


ERA POR ESO QUE NO SE CARGABAN BIEN Smile

 IGUAÑ sin tu ayuda mi formulario solo estaria con mascarilla y sin codigo  muchas gracias por el apoyo,por otro lado parece que me exprese mal con lo de imprimir.
veras en realidad mi problema es de COPIAR

lo que deseo hacer es copiar toda la fila que pertenece a la celda que se encuentre "actualmente" dentro de BSOL, deseo copiar esa fila en la segunda fila de una hoja llamada procesos,
por decir si estoy trabajando en el registro 090000001 toda la fila de ese registro se copia en la segunda fila de la hoja procesos
por otro lado si despues estoy en el registro 090000015 igual toda la fila de ese registro se copie a la segunda fila de la hoja procesos.

despues lo de enlazar esa fila a mi informe e imprimir es cosa mia.

espero haberme explicado mas o menos bien
pd: las filas que deseo copiar son las filas de BD

saludos desde ecuador

maximiliano

tyno


Si tu idea ahora es grabar los datos en otra diferente a la que se encuentra el formulario entonces hay que cambiar las referencias solamente. Sería algo así en e código del botón INGRESAR/MODIFICAR:

With Sheets("Otra_Hoja")
rw = .Range("a1:a1000000").Find("").Row

.Cells(rw, 1) = CBSOL
.Cells(rw, 2) = BMEMO
.Cells(rw, 3) = BSAL
.Cells(rw, 4) = CBCAN
.Cells(rw, 5) = CBDIG
.Cells(rw, 6) = CBCAM
.Cells(rw, 7) = CBCAT
.Cells(rw, 8 )= BNOM1
.Cells(rw, 9) = BCED1
If BNF1 = True Then
.Cells(rw, 10) = "NO"
Else
If BNF1 = False Then
.Cells(rw, 10) = "SI"
End If
End If
.Cells(rw, 11) = CBOCU1
If BGM1 = True Then
.Cells(rw, 12) = "MASCULINO"
Else
If BGF1 = True Then
.Cells(rw, 12) = "FEMENINO"
End If
End If
.Cells(rw, 13) = BNAC1

End With

O sea, la idea es agregar estas instrucciones, a parte, dentro del mismo código del botón INGRESAR/MODIFICAR, lo único que se ha cambiado es la referencia a las celdas, en este caso se indica que perteneces a la Hoja "Otra_Hoja" (desde luego este nombre representa una Hoja distinta a donde esta el formulario)

Saludos

donbuca


una vez mas gracias por responder amigo ,
te cuento que no quiero duplicar la base de datos, con el codigo que me  muestras me da la impresion de que se va generando eso con las pruebas que hice.

lo que quiero es "COPIAR SIEMPRE" toda la fila actual a otra hoja y que "SIEMPRE SE COPIE EN LA PRIMERA FILA"

por decir si tengo 400 registros en la base de datos "bd" y en el FORMULARIO estoy trabajando con el registro 250, deseo que la fila formada por ese registro 250 se COPIE en una hoja llamada "procesos".
si ahora estoy en el FORMULARIO en el registro 389 el codigo que necesito deberia sobrescribir o borrar toda la fila del registro 250 en la hoja procesos(no en la bd" e introducir la fila altual que seria la 389
en la hoja procesos siempre tiene que mostrarse solo una fila "la fila actual".

espero de todo corazon que me pueda ayudar en mi requerimiento

tyno


Hola donbuca.
Sube el archivo con lo que has avanzado y has un ejemplo con los resultados hechos de forma manual de lo que quieres y así veo de hacerlo por macros. Saludos

donbuca


gracias amigo por el tiempo que dedicas a mi problema.
para cuestiones de ejemplos decidi simplificar todo para no enrredarnos.

mira ahi te envio lo que me pediste con el ejemplo de forma manual
Archivos
copiar celda activa.xlsm
No tienes los permisos para descargar los archivos.
(36 KB)

Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.