Macro que solicite ingresar un rut y que arroje un mensaje que diga el rut ya fue ingresado

Nuevamente necesito de vuestra ayuda, ya que debo crear la siguiente macro y no se por donde empezar:

-Realizar una macro que solicite ingresar un rut y si el rut no esta lo ingrese en la columna A buscando espacios vacios y en caso contrario si se encuentra que arroje un mensaje que diga el rut ya fue ingresado.

Ojala me puedan ayudar, ya que soy novato en esto y gracias a este foro voy entiendo de a poco los cogidos para crear macros en VB

1 respuesta

Respuesta
2

Te anexo el código

Private Sub CommandButton1_Click()
Set h1 = Sheets("Hoja1")
Set b = h1.Columns("A").Find(TextBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        MsgBox "Ya existe ese RUT"
        Exit Sub
    End If
    '
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
    h1.Cells(u1, "A") = Val(TextBox1)
End Sub

Si encuentra RUT muestra el mensaje de caso contrario lo registra

Valoras la respuesta saludos!

Estimados

Me podrías anexar el código en español, ya que necesito entender como funciona y no solo copiar y pegar..

Gracias

Estimado

Te adjunto un ejemplo de un código que es muy parecido a lo que necesito, pero lo malo es que contiene 2 macros (procedimientos), por lo tanto hay que ejecutarlas de manera separada.Yo necesito una sola macro con un solo procedimiento que solicite ingresar un rut y si el rut no esta lo ingrese en la columna A buscando espacios vacíos y en caso contrario si se encuentra que arroje un mensaje que diga el rut ya fue ingresado.

Public Sub procedimiento_uno()

Dim Dato As Integer 

Dato = Val(InputBox("ingresar numero", "ingresar")) 

Call procedimiento_dos 

ActiveCell = Dato 

End Sub

Public Sub procedimiento_dos() 

Range("a15000").Select 

Selection.End(xlUp).Select 

ActiveCell.Offset(1, 0).Select 

End Sub

En este ejemplo los datos son números, por lo tanto necesito cambiarlos por el RUT

No se si me di a entender??

Saludos

mEGGIDO

Te anexo la explicación ya que el código siempre es ingles

Sub registrar()
'Seleccionamos la hoja
Set h1 = Sheets("Hoja1")
'Ingresamos los datos
rut = Val(InputBox("Ingrese número", "INGRESAR"))
'Con Find realiza la comparación del dato ingresado en la columna A
Set b = h1.Columns("A").Find(rut, lookat:=xlWhole)
' Si encuentra arroja el mensaje
    If Not b Is Nothing Then
        MsgBox "Ya existe ese RUT"
        Exit Sub
    End If
' Busca la ultima fila vacía
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
'ubica los datos en la ultima fila
    h1.Cells(u1, 1) = rut
End Sub

Agrega el código al módulo


Recuerda valorar saludos!

Estimado

¿Y el código que yo te adjunte no se puede mejorar?

¿En el fondo que realice todas las instrucciones sin pasar de un procedimiento a otro manualmente?

Te anexo el código

Public Sub procedimiento_uno()
Dim Dato As Integer
Set h1 = Sheets("Hoja1")
Dato = Val(InputBox("ingresar numero", "ingresar"))
Set b = h1.Columns("A").Find(Dato, lookat:=xlWhole)
    If Not b Is Nothing Then
        MsgBox "Ya existe ese RUT"
        Exit Sub
    End If
Range("a15000").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell = Dato
End Sub

Estimado

No funciona bien la macro, ya que no acepta números grandes por ejemplo mi rut es: 15171328-4

Además no pasa automáticamente a la celda vacía para volver a ingresar otro rut.. Hay que ejecutar la macro cada vez que se quiere ingresar un nuevo rut..

Saludos

macontad

Para hacer que te pida el rut automáticamente y hacer las comparaciones será mas el código.

Te recomiendo usar el formulario que es mas práctico y no tendrás problemas, usa la primera opción

Te anexo el código y aceptará lo guiones

Private Sub CommandButton1_Click()
Set h1 = Sheets("Hoja1")
Set b = h1.Columns("A").Find(TextBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        MsgBox "Ya existe ese RUT"
        Exit Sub
    End If
    '
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
    h1.Cells(u1, "A") = TextBox1.Text
End Sub

saludos!!|

Private Sub CommandButton1_Click()
Set h1 = Sheets("Hoja1")
Set b = h1.Columns("A").Find(TextBox1, lookat:=xlWhole)
    If Not b Is Nothing Then
        MsgBox "Ya existe ese RUT"
        Exit Sub
    End If
    '
    u1 = h1.Range("A" & Rows.Count).End(xlUp).Row + 1
    h1.Cells(u1, "A") = TextBox1.Text
    TextBox1.Text = ""
    TextBox1.SetFocus
End Sub

¿Pero cuál es finalmente el código que me sirve con el formulario?

Este último

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas