Problemas con el comando Do While... Loop

Dante Amor

Hola, trabajando con un formulario de vba necesito completar unos datos que se van a ingresar a la hoja "Planilla de Control de Procesos", en la fila AR7:AV7. Los próximos datos que se ingresen, serán en la siguiente fila (8) de las mismas columnas... Les adjunto una imagen de la planilla:

Estos datos se van a ingresar hasta la fila 26 (pintada de amarillo) y después se van a copiar en AW7:BA7... Para lograr esto, desarrolle la siguiente macro:

Private Sub CommandButton1_Click()
respuesta = MsgBox("¿Está seguro que desea agregar esta novedad?", vbYesNo + vbExclamation)
    If respuesta = vbYes Then
        Sheets("Planilla de Control de Procesos").Activate
        ActiveSheet.Range("AR6").Activate
        Do While ActiveCell <= Cells(25, 42)
            Do While Not IsEmpty(ActiveCell)
            ActiveCell.Offset(1, 0).Activate
            Loop
            ActiveCell.Value = Hora
            ActiveCell.Offset(0, 1).Value = Operario
            ActiveCell.Offset(0, 2).Value = Nro_cc
            ActiveCell.Offset(0, 3).Value = Tipo_novedad
            ActiveCell.Offset(0, 4).Value = Comentario
        Loop
        ActiveSheet.Range("Aw6").Activate
        Do
                Do While Not IsEmpty(ActiveCell)
                ActiveCell.Offset(1, 0).Activate
                Loop
                ActiveCell.Value = Hora
                ActiveCell.Offset(0, 1).Value = Operario
                ActiveCell.Offset(0, 2).Value = Nro_cc
                ActiveCell.Offset(0, 3).Value = Tipo_novedad
                ActiveCell.Offset(0, 4).Value = Comentario
        Loop While Range("AW26") <= ActiveCell
    End If
End Sub

Mi problema está en copiar desde AW7:BA7: NO debería permitir ingresar más datos cuando se haya completado hasta AW26:BA26.

Es decir que, cuando las celda AW26 esté llena, debería salir un cartel que diga "no se puede ingresar más datos" y por supuesto, no permitir que se ingresen.

1 respuesta

Respuesta
1

H o l a:

Te anexo la macro actualizada

Private Sub CommandButton1_Click()
'Por.Dante Amor
    respuesta = MsgBox("¿Está seguro que desea agregar esta novedad?", vbYesNo + vbExclamation)
    If respuesta = vbNo Then Exit Sub
    '
    f = 7
    c = Columns("AR").Column
    Set h1 = Sheets("Planilla de Control de Procesos")
    Do While h1.Cells(f, c) <> ""
        f = f + 1
        If f = 27 Then
            If c = Columns("AW").Column Then
                MsgBox "No se puede ingresar más datos", vbExclamation, "INGRESAR DATOS"
                Exit Sub
            End If
            f = 7
            c = Columns("AW").Column
        End If
    Loop
    h1.Cells(f, c) = Hora
    h1.Cells(f, c + 1) = operario
    h1.Cells(f, c + 2) = Nro_cc
    h1.Cells(f, c + 3) = Tipo_novedad
    h1.Cells(f, c + 4) = Comentario
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas