对象_worksheet的Excel VBA运行时错误1004方法范围失败

我真的需要帮助,以查明我的Excel VBA上有什么问题。 这里完全是初学者。

基本上,VBA代码将为工作表做“过滤”。 奇怪的是,当过滤其他类别时,vba工作。 但在1类,它只是不断给我运行时错误1004(对象_工作表的方法范围失败)。

debugging模式将始终精确到代码行:

Range(Mid(rangeToHide, 1, 199)).Select 

这里是代码:

 Private Sub cboPopulateDept_Change() Dim sh As Worksheet Dim rw As Range Dim RowCount As Integer Dim rangeToHide As String Dim emptyRow As Integer unHide If cboPopulateDept.Value = "ALL" Or cboPopulateDept.Value = "" Then Exit Sub End If RowCount = 1 Set sh = ActiveSheet For Each rw In sh.Rows If RowCount >= 6 Then If sh.Cells(RowCount, 1).Value Like "TOP Innovation Projects - Vision 2020 - Participating?" Then Exit For End If If sh.Cells(RowCount, 3).Value <> cboPopulateDept.Value And sh.Cells(RowCount, 3).Value <> "" Then 'sh.Cells(RowCount, 3).EntireRow.Hidden = True 'sh.Cells(RowCount + 1, 3).EntireRow.Hidden = True rangeToHide = rangeToHide & RowCount & ":" & RowCount + 1 & "," RowCount = RowCount + 2 Else RowCount = RowCount + 1 End If Else RowCount = RowCount + 1 End If Next rw rangeToHide = Mid(rangeToHide, 1, Len(rangeToHide) - 1) If Len(rangeToHide) <= 201 Then Range(rangeToHide).Select Selection.EntireRow.Hidden = True Else Range(Mid(rangeToHide, 1, 199)).Select Selection.EntireRow.Hidden = True Range(Mid(rangeToHide, 201, Len(rangeToHide))).Select Selection.EntireRow.Hidden = True End If 'Range(rangeToHide).Select 'Selection.EntireRow.Hidden = True Range("A8:A9").Select End Sub 

谢谢

干杯,RH

你可能没有select一个有效的范围:

 Range(Mid(rangeToHide, 1, 199)).Select 

由于rangeToHide被声明为一个string,除非Mid(rangeToHide, 1, 199)parsing为一个有效的范围地址,如"A3"那么你将无法在Range(myexpression).Select使用它。 把这个expression放在一个观察,并停止价值的变化。 然后运行代码并检查expression式在使用filter时发生更改的位置的值。

你也应该使用VBNullString而不是“”和Long而不是整数。 另外,使用顶部显式选项来检查你是否已经声明了所有的variables以及它们是否被使用。 并明确引用ActiveWorkbook而不是隐式的。