Vba 工作簿中的对象必需错误\u打开For循环

Vba 工作簿中的对象必需错误\u打开For循环,vba,excel,excel-2013,Vba,Excel,Excel 2013,***它起作用了!!感谢大家的帮助:D-Outs范围被声明并设置为“columnrange”,而for循环使用的是“columnrange”。这是一些小事;)。感谢大家的真知灼见和指导 *谢谢大家的帮助!我已经根据回复更新了代码。当For循环运行时,错误肯定会出现——如果它被注释掉,则没有错误。我认为错误在于范围“columnrange”对象。谢谢 我有一个简单的Workbook\u Open()例程,它打开一个用户表单“SelectData”,并设置一个组合框“DisplayData”值。我有

***它起作用了!!感谢大家的帮助:D-Outs范围被声明并设置为“columnrange”,而for循环使用的是“columnrange”。这是一些小事;)。感谢大家的真知灼见和指导

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

我有一个简单的
Workbook\u Open()
例程,它打开一个用户表单“SelectData”,并设置一个组合框“DisplayData”值。我有一个
MsgBox
,它确认组合框“DisplayData”中设置的值。
设置后,用户表单“SelectData”将隐藏。然后,有一个
“for”
循环,用于隐藏范围“columnrange”中给定单元格不等于组合框值的所有列。我得到了一个错误“objectrequired”,但我一辈子都不知道我哪里出了错。此电子表格的目标是:“打开时”,允许用户过滤从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
Private子工作簿\u Open()
变暗列范围作为范围
暗淡单元格作为范围
设置ColumnRange=ActiveWorkbook.Worksheets(“owssvr”).Range(“G1:Z1”)
选择数据。显示
MsgBox(SelectData.DisplayData.Value)
对于columnrange中的每个单元格
如果选择Data.DisplayData.Value单元格,则
cell.EntireColumn.Hidden=True
其他的
cell.EntireColumn.Hidden=False
如果结束
下一个细胞
端接头

您需要确保SelectData表单已打开。您是否有“确定”或“关闭”按钮的代码?如果您使用类似于
Me.Close
的东西,那么您将没有对象。您可以改为使用
Me.Hide

更改循环条件以验证单元格而不是列范围。下面是一个应该可以工作的简化代码

For Each cell In columnrange    
    If SelectData.DisplayData.Value <> cell Then
        cell.EntireColumn.Hidden = True
    Else
        cell.EntireColumn.Hidden = False
    End If    
Next cell
列范围中每个单元格的

如果选择Data.DisplayData.Value单元格,则
cell.EntireColumn.Hidden=True
其他的
cell.EntireColumn.Hidden=False
如果结束
下一个细胞

使用中断;您能告诉我们在哪一行代码错误之后会出现吗?请尝试
cell
,因为这就是您正在循环的“columnrange.cells中的每个单元格”-您还想隐藏shA.t提到的
cell.entireclumn.hidden=true
。请向我们提供错误行。如果您知道在哪里查找,那么调试就简单多了;)添加到上面,但也想在这里列出-感谢大家的帮助:D-原来范围被声明并设置为“columnrange”,for循环使用“columnrange”。这是一些小事;)。感谢大家的真知灼见和指导!