¿Bloquear usuario después que votó?

¿Cómo puedo programar un formulario en excel para bloquear un usuario después que validó su cuenta para votar?

Teno un pequeño programa para las elecciones de personero y consejo estudiantil de mi colegio, desde hace 3 años estamos empleando este programa, pero en estos momentos el estudiante entra a un formulario validando su usuario y contraseña que está en una hoja del libro de excel, como hago para que este estudiante no entre mas despues de votar, ¿se puede con un codigo bloquear o borrar de la lista ese estudiante que ya votó?.

El codigo que tengo para votar es el siguiente:

Private Sub CommandButton1_Click()

Dim usuario As String

Dim password As Variant

Dim DatoEncontrado

Blog = "INETMAR LE INFORMA"

    ' Esto es para desproteger la hoja donde esta la lista y poder escribir

    Worksheets("Hoja1").Unprotect

    Sheets("Hoja1").Select

UsuarioExistente = Application.WorksheetFunction.CountIf(Range("D3:D1000"), _

    Me.txtUsuario.Value)

Set Rango = Range("D3:D1000")

If Me.txtUsuario.Value = "" Or Me.txtPassword.Value = "" Then

    MsgBox "POR FAVOR ESCRIBA SU NOMBRE Y SU IDENTIFICACION PARA PODER VOTAR", vbExclamation, Blog

    Me.txtUsuario.SetFocus

         Sheets("MENU").Select

ElseIf UsuarioExistente = 0 Then

    MsgBox "El usuario '" & Me.txtUsuario & "' no existe", vbExclamation, Blog

ElseIf UsuarioExistente = 1 Then

    DatoEncontrado = Rango.Find(What:=Me.txtUsuario.Value, MatchCase:=True).Address

    Contrasenia = Range(DatoEncontrado).Offset(0, 1).Value

    If Range(DatoEncontrado).Value = Me.txtUsuario.Value And Contrasenia = _

    Me.txtPassword.Value Then

    Sheets("MENU").Select

            Unload Me

    DECIMOA.Show

    Else

        MsgBox "La contraseña es inválida", vbExclamation, Blog

    Sheets("MENU").Select

    End If

End If

'Esto es para proteger la hoja despues que se escribe y que nadie la modifique

Worksheets("Hoja1"). Protect

End Sub

1 respuesta

Respuesta
1

En la hoja en donde tienes los usuarios y claves, después de votar (procedimiento que no colocas aquí), como ya tienes el usuario votante (puedes mantenerlo en memoria a través de una variable Pública), cuando realice su voto, agregas un valor, cualquiera, una "x", un "1", lo que sea, en una tercera columna. Además, tendrías que modificar eso que envías para que no solo verifique usuario y clave sino también la existencia de ese tercer valor, si existe, ya votó.

Abraham Valencia

Gracias por la respuesta, pero, aclaro...

Los estudiantes al momento de ir a votar: Se abre un formulario que pide nombre y contraseña, ambos deben coincidir con los nombres y la contraseña que se encuentra en la hoja 2 de excel, si existe, entonces se abre otro formulario que tiene los candidatos, él vota por uno y se guarda el voto en una base de datos. Yo quiero una macro que impida que ese estudiante ingrese nuevamente con la intención de votar dos veces, cosa que ya pasó; quiero que al momento de ingresar por primera vez, se elimine su nombre de la lista, de esta forma la macro que busca su nombre nuevamente no lo va a encontrar, por lo tanto, no va a poder ingresar al formulario de votación. 

Pues igual, guardas en una variable pública el nombre y después del voto lo buscas con "Find" como en la macro que has enviado y lo eliminas.

Abraham Valencia

Gracias Abraham ...

Pero te cuento que yo no entiendo mucho de programación, esos códigos los encuentro por internet de acuerdo a lo que necesito realizar, pero no sé de programación, así es que eso que me mandas a decir, no sé donde va.

Me podrías colaborar mandándome el código completo, por favor. Le agradecería... Gracias de todas formas por tu ayuda.

Entiendo eso de que no sepas mucho de programación pero mi sincera recomendación es que si uno usa y quiere seguir usando macros, pues debe leer al menos algo del tema y, sobre todo, entender lo que se usa.

Dicho eso, primero borra la línea:

Dim usuario As String

Y coloca, al inicio del módulo (antes del "Private Sub...")

Public usuario As String

Luego, antes de:

 Unload Me

Coloca esto:

Usuario = Me.TxtUsuario

Luego, en ese formulario (UserForm) mediante el cual votan, antes del último "End Sub", coloca algo así:

With Sheets("Hojaxxx").Range("A1:A1000")
Set CeldaBuscada = .Find(ValoraBuscar)
End With
Sheets("Hojaxxx"). Range(CeldaBuscada. Address). EntireRow.Delete

No olvides reemplazar el nombre de la hoja por el de la tuya y el rango que coloqué por el de tus datos

Abraham Valencia

¡Gracias!  Abraham Valencia.

Me funcionó, estoy agradecido por su respuesta y apoyo a todas aquellas personas que queremos aprender algo adicional a nuestro oficio, son licenciado en Ciencias sociales y me puse a la tarea de consultar como hacer las votaciones estudiantiles de forma electrónica en mi colegio, utilizando los Pc que tenemos, te cuento que llevamos 3 años utilizándolo, sin ser programador, solo consultando y pidiendo ayuda, lo de ahora, quise experimentar la posibilidad de bloquear la acción para que no voten dos o mas veces un mismo muchacho.

Gracias por su ayuda y colaboración desinteresada. Dios lo bendiga ... 

Te cuento que soy administrador, y aunque también soy programador, para mí esto es, sobre todo, un gran hobby.

Un fuerte abrazo y gracias por la bendición.

Abraham Valencia

PD: Igual lee sobre el tema, verás que es fascinante.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas