Error al compilar: next sin for

Tengo este código

Private Sub validar()
Dim h, i
Set h = Sheets("Programación")
For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
Do While Cells(i, "C") <> Cmbxnombre.Text And Cells(i, "I") <> CDate(Txbxfecini)
i = i + 1
'MsgBox "1"
Loop
If Cells(i, "C") = Cmbxnombre.Text And Cells(i, "I") = CDate(Txbxfecini) Then
MsgBox "La persona " & Cells(i, "C") & " ya está programada para la fecha " & Cells(i, "I")
End
Next
End Sub

Cuando lo ejecuto me sale error de compilación: Next sin For.

Respuesta

Tengo este problema cada vez que compilo este programa me sale next sin for y no se cual puede ser el error

Private Sub mezclar()
Dim a, b As Integer
Dim numeleatorio As Integer
Dim cubiertos(cartas) As Boolean
Randomize
For a = 1 To cartas / 2
For b = 1 To 2
numeleatorio = Int(Rnd * cartas)
Do While (cubiertos(numeleatorio))
numeleatorio = a
Next b
Next a
Call ocultar
End Sub

1 respuesta más de otro experto

Respuesta
1

Te falto finalizar la comparación

Private Sub validar()
Dim h, i
Set h = Sheets("Programación")
For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
Do While Cells(i, "C") <> Cmbxnombre.Text And Cells(i, "I") <> CDate(Txbxfecini)
i = i + 1
'MsgBox "1"
Loop
If Cells(i, "C") = Cmbxnombre.Text And Cells(i, "I") = CDate(Txbxfecini) Then
MsgBox "La persona " & Cells(i, "C") & " ya está programada para la fecha " & Cells(i, "I")
End if
Next
End Sub

si te silve no olvides valora para cerrar la preguna

Ups, por mas que busqué no vi ese pequeño detalle, muchas gracias.

Será que me puedes ayudar con eso, la idea es que al programar a una persona me valide que no haya sido programada en esa fecha, en caso de ya estar programada me sale el mensaje confirmándolo, pero en este momento me valida un dato y queda en un bucle infinito.

Es una epecia de consulta digamos osea buscar el nombre de una persona en una fecha determinada si estas salga un mensaje y sino estas se agregue en esa fecha

Si es así seria de la siguiente manera

    Set h = Sheets("Programación")
    Set b = h.Columns("C").Find(Cmbxnombre.Text)
    If Not b Is Nothing Then
    b.Select
    If b = Cmbxnombre.Text and  b.offset(0,6) = Txbxfecini Then
   MsgBox "La persona " & B & " ya está programada para la fecha " & b.offset(0,6)
   else 
  aqui lo que quiere que haga si no estas ....
end if
end if

Recuerda valor si te silve para cerrar la pregunta 

Si me evalúa pero solo la primera y necesito que evalúe todos los datos que existan en la hoja.

A ver si entiendo cuanta veces se puede repetir que un nombre existe con una fecha

Más de una vez si en caso de que existan más que harías

Me explico mejor.

Tengo una hoja en la que he ingresado 100 registros de personas que he programado para todo el mes. Lo que necesito es que al realizar una nueva programación la macro me recorra toda la lista y me verifique que el registro que estoy a punto de ingresar no exista en esta bd.

La macro es lo que hace te dice si estas regitrado y te dice la fecha y el nombre

Pruenba con la validación de la fecha

Así

  Set h = Sheets("Programación")
    Set b = h.Columns("C").Find(Cmbxnombre.Text)
    If Not b Is Nothing Then
    b.Select
    If b = Cmbxnombre.Text and  b.offset(0,6) = CDate(Txbxfecini) Then
   MsgBox "La persona " & B & " ya está programada para la fecha " & b.offset(0,6)
   else 
  aqui lo que quiere que haga si no estas ....
end if
end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas