背景
我想根据第7行中是否有 x 来隐藏工作表中的列.x未输入但是通过公式填充。
我在另一个工作表中使用了以下代码,它是否有效。我唯一改变的是sub,工作表和行的名称(7而不是5)。
但是,每当我尝试从vba编辑器手动运行此子程序作为测试时,它会产生运行时错误13(类型不匹配)。
Sub hidCol2()
Dim i As Long
Application.ScreenUpdating = False
Set ws = ThisWorkbook.Worksheets("Zeitplan")
ws.Cells.EntireColumn.Hidden = False
For i = Cells(7, Columns.Count).End(xlToLeft).Column To 1 Step -1
If Cells(7, i) = "x" Then Cells(7, i).EntireColumn.Hidden = True
Next i
Application.ScreenUpdating = True
End Sub
我的问题:
为什么上面的代码会产生运行时错误13,我需要纠正什么?
答案 0 :(得分:0)
这是:
注意它没有Dim ws
,但我认为在使用之前对变量进行尺寸标注是一种很好的做法。
如果有人能让我知道为什么Dim ws
这里没有必要会让我头脑中有些疑惑。
Sub hidCol2()
Dim i As Long
Dim ws As Worksheet 'As Suggested by @eirikdaude but I don't know why it worked without it as well (Tested on a workbook with a single worksheet)
Application.ScreenUpdating = False
Set ws = ThisWorkbook.Worksheets("Zeitplan")
ws.Activate
ws.Cells.EntireColumn.Hidden = False
For i = ws.Cells(7, Columns.Count).End(xlToLeft).Column To 1 Step -1
If Trim(ws.Cells(7, i).Text) = "x" Then ws.Cells(7, i).EntireColumn.Hidden = True
Next i
Application.ScreenUpdating = True
End Sub