2016-04-25 80 views
1

秒Q在這裏,仍在學習,但正在努力做到最好!如果工作表'X'中的單元格包含工作表'y'的名稱,則刪除行工作表'x'

問:

我想運行一個宏,這需要工作表的名稱(這是在那一刻活動工作表),並使用它來刪除表「PD」每一行包含的名稱「M」列中的「上一個活動工作表」。比宏應該回到那個「上一個活動工作表」,並填充一些顏色的細胞(該部分應該是好的)

我嘗試了幾件事情,並在下面的其他主題的幫助下,我設法記錄按鈕得到這個代碼,它不工作

Sub FindandDelete 
Sheets("PD").Select 
Range("M").Select 
With ActiveSheet 
.AutoFilterMode = False 
With Range("M1", Range("M" & Rows.Count).End(xlUp)) 
    .AutoFilter 1, ActiveSheet.Previous.Name.Select 
    On Error Resume Next 
    .Offset(1).SpecialCells(12).EntireRow.Delete 
End With 
.AutoFilterMode = False 
End With 
ActiveSheet.Previous.Select 
Range("N16,N17").Select 
With Selection.Interior 
    .Pattern = xlSolid 
    .PatternColorIndex = xlAutomatic 
    .Color = 49407 
    .TintAndShade = 0 
    .PatternTintAndShade = 0 
End With 
Range("A1").Select 
End Sub 

對於激活表: How to activate a specific worksheet in Excel

刪除行: http://www.mrexcel.com/forum/excel-questions/537771-delete-row-if-specific-cell-value-matches-value-found-another-worksheet.html

希望任何人都可以幫助,如果需要更多的努力或解釋,很高興聽到。

+0

'採用隨機工作表的名稱(它是活動的如果你想隨機抽取一張表格,那麼你爲什麼提到'(這是當時的活動表格)'? – newguy

+1

我**高度**建議通過閱讀[本SO線程](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)如何避免使用'.Select'''.Activate',它可以爲您節省許多麻煩。 – BruceWayne

+0

@newguy:我編輯了我的問題:它應該取得當時活動工作表的名稱,但活動工作表可能有所不同(取決於選擇哪個工作表),所以不是隨機工作表。希望現在清楚。 – bart1701

回答

2

說實話你的代碼可能有一些調整工作,但我寧願從頭開始,並使用此:

Sub FindAndDelete 
    Dim strAName As String 
    Dim lngCounter as Long 
    strAName = ActiveSheet.Name 

    With Worksheets("PD") 
     For lngCounter = .Cells(Rows.Count, 13).End(xlUp).row to 1 Step -1 
      if .Cells(lngcounter, 13).value = strAName then 
       .Rows(lngCounter).Delete 
      end if 
     Next lngCounter 
    End with 

    'Do your coloring stuff, which you said is fine now 
End Sub 

你應該避免更換牀單。在VBA中通常不需要「激活」或「選擇」anyhting,這只是人類必須做的事情,因此MacroRecorder使用它...

+1

它會留下一些行,因爲刪除行會將其移動,因此每次刪除行時必須將lncounter放置1,或者最好從已用區域的最後一行循環到第一個 – newguy

+0

好點。我經常忘記循環下去 – Sergej

+0

@sergej:謝謝你的努力。不知道爲什麼,但如果我在活動工作表中運行,不幸的是,沒有任何反應?任何線索爲什麼? – bart1701

相關問題