***它正在工作!!感谢大家的帮助: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
答案 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