使用For循环在Workbook_Open中出现对象所需的错误

时间:2015-03-11 21:32:12

标签: excel vba excel-vba excel-2013

***它正在工作!!感谢大家的帮助:D - 声明范围已声明并设置为“columnnrange”,for循环使用“columnrange”。这是小事;)。感谢所有人的洞察力和指导!

*感谢大家的帮助!我已根据回复更新了代码。当For循环运行时肯定会出现错误 - 如果它被注释掉则没有错误。我相信错误是在“columnrange”对象的范围内。谢谢!

我有一个简单的Workbook_Open()例程,它打开UserForm“SelectData”并设置一个ComboBox“DisplayData”值。我有MsgBox确认ComboBox“DisplayData”中设置的值 设置后,将隐藏UserForm“SelectData”。然后,有一个"for"循环来隐藏范围“columnrange”中给定单元格不等于ComboBox值的所有列。我收到一个“需要对象”的错误但是对于我的生活无法弄清楚我哪里出错了。此电子表格的目标是:“打开”,允许用户过滤从SharePoint列表导出的Excel文档上的可见列。
在此先感谢!!

Private Sub Workbook_Open()

Dim columnrange As Range
Dim cell As Range

Set columnnrange = ActiveWorkbook.Worksheets("owssvr").Range("G1:Z1")

SelectData.Show

MsgBox (SelectData.DisplayData.Value)

For Each cell In columnrange
    If SelectData.DisplayData.Value <> cell Then
        cell.EntireColumn.Hidden = True
   Else
        cell.EntireColumn.Hidden = False
   End If
Next cell


End Sub

2 个答案:

答案 0 :(得分:0)

您需要确保SelectData表单已打开。确定或关闭按钮后面有代码吗?如果您使用类似Me.Close的内容,那么您将无法获得对象。相反,您可以使用Me.Hide

答案 1 :(得分:0)

更改循环条件以验证单元格,而不是列范围。这是一个应该有效的简化代码。

For Each cell In columnrange    
    If SelectData.DisplayData.Value <> cell Then
        cell.EntireColumn.Hidden = True
    Else
        cell.EntireColumn.Hidden = False
    End If    
Next cell