VBA - Как L oop За наборы дат финансового года - PullRequest
0 голосов
/ 08 января 2020

Возникла проблема с зацикливанием дат финансового года в Excel VBA.

Моя цель: скрыть столбцы с датами, превышающими текущую дату.

Моя проблема: столбцы упорядочены по финансовому году (у меня на 6 месяцев больше календарного года). Поэтому приведенный ниже код не работает так, как я хочу.

Sub Hide_Date_Columns()
Dim c As Range

For Each c In Range("F2:AC2").Cells
    If c.Value > Date Then
        Columns(c.column).EntireColumn.Hidden = True
    End If
Next c

End Sub

Я пытаюсь решить эту проблему за кулисами, добавив x = DateAdd ("гггг", 1, (диапазон («R2: W2 "). Значение)) для моего l oop, но я получаю несоответствие типов.

Sub Hide_Date_Columns()
Dim a As Range
Dim b As Variant
Dim c As Range
Dim DateArray() As Variant
Dim x() As Variant
Dim i As Variant
x = DateAdd("yyyy", 1, (Range("R2:W2").Value))
b = Range("R2:W2")

For Each a In Range("F2:Q2").Cells
    If a.Value > Date Then
        Columns(a.Column).EntireColumn.Hidden = True
    End If
Next a


For Each b In x
    If b.Value > x Then
    Columns(b.Column).EntireColumn.Hidden = True
    End If
Next b


For Each c In Range("R2:AC2").Cells
    If c.Value > Date Then
        Columns(c.Column).EntireColumn.Hidden = True
    End If
Next c

End Sub

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 января 2020

Для тех, кто интересуется. Я вручную добавил каждый необходимый DateAdd.

Sub Hide_Date_Columns()
Dim a As Range
Dim b As Range
Dim c As Range
Dim d As Range
Dim e As Range
Dim f As Range
Dim g As Range
Dim h As Range

u = DateAdd("yyyy", -1, (Range("R2").Value))
v = DateAdd("yyyy", -1, (Range("S2").Value))
w = DateAdd("yyyy", -1, (Range("T2").Value))
x = DateAdd("yyyy", -1, (Range("U2").Value))
y = DateAdd("yyyy", -1, (Range("V2").Value))
Z = DateAdd("yyyy", -1, (Range("W2").Value))

For Each a In Range("F2:Q2").Cells
    If a.Value > Date Then
        Columns(a.column).EntireColumn.Hidden = True
    End If
Next a

For Each b In Range("X2:AC2").Cells
    If b.Value > Date Then
        Columns(b.column).EntireColumn.Hidden = True
    End If

Next b

If u > Date Then
Columns(u.Columns).EntireColumn.Hidden = True
End If

If v > Date Then
Columns(v.Columns).EntireColumn.Hidden = True
End If

If w > Date Then
Columns(w.Columns).EntireColumn.Hidden = True
End If

If x > Date Then
Columns(x.Columns).EntireColumn.Hidden = True
End If

If y > Date Then
Columns(y.Columns).EntireColumn.Hidden = True
End If

If Z > Date Then
Columns(Z.Columns).EntireColumn.Hidden = True
End If

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...