¿Actualizar desde textbox? VBA excel

A toda la gente del foro
Las dudas son varias, pero la principal es Actualizar desde textbox, ya que las otras dudas se resuelven en gran medida con aprender bien esto del textbox
pensé en subir el excel, pero no me deja añadir archivos, asique se los comparto desde el google drive https://drive.google.com/drive/folders/1A8euoKIe6T_JSLxJj_SdPSvv3jxrICQW?usp=sharing 

Dudas
1- Necesito poder actualizar información sobre el paciente, para esto arme un botón ( Modificar Información) que te lleva el formulario (Información Pacientes), desde acá podemos buscar al paciente a través de su nombre y decidir si borrar al paciente, actualizar alguna información o simplemente leer su información.

Parra la parte de actualizar (es donde me quede en CERO, porque la verdad no tengo idea de cómo se soluciona )arme un Commandbutton, que activa el formulario de actualización, (frmactualizar)
¿Cómo se me ocurrió que funcione? Lo que tenia pensado es que al seleccionar un paciente de la lista y apriete actualizar, los textbox del formulario se llenan automáticamente con la información actual ( que se encuentra en la base de datos), y que al sobre escribir cualquiera de los textbox y apretar actualizar esta información se sobre escriba en la base de datos, ¿es posible?
2 Esta duda es relacionada con la primera, ya que trata de textbox, como pueden ver muchas hojas como ser la de Nuevo paciente, es básicamente un formulario. El problema es que como no se como hacer para transferir información desde el textbox a la celdas de forma permanente, solucione el problema de una forma distinta.
Actualmente lo que hace esa macro es:
-Abre la hoja "base de datos"
-Inserta una fila en el rango de la tabla

-Vuelve a la hoja "nuevo paciente" y copia 1 valor
-Vuelve a "base de datos" y lo pega en el lugar que corresponde
Y así sucesivamente
Estoy seguro que de alguna forma se debe poder hacer que los datos ingresados en el textbox queden de forma permanente en la nueva fila insertada, y se me ocurre que si aprendo como funciona esa propiedad del textbox podría simplificar mucho más el excel

3 y ultima duda, pero esta duda no es tan urgente y es un poco curiosidad, como hago para proteger el boton de administrador, se me había ocurrido que al correr la macro, pida una validación con un textbox, pero mi duda radica en: igual de todas formas yo podría abrir las hojas manualmente con la propiedad mostrar independiente a si se o no se la contraseña, y si protejo la hoja la macro no corre

Perdon por la cantidad de dudas, pero como todo en la vida las cosas se aprenden y esto no es la excepción.
Desde ya muchas gracias y cualquier sugerencia o modificación es bienvenida y sera tenida en cuenta para este y para futuros proyectos

2 respuestas

Respuesta
3

De hecho vas bien en la programación el único detalle que le veo es que aun puedes simplificar más el código para lo que quieres te paso lo siguiente, para pasar variables de un formulario a otro tienes que usar un objeto fijo, textbox, label, listbox, etc, en este caso cree 4 labels con propiedad visible =false es decir que no los podrás ver en tiempo de ejecución y en esos labels se guarda la información que se enviara al siguiente formulario, una vez que haces la selección en el listbox este busca en la tabla Basedatos_Pacientes y busca a través de la función coincidir la fila donde están los datos y los guarda en las variables que mencione

en el formulario de actualizar igual le añadí una etiqueta con propiedad invisible esta tiene como función almacenar la fila donde están ubicados los datos para en cuanto se haga la actualización en automático se vaya directo a esa fila, por cierto el campo que queda en blanco lesion no se de que tabla o donde esta informacion puesto que no aparece en ninguna tabla de las que tienes.

y el resultado es este en cuanto selecionas un nombre y oprimes actualizar

las macros son estas pegalas en en formulario que corresponde

'en el formulario actualizar
Private Sub CommandButton1_Click()
Set PACIENTES = Range("Basedatos_Pacientes")
INDICE = Label5
With PACIENTES
    Set FILA = .Rows(INDICE)
End With
With FILA
    .Cells(1, 5) = TextBox1.Text
    .Cells(1, 7) = TextBox2.Text
    .Cells(1, 9) = TextBox4.Text
End With
Set PACIENTES = Nothing: Set FILAS = Nothing
End Sub
Private Sub UserForm_Activate()
With Informacion_pacientes
    TextBox1.Text = .Label8
    TextBox2.Text = .Label9
    TextBox4.Text = .Label11
    Label5 = .Label12
