Visual Basic para Aplicaciones - Problema con rango

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 2
Ha aumentado su posición en 11 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema con rango

Publicado por Alberto (1 intervención) el 31/05/2020 20:01:17
Hola, estoy haciendo un calendario de vacaciones, y he estado escribiendo una macro que evaluara en subrangos el número de días cogidos y los coloreara si excediera una condicion.
El problema es en los meses que comienzan a mitad de una semana, como Julio. En estos meses evalúa el rango desde Lunes (Junio aún). Cómo podría hacer para que evaluara sólo desde que comienza el mes aunque comience en Miércoles?

Gracias
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub Worksheet_Change(ByVal Target As Range)
 
 
    Dim HojaLog As Worksheet
    Dim rangolog As Range
    Dim NuevaFila As Integer
    Dim ColInicio As Integer
    Dim FechaInicio As Date
    Dim FechaCambio As Date
    Dim FechaLunes As Date
    Dim RangoCal_1 As Range
    Dim Despl As Integer
 
    'Si la celda modificada no está entre las filas 8 a 17, sale
    If (Not (Target.Row >= 8 And Target.Row <= 17) And Not (Target.Row >= 21 And Target.Row <= 30)) Or Target.Column > 373 Or Target.Column < 2 Then Exit Sub
 
    'Calcula fecha de incio del calendario en base a los datos de las celdas A1 y A2
    FechaInicio = CLng(CDate("01/" & LeaveTracker.Cells(1, 1).Value & "/" & LeaveTracker.Cells(2, 1).Value))
 
    'Construir fecha seleccionada
    FechaCambio = DateSerial(CInt(LeaveTracker.Cells(2, 1).Value), _
        CInt(LeaveTracker.Cells(1, 1).Value + LeaveTracker.Cells(3, 1).Value - 1), _
        CInt(LeaveTracker.Cells(5, Target.Column).Value))
 
    'Calcular desplazamiento del rango en base a meses de menos de 31 dias
    Despl = (LeaveTracker.Cells(3, 1) - 1) * 31 - (CLng(FechaCambio) - CLng(FechaInicio) - Day(FechaCambio)) - 1
 
    'Determinar columna del lunes para la semana definida
    FechaLunes = FechaCambio - Weekday(FechaCambio, vbSunday) + 2 '+ Despl
 
    'Columna seleccionada sera FechaLunes - FechaInicio
    ColInicio = CInt(FechaLunes - FechaInicio) + 2 + Despl
 
    Set RangoCal_1 = Union(LeaveTracker.Range(Cells(8, ColInicio), Cells(17, ColInicio + 4)), LeaveTracker.Range(Cells(21, ColInicio), Cells(30, ColInicio + 4)))
 
    Call Colorear(ColInicio)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder