Una duda por que no corre un if en mi código VBA

Me gustaría saber si alguien puede saber por que no me pasa el flujo de trabajo a través de un if que hay en el código

Dim celda As Range
Dim dia, fechaEnca, cliente As String
Dim tec As String
Dim diaslect As Integer
Dim diaS As String
Dim iCol, iCol2 As Integer
Dim ref2, ref3 As String
Dim val As Integer
Dim celdaz As Range
Dim diaFor, fechaFor As String
Dim fechaiF, diaiF As String
For diaslect = 1 To 5
If diaslect = 1 Then
diaS = "lunes"
val = 3
End If
If diaslect = 2 Then
diaS = "martes"
val = 4
End If
If diaslect = 3 Then
diaS = "miércoles"
val = 5
End If
If diaslect = 4 Then
diaS = "jueves"
val = 3
End If
If diaslect = 5 Then
diaS = "viernes"
val = 3
End If
Rem MsgBox "for1" & " " & diaS & " " & val
Range("k3", ActiveSheet.Range("k65536").End(xlUp)).Select
For Each celda In Selection
Rem IF1
If Cells(celda.Row, 14).Value = val And Cells(celda.Row, 16).Value = val And Cells(celda.Row, 13).Value = diaS Then
dia = Cells(celda.Row, 13).Value
fechaEnca = Cells(celda.Row, 11).Value
cliente = Cells(celda.Row, 2).Value
tec = Cells(celda.Row, 7).Value
Rem MsgBox "2 for  " & " " & fechaEnca & " " & dia & " " & cliente & " " & tec
Sheets("Hoja5").Select
Rem IF2
    If IsEmpty(Range("b2").Value) = True Then
    MsgBox "IF 1 " & " " & fechaEnca & " " & dia & " " & cliente & " " & tec
   Range("b3").Value = dia
   Range("b2").Value = fechaEnca
    Range("C2").Value = "TECNICO"
   Range("b2").End(xlDown).Select
   ActiveCell.Offset(1, 0).Select
   ActiveCell.Value = cliente
    ActiveCell.Offset(0, 1).Select
     ActiveCell.Value = tec
     Range("b2").Select
     Selection.HorizontalAlignment = xlCenter
     Rem IF2
     End If
 If Not IsEmpty(Range("b2").Value) = True Then
  Range("b2", ActiveSheet.Range("iv2").End(xlToLeft)).Select
    MsgBox "pause para ver lo seleccionado"
    For Each celdaz In Selection
    diaFor = Cells(3, celdaz.Column).Value
    fechaFor = Cells(2, celdaz.Column).Value
    MsgBox "celdas column recorridas por 3 for en if" & " " & celdaz.Column
    Rem MsgBox ref
    Rem MsgBox "diaFor" & " " & Cells(3, celdaz.Column).Value & "||||" & "fechaFor" & " " & Cells(2, celdaz.Column).Value
    a = Cells(2, celdaz.Column).Address(False, False)
    b = Cells(3, celdaz.Column).Address(False, False)
    MsgBox a & " " & b
    If fechaFor <> "TECNICO" And Not IsEmpty(Range(a).Value) = True Then
    fechaiF = fechaFor
    diaiF = diaFor
    ref = celdaz.Address(False, False)
        a = Cells(2, celdaz.Column).Address(False, False)
    b = Cells(3, celdaz.Column).Address(False, False)
    End If
    Next
    Range(ref).End(xlDown).Select
    ActiveCell(2, 1).Select
    End If
    Rem ESTE IF NO  LO CORRE
 If fechaFor = fechaEnca And diaFor = dia Then
    MsgBox "REF DE FOR en IF 2" & " " & ref
    Range(ref).End(xlDown).Select
    ActiveCell(2, 1).Select
    Rem MsgBox refX
    ActiveCell.Value = cliente
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = tec
    ElseIf Not IsEmpty(Range(a).Value) = True And Not IsEmpty(Range(b).Value) = True Then
    MsgBox "elseif"
    Range("iv2").End(xlToLeft).Offset(0, 2).Select
    ref2 = ActiveCell.Address(False, False)
    MsgBox "CELDA Q  HAGARRO" & " " & ref2
    ActiveCell.Value = fechaEnca
    Selection.HorizontalAlignment = xlCenter
    ActiveCell(2, 1).Value = dia
    Range(ref2).End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveCell.Value = cliente
    End If
End If
Sheets("Hoja4").Select
Next
Next

2 respuestas

Respuesta
1

Puedes poner en cuál if tienes el problema y tal vez una imagen de tu pantalla con datos de ejemplo, procura que se vean las filas y las columnas de excel; y explica qué debería realizar el código.

Respuesta

Según veo tu código debe correr pero te paso un tip:

Desde el editor vba ejecuta el proceo paso a paso con la tecla <F8> y en el menu ver activa la ventana "inmediato", anteponiendo, anteponiendo el carácter <?> Antes del nombre de la variable, en la ventana inmdiato, te arrojara el valor de la variable que deseas así podrás depurar cada uno de lo "if" que tienes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas