我正在嘗試為 20 名員工制定 2 年的計劃。在這里我想隱藏輸入中已經過去的周數。
下面是我走了多遠。經過測驗,它似乎可以作業到“全部”部分,但無法弄清楚最后一部分。使用輸入框,我希望此人能夠根據第一行輸入值,即 2023 年第 1 周 (20231) 到 2024 年第 52 周 (202452)。
我的目標是,如果有人輸入 202336 的值,它應該顯示 2023 第 36 周及以后,并且它會隱藏前幾周。
有人可以幫助我嗎?提前致謝!
Sub Hidepastweeks()
Dim myValue As Variant
myValue = InputBox("Weeks visible from week:", "Visable weeks")
Dim c As Range
Range("A2").Value = myValue
With Range("G1:DF1")
Application.ScreenUpdating = False
.EntireColumn.Hidden = (myValue <> "All")
If myValue <> "All" Then
For Each c In Range("G1:DF1").Cells
If c.Value < "myValue" Then
c.EntireColumn.Hidden = True
End If
Next
End If
Application.ScreenUpdating = True
End With
End Sub
我嘗試了不同的網站,但他們似乎都有一個等于公式而不是更少。
uj5u.com熱心網友回復:
匹配前隱藏列 ( Application.Match)
Sub HidePastWeeks()
Dim myValue As Variant
myValue = InputBox("Weeks visible from week:", "Visible weeks")
Dim ws As Worksheet: Set ws = ActiveSheet ' improve!
ws.Range("A2").Value = myValue
Dim srg As Range: Set srg = ws.Range("G1:DF1")
' Allow case-insensitivity with 'vbTextCompare' i.e. 'all = ALL'.
Dim ItsNotAll As Boolean
ItsNotAll = StrComp(myValue, "All", vbTextCompare) <> 0
Application.ScreenUpdating = False
' Show or hide all columns if it's 'All' or not 'All' respectively.
srg.EntireColumn.Hidden = ItsNotAll
Dim cIndex As Variant ' could be an error value
If ItsNotAll Then
cIndex = Application.Match(myValue, srg, 0)
If IsNumeric(cIndex) Then ' show
srg.Resize(, srg.Columns.Count - cIndex 1) _
.Offset(, cIndex - 1).EntireColumn.Hidden = False
'Else ' show none; previously already set
End If
'Else ' show all; previously already set
End If
Application.ScreenUpdating = True
End Sub
uj5u.com熱心網友回復:
如果你去掉 myValue 周圍的引號,它可能會按原樣作業
如果 c.Value < "myValue" 那么
寫的星期是否與您從用戶輸入中請求的一樣,例如 202336 在 CG1(或其他)中?如果不是,則必須使用調整才能與 myValue 進行比較。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534674.html
標籤:擅长VBA
