En Excel generar Combox para corregir valores de una tabla

Para Dante Amor.

Buenos días primero que nada agradecerles de antemano la atención ami pregunta esperando me puedan apoyar. Tengo una plantilla la cual ingreso valores y con una macro los manda a otra hoja de excel para su registro, mi problema se presenta cuando tengo que corregir algún dato de esos registros, no se como mandarlos llamar y que se corrijan y luego se guarden en la misma tabla

1 Respuesta

Respuesta
1

H o l a:

¿La plantilla es un userform?

Envíame tu archivo y me explicas cómo identificas cada registro para modificarlos.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “Jair Abelardo Bustamante Moreno” y el título de esta pregunta.

Te anexo las macros:

Sub Modificar()
'Por.Dante Amor
    Set h1 = ActiveSheet
    Set h2 = Sheets("Sheet4")
    Set b = h2.Columns("A").Find(h1.Range("A10"), lookat:=xlWhole)
    If Not b Is Nothing Then
        h1.Range("A13:N13").Copy
        h2.Cells(b.Row, "A").PasteSpecial xlValues
        h1.Range("A10:N10").ClearContents
        h1.Range("A8:C8").ClearContents
        MsgBox "Registro actualizado"
    Else
        MsgBox "El registro no se puede modificar. El escenario no existe"
    End If
End Sub

Sub GuardarD()
'
    Set h1 = ActiveSheet
    Set h2 = Sheets("Sheet4")
    Set b = h2.Columns("A").Find(h1.Range("A10"), lookat:=xlWhole)
    If Not b Is Nothing Then
        MsgBox "No se puede registrar. Ya existe un escenario con el número: " & h1.Range("A10")
        Exit Sub
    End If
    Application.ScreenUpdating = False
    Sheets("Sheet4").Select
    Rows("6:6").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Sheets("Hoja Trabajo").Select
    Range("A13,B13,C13,D13,E13,F13,G13,H13,I13,J13,K13,L13,M13,N13").Select
    Range("N13").Activate
    Selection.Copy
    Sheets("Sheet4").Select
    Range("A6").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A5").Select
    Sheets("Hoja Trabajo").Select
    Range("F10").Select
    Application.CutCopyMode = False
    Selection.ClearContents
    Range("L10").Select
    Selection.ClearContents
    Range("K10").Select
    Selection.ClearContents
    Range("J10").Select
    Selection.ClearContents
    Range("I10").Select
    Selection.ClearContents
    Range("H10").Select
    Selection.ClearContents
    Range("G10").Select
    Selection.ClearContents
    Range("E10").Select
    Selection.ClearContents
    Range("D10").Select
    Selection.ClearContents
    Range("C10").Select
    Selection.ClearContents
    Range("B10").Select
    Selection.ClearContents
    Range("A10").Select
    Selection.ClearContents
    Range("B8").Select
    Selection.ClearContents
    Range("A8").Select
    Selection.ClearContents
    ActiveWorkbook.Save
    Application.ScreenUpdating = True
End Sub


en los eventos de la hoja de trabajo:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    If Not Intersect(Target, Range("A10")) Is Nothing Then
        Set h1 = ActiveSheet
        Set h2 = Sheets("Sheet4")
        Set b = h2.Columns("A").Find(h1.Range("A10"), lookat:=xlWhole)
        If Not b Is Nothing Then
            h2.Range(h2.Cells(b.Row, "B"), h2.Cells(b.Row, "L")).Copy
            h1.Range("B10").PasteSpecial xlValues
            h1.Range("A8") = h2.Cells(b.Row, "M")
            h1.Range("B8") = h2.Cells(b.Row, "N")
        End If
    End If
End Sub

S aludos, no olvides cambiar la valoración  a la respuesta.

Hola Dante AMor estoy muy agradecido con tu apoyo, me da mucha pena decirte por el gran apoyo que me estas brindando, pero hay dos valores que cuando los manda llamar los trae en celdas diferentes, cuando los registras la celda A8 se llena una fecha y la celda B8 se llenan siglas, cuando los mando traer des pues de haberlas registrado vienen invertidas es decir en la celda A8 aparecen las siglas y en la celda B8 la fecha (obviamente como dicha celda no tiene formato de fecha, pues coloca solo números). Si me pudieras dar una última ayuda. Muchas Gracias

Hola Dante AMor estoy muy agradecido con tu apoyo, me da mucha pena decirte por el gran apoyo que me estas brindando, pero hay dos valores que cuando los manda llamar los trae en celdas diferentes, cuando los registras la celda A8 se llena una fecha y la celda B8 se llenan siglas, cuando los mando traer despues de haberlas registrado vienen invertidas es decir en la celda A8 aparecen las siglas y en la celda B8 la fecha (obviamente como dicha celda no tiene formato de fecha, pues coloca solo números);  tambien cheque que de acuerdo a tus comentarios aunque no exista el escenario no despliega el cuadro de texto que comentas en el punto 2.

No se si se me paso decirte que la hoja "Hoja Trabajo" irá bloqueada hice una prueba y no ejecuta la macro por estar bloqueada. Si me pudieras dar una última ayuda. Muchas Gracias

Te anexo la macro

Sub Modificar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    If Range("A10") = "" Then
        MsgBox "Captura un escenario"
        Range("A10").Select
        Exit Sub
    End If
    Set h1 = ActiveSheet
    Set h2 = Sheets("Sheet4")
    Set b = h2.Columns("A").Find(h1.Range("A10"), lookat:=xlWhole)
    If Not b Is Nothing Then
        h1.Unprotect "abc"
        h1.Range("A13:N13").Copy
        H2. Cells(b.Row, "A"). PasteSpecial xlValues
 h1. Range("A10:N10"). ClearContents
 h1. Range("A8:C8"). ClearContents
 h1. Protect "abc"
        MsgBox "Registro actualizado"
    Else
        MsgBox "El registro no se puede modificar. El escenario no existe"
    End If
    Application.ScreenUpdating = False
End Sub

S aludos, no olvides cambiar la valoración  a la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas