通过Excel VBA按钮隐藏包含特定值单元格的列
我有一个电子表格,其中列有2015-2020年星期一至星期六的日期。当我打印这张纸时,我只想看到“星期一”列,而不是星期二和星期六。第14行有日期(dd/mm),第15行有一周中的某一天(例如,“M”表示星期一,“T”表示星期二等)。我希望能够在隐藏所有非周一专栏和查看所有专栏之间切换。下面的VBA按钮代码告诉我“运行时错误'13'-类型不匹配”。是否有一个简单的修复此按钮的方法,或者有更好的方法来完成此操作通过Excel VBA按钮隐藏包含特定值单元格的列,excel,vba,Excel,Vba,我有一个电子表格,其中列有2015-2020年星期一至星期六的日期。当我打印这张纸时,我只想看到“星期一”列,而不是星期二和星期六。第14行有日期(dd/mm),第15行有一周中的某一天(例如,“M”表示星期一,“T”表示星期二等)。我希望能够在隐藏所有非周一专栏和查看所有专栏之间切换。下面的VBA按钮代码告诉我“运行时错误'13'-类型不匹配”。是否有一个简单的修复此按钮的方法,或者有更好的方法来完成此操作 Private Sub CommandButton1_Click() Dim
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
你的代码很接近,但如果。。。或或语法处于禁用状态。您的
或条件是独立的,它们必须包含一个计算结果为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()
:
所以如果你的单元格的值在那一串工作日字母中,那么。。。做任何事您的叙述与您的代码讲述的故事不同。描述将M、T、W、Th、F、Sa、Su放在第15行,但代码看起来在第14行
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
在任何情况下,我都是根据第14行中的实际日期来确定数字
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
要打开或关闭某个对象,只需反转其布尔值。。这里的隐藏值是正确的.Visible
不是范围的属性。非常好。繁琐的语法正是我想要的-谢谢!还有与上面相同的问题-If语句中的>0必须是Yes/No或True/False响应?抱歉-我已经简单地使用了MatLab,但除此之外,这是我第一次尝试任何类型的编码。是的,IF
需要TRUE
或FALSE
来操作INSTR()
返回可以在字符串中找到字符的数字。因此,如果大于0,则字符位于字符串中,if
将获得一个TRUE
。前面的或
语句将返回类似真或假或假或假
的内容,即真
,因此如果
也很高兴。是的-应该是第15行。这解决了我的问题,但是您能解释一下If语句中的>1语法吗?您是否单击了我提供给MSDN文档的链接?这很简单。我很乐意澄清您不理解的任何具体内容,但我通常不会在注释中重写文档。