简单的概念很难实现。一整天都没有运气。
我有一天=超日追踪器。每个新的一天,我都希望能够运行隐藏前一天的宏,并取消当前的一天。我有10天的时间显示(当天+ 9之前)。
通过谷歌搜索,我找到了一些好的代码,其功能正如我所描述的那样,除了它不会跳过一个列(如果我想在我的跟踪器中基本上跳过周末,我需要这样做。)< / p>
感谢您的帮助。
sub whatever()
dim i as long
for i = 4 to 34
if columns(i).hidden = false then
bfirst = true
columns(i).hidden = true
columns(i + 10).hidden = false
exit for
end if
next
end sub
答案 0 :(得分:0)
如果您的数据有一行日期,您确实可以使用Weekday(Cells(r,c))
确定它是否为周末,然后使用Select Case
来隐藏/取消隐藏列。
可以通过Date()
检索当前的电流。
然后,您可以在Sub Workbook_Open()
对象的ThisWorkbook
中设置代码。因此,当文件打开时,它会运行代码,因此今天不会隐藏前9天。
编辑:将这2个子项添加到“ThisWorkbook”对象中,根据工作表名称,行和列进行更改。如果您想要9个之前的“工作日”,那么您将不得不更改案例或使用不同的方法来确定是否应隐藏列。这就是我要去的地方。祝你好运!
Sub Workbook_Open()
ShowTodayPlusPrevious
End Sub
Private Sub ShowTodayPlusPrevious()
' Assuming Row 1 contains the dates, stating from column 2
Const DateRow As Long = 1
Const PrevDays As Long = 9
Dim oWS As Worksheet, lCol As Long, lLastCol As Long, bHide As Boolean
Set oWS = ThisWorkbook.Worksheets("Sheet1") ' Change this to the name of your sheet
lLastCol = oWS.Cells.SpecialCells(xlLastCell).Column
For lCol = 2 To lLastCol
bHide = True
Select Case Date - oWS.Cells(DateRow, lCol).Value
Case 0 To PrevDays
If Weekday(oWS.Cells(DateRow, lCol).Value) <> vbSaturday And _
Weekday(oWS.Cells(DateRow, lCol).Value) <> vbSunday Then
bHide = False
End If
End Select
oWS.Columns(lCol).Hidden = bHide
Next
Set oWS = Nothing
End Sub