我有一个电子表格,其中包含与2015-2020周一至周六的日期相关的列。当我打印这张纸时,我只想看到“星期一”列,而不是周二 - 周六。第14行具有日期(dd / mm),第15行具有星期几(例如,星期一为“M”,星期二为“T”等)。我希望能够在隐藏所有非星期一列和查看所有列之间切换。下面的VBA按钮代码给出了“运行时错误'13' - 类型不匹配。”是否有一个简单的修复此按钮,还是有更好的方法来实现这一目标?
Private Sub CommandButton1_Click()
Dim i As Long
For i = 11 To 222
If Cells(14, i).Value = "T" Or "W" Or "R" Or "F" Or "S" Then
Columns(i).EntireColumn.Hidden = True
Else
Columns(i).EntireColumn.Hidden = False
End If
Next i
End Sub
答案 0 :(得分:0)
您的代码已关闭,但IF ... OR ... OR
语法已关闭。您的OR
条件是独立的,并且必须包含一个评估为True
或False
的表达式。
所以,相反,它应该是:
If Cells(14, i).Value = "T" Or Cells(14, i).Value = "W" Or Cells(14, i).Value = "R" Or Cells(14, i).Value = "F" Or Cells(14, i).Value = "S" Then
诚然,这更麻烦,但应该可以解决这个问题。
由于您要查找的值是单个字符,因此您可以在此处作弊并使用INSTR()
:
If Instr(1, "TWRFS", Cells(14,i).value) > 0 Then
因此,如果您的单元格的值在该工作日字母字符串中,那么......做任何事情
答案 1 :(得分:0)
你的叙述与你的代码没有相同的故事。描述将M,T,W,Th,F,Sa,Su放在第15行,但代码在第14行中显示。
无论如何,我从第14行的实际日期确定数字Weekday function。
Private Sub CommandButton1_Click()
Dim i As Long
For i = 11 To 222
If Weekday(Cells(14, i).Value, vbMonday) > 1 Then
Columns(i).EntireColumn.Hidden = _
Not Columns(i).EntireColumn.Hidden
End If
Next i
End Sub
要打开或关闭某些内容,只需将其布尔值反转即可。