2017-04-11 81 views
1

我有這個現有的代碼,如果我保存它針對特定的工作表的工作原理:在這裏玩家列出Excel VBA中的所有工作表的字符串操作

Sub Replacer() 
    Dim N As Long, i As Long 

    For h = 1 To 2 
    If h = 1 Then 
     sLetter = "A" 
    Else 
     sLetter = "B" 
    End If 

    N = Cells(Rows.Count, sLetter).End(xlUp).Row 

    For i = 1 To N 
     If Left(Cells(i, sLetter).Value, 1) = "T" Then 
      sTmp = Right(Cells(i, sLetter).Value, Len(Cells(i, sLetter)) - 1) 
      Cells(i, sLetter).Value = sTmp 
     End If 
    Next i 
    Next h 
End Sub 

第2列可能有,例如「T2」的第二捆綁。其他行將只有數字。我需要去掉「T」,這樣該單元格纔是嚴格的數字。我有許多格式相同但帶有不同表格的工作表。

但是,我希望它能夠遍歷所有可用的工作表並做同樣的事情。我已經找到了工作表循環的基本語法,但是我無法獲得原始循環在該外部循環內/內部工作的正確語法。然後,我會將此功能保存在「本書」VBA部分下,然後從那裏調用。

For Each ws In ActiveWorkbook.Worksheets 
     ????? 
Next ws 

有人可以協助嗎?

p.s.我相信有人也會有更簡潔的方式讓搜索通過列A和B,而不是我目前使用的。

+3

我強烈建議你在你的模塊的頂部加上'Option explicit'。你的一半變數似乎未公開。 –

回答

1

您想要如您所說去除T。所以我將以我的答案爲基礎。 下面將刪除所有工作表中列A和B中的所有T

Sub RemoveT() 
    Dim ws As Worksheet 
    For Each ws In ThisWorkbook.Worksheets 
     ws.Range("A:B").Replace "T", "" 
    Next 
End Sub 
+0

完美L42和最簡單的代碼!我不確定這是否會清空整個單元格的內容,因此我爲什麼要做整個字符串長度,左右函數。 –

0

您需要激活每個工作表,然後運行您的代碼,這不是最乾淨但是可行的解決方案。

Sub ReplacerAll() 
    For Each ws In ActiveWorkbook.Worksheets 
     ws.Activate 
     Call Replacer 
    Next ws 
End Sub