Как сослаться на ячейку текущей недели в столбце при сортировке таблицы Excel с VBA? - PullRequest
2 голосов
/ 18 июня 2019

Я создал некоторую автоматизацию для сортировки / фильтрации столбцов в таблице Excel, но один из столбцов постоянно меняется еженедельно.Смотрите «Неделя 24» в коде ниже.Как я могу ссылаться на ячейку здесь, чтобы она обновлялась соответственно?

Sub WKTOJ_HiLo()
'
' WKTOJ_HiLo Macro
'

'
    ActiveWorkbook.Worksheets("TOJ by Employee").ListObjects("Table1").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("TOJ by Employee").ListObjects("Table1").Sort. _
        SortFields.Add Key:=Range("Table1[[#All],[Week 24]]"), SortOn:= _
        xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("TOJ by Employee").ListObjects("Table1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=Range("E7").Value, _
        Criteria1:="<>", Operator:=xlFilterValues
End Sub

1 Ответ

1 голос
/ 18 июня 2019

Если код работает, то передайте столбец как переменную, основываясь на текущей неделе с WorksheetFunction.WeekNum(date).Добавьте это к коду:

Dim weeklyRange as String
Dim week as Long

currentWeek = WorksheetFunction.WeekNum(date)
weeklyRange = "Table1[[#All],[Week " & currentWeek & "]]"

ActiveWorkbook.Worksheets("TOJ by Employee").ListObjects("Table1").Sort. _
SortFields.Add Key:=Range(weeklyRange), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers

Рекомендуется избегать ActiveWorkbook и ActiveSheet в Excel:

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