End With
End Sub
rem -------------------------------
rem--------------------------------
' en el formulario informacion_pacientes pega esto
Private Sub LISTA_Click()
Dim funcion As WorksheetFunction
Set pacientes = Range("Basedatos_Pacientes")
Set funcion = WorksheetFunction
codigo = LISTA.Value
With pacientes
    INDICE = funcion.Match(codigo, .Columns(2), 0)
    Label8 = .Cells(INDICE, 5)
    Label9 = .Cells(INDICE, 7)
    Label11 = .Cells(INDICE, 9)
    Label12 = INDICE
End With
Set pacientes = Nothing
End Sub

Muchas gracias por la ayuda, respecto al programa:
      Entiendo como lo solucionaste, pero no logro hacerlo, tengo problemas para la parte de las etiquetas(labels), cree las 4 en el formulario de información pacientes y cree 1 en el formulario actualizar, pero no logro que se almacenen los datos en las etiquetas.
De hecho apenas lo hago correr al formulario actualizar, me dice "no se encontró el método o el dato miembro", no tengo idea si es que tengo que cambiar alguna propiedad al armar la label o que estoy haciendo mal que no logró que las lebels guarden la información

Intente reproducir de varias maneras el error y la única forma en que lo lgore es la siguiente añadiendo el Me antes del nombre de la etiqueta o que el nombre del label que esta en el código no sea igual al nombre del label que creaste por ejemplo si el label en el código se llama label11 y en tu formulario no hay ningún label con ese nombre te va a arrojar ese error

y esta es la imagen cuando no existe la etiqueta, en este caso la etiqueta 12

James mucha gracias nuevamente por la ayuda, inicialmente esta respuesta iba a ser para hacer más consultas porque no lograba que el código funcionará, pero mientras escribía seguía batallando con el código y logre hacer que corra, si era como vos decías algún error de tipeo, y un error desde excel de traer un valor erróneo de label.
Muchísimas gracias por la ayuda y por la solución ( ya entendí como funciona eso de guardar información el las labels, asique voy a estar practicando con eso para poder sacarle la vuelta más fácilmente)
PD: última consulta ¿es posible hacer eso que planteo en la duda 3? ( "proteger el botón de administrador, se me había ocurrido que al correr la macro, pida una validación con un textbox, pero mi duda radica en: igual de todas formas yo podría abrir las hojas manualmente con la propiedad mostrar independiente a si se o no se la contraseña, y si protejo la hoja la macro no corre")
-

Como veo que tus botones son figuras rectangulares solo veo una instrucción posible es poco conocida y la mayoría confundirá esta protección con la protección de hojas, este es un ejemplo que solo deja libre cierto rango de celdas de la hoja y lo demás lo bloquea ni siquiera puedes acceder con el ratón, las flechas o bien con las barras laterales, en este caso como el botón al que haces referencia esta en la celda 24, establecí un bloqueo que solo deja libre el área comprendida entre las celdas a2 hasta la k23, esto hará que tus macors funcione pero solo quien tenga el código podrá accesar al botón administrador, instrucción la puedes poner en el evento Workbook_Open para que se establezca desde la apertura del libro, esto no garantiza que no pueden acceder a la hoja administrador haciéndola visible, lo que si puedes hacer es ponerle a la hoja administrador la instrucción sheets("administrador"). Scrollarea="a1" con eso se bloquea toda la hoja y usar una macro similar para desloquearla cuando quieras usarla.

Sub bloquea()
pass = InputBox("Teclee el codigo de desbloqueo")
If pass = "CODIGO" Then
Sheets("menu").ScrollArea = ""
Else
Sheets("menu").ScrollArea = "a2: k23"
End If
End Sub
Respuesta
2

Bajate el libro de ejemplo que dejé en esta entrada de mi blog:

http://elsamatilde.blogspot.com/2018/03/interactuando-con-userform.html 

Allí además podrás encontrar las explicaciones y el video demostrativo.

Para empezar la búsqueda debieras hacerla desde algún desplegable para tener una coincidencia exacta.

Y verás que con un solo formulario podrás realizar la búsqueda y modificar o eliminar algún registro. También el mismo te sirve para 'crear registros'.

Luego si necesitas ayuda para adaptarlo podés consultarme nuevamente. Indica en tu consulta desde el tablón que es 'Para Elsa'.

Sdos.

Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas