for i 循环中的运行时错误 13,它曾经有效
Runtime error 13 in a for i loop, which used to work
背景:
我想根据第 7 行是否有 x 隐藏 sheet 中的列。x 不是输入的,而是通过公式填写的.
我在另一个作品中使用了以下代码sheet,是否有效。我唯一改变的是子名称、作品sheet 和行(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,我需要更正什么?
这里是:
请注意,它可以在没有 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
背景:
我想根据第 7 行是否有 x 隐藏 sheet 中的列。x 不是输入的,而是通过公式填写的.
我在另一个作品中使用了以下代码sheet,是否有效。我唯一改变的是子名称、作品sheet 和行(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,我需要更正什么?
这里是:
请注意,它可以在没有 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