通过Excel VBA按钮

时间:2016-02-23 19:16:37

标签: excel-vba vba excel

我有一个电子表格,其中包含与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

2 个答案:

答案 0 :(得分:0)

您的代码已关闭,但IF ... OR ... OR语法已关闭。您的OR条件是独立的,并且必须包含一个评估为TrueFalse的表达式。

所以,相反,它应该是:

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

要打开或关闭某些内容,只需将其布尔值反转即可。