2016-05-09 160 views
2

我有一個代碼,我以前在按照預期工作的其他項目中使用過。我現在使用這個代碼具有不同的值。但任何包含「WorkGroup Manager」以外的值的行都不會被刪除。我現在在Excel 2013工作(該公司剛剛從2007年升級)。這是否會導致代碼無法正常工作?我不知道Excel 2007和Excel 2013之間的區別是什麼,因爲它與VBA編碼有關。根據列值刪除行

Sub Filter_WGM() 

    Dim PTASK_Template As Workbook 
     Set PTASK_Template = Workbooks("BCRS Unassigned Tasks Template.xlsm") 
    Dim WGMd As Worksheet 
     Set WGMd = PTASK_Template.Sheets("WGM") 

    Application.ScreenUpdating = False 
    Application.Calculation = xlCalculationManual 


     With WGMd 
     Dim LRMf As Long 
      For LRMf = Cells(Rows.Count, 3).End(xlUp).Row To 2 Step -1 
       If Cells(LRMf, 3).Value <> "WorkGroup Manager" Then 
        Rows(LRMf).Delete 
       End If 
      Next LRMf 
     End With 

    Application.ScreenUpdating = True 
    Application.Calculation = xlCalculationAutomatic 

End Sub 

我需要重複這個代碼有着不同的價值觀對其他兩個工作表的工作後,我得到它的這一個工作。

+1

如果你打算使用'with',在'cells'前面加'.'。編輯:或者真的是所有的工作表對象。 – findwindow

+0

@findwindow他們倆? –

+3

所有這些。包括「行」。如果你打算使用它,請用''查找。 – findwindow

回答

1

試試這個,如建議我已經使用with語句,並重新調整了一些代碼以便於閱讀。另外,如果你打算在不同的工作表上使用這個參數,你可以嘗試下面的幾行。然後,您可以關閉該部分並傳遞相關參數。 (請注意,此代碼未經測試)。

Sub DeleteRowsFromSheet(TargetSheet As Worksheet, ValueColumn As Integer, Value As String) 

Dim MyRow As Integer 

With TargetSheet 
    For MyRow = 2 To .Cells(.Rows.Count,ValueColumn).End(XlUp).Row 
     If .Cells(MyRow,ValueColumn).Value <> Value Then 
      .Row(MyRow).EntireRow.Delete 
      MyRow = MyRow - 1 
     End If 
    Next 
End With 

End Sub