Consulta sobre código implementado en excel con instrucciones condicionales de datos de celdas

Disculpa que te moleste, se que estas muy apretado, quieria hacerte una consulta, para cuando tengas un chance, tengo el siguiente código, ¿puede existir alguna otra manera de poderlos plantear?
If fRangoDecretos.Cells(NumFila, 21).Value = "104" Then
Chk_104.Value = True
varchk_104 = True
Else
Chk_104.Value = False
varchk_104 = False
End If
If fRangoDecretos.Cells(NumFila, 22).Value = "105" Then
chk_105.Value = True
varchk_105 = True
Else
chk_105.Value = False
varchk_105 = False
End If
If fRangoDecretos.Cells(NumFila, 23).Value = "106" Then
chk_106.Value = True
varchk_106 = True
Else
chk_106.Value = False
varchk_106 = False
End If
If fRangoDecretos.Cells(NumFila, 24).Value = "107" Then
chk_107.Value = True
varchk_107 = True
Else
chk_107.Value = False
varchk_107 = False
End If
este es solo un fracmento del codigo dado de que es bastante grande, y tengo este otro:
If varchk_104 = True Then
fRangoDecretos.Cells(NumFila, 21).Value = Trim("104")
Else
fRangoDecretos.Cells(NumFila, 21).Value = Trim("")
End If
If varchk_105 = True Then
fRangoDecretos.Cells(NumFila, 22).Value = Trim("105")
Else
fRangoDecretos.Cells(NumFila, 22).Value = Trim("")
End If
If varchk_106 = True Then
fRangoDecretos.Cells(NumFila, 23).Value = Trim("106")
Else
fRangoDecretos.Cells(NumFila, 23).Value = Trim("")
End If
If varchk_107 = True Then
fRangoDecretos.Cells(NumFila, 24).Value = Trim("107")
Else
fRangoDecretos.Cells(NumFila, 24).Value = Trim("")
End If
If varchk_108 = True Then
fRangoDecretos.Cells(NumFila, 25).Value = Trim("108")
Else
fRangoDecretos.Cells(NumFila, 25).Value = Trim("")
End If
¿Existe otra manera de plantearlos?, ojo son dos procedimientos diferentes, jaja espero que eu cuando tengas una manita me des la mano, espero también que sigas muchísimo mejor. Un abrazo gran amigo

1 respuesta

Respuesta
1
EN principio parecería que no porque necesitas pasar por varias celdas y variables (un Select case no serviría).
Pero tal vez puedas adaptar esta rutina que ensayé
Ensayé otra rutina pero me encuentro con el problema de variables que parecen haber sido definidas antes...
caso: varchk_104 y el rango Chk_104
Tal vez te dé alguna idea para resolver tu caso, ya que lo conoces mejor que yo.
Esto reemplazaría al primero de tus códigos:
Sub bucle1()
For N = 1 To 4
NumCol = 20 + N
Valor = Trim(103 + N)
RangoBool = "Chk_" & Valor
If fRangoDecretos.Cells(NumFila, NumCol).Value = Valor Then
Range(RangoBool).Value = True
'**** varchk_104 = True ' Faltaría resolver como identificarla a partir de la variable "Valor"
Else
Range(RangoBool).Value = False
'**** varchk_104 = False ' Faltaría resolver como identificarla a partir de la variable "Valor"
End If
Next N
End Sub
Tal vez se pudiera hacer referencia a tales variable de otra manera, pero -insisto- depende del proceso total.
¿Nota qué este se detien en 4 pero si tienes más es cuestión de subir el límite en For N = 1 to? ( Numero donde debería terminar)
Tomalo como una idea, solamente, pero tal vez no te convenga insistir mucho con él si el actual funciona OK.
Que tengas un excelente fin de semana!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas