工作表循环不跳过所需的工作表

时间:2019-09-24 15:13:00

标签: excel vba

我正在尝试让宏在所有工作表上执行查找和替换功能,但保存该表的工作表包含查找和替换值。但是,执行宏后,它将替换表中的值,而不替换其余工作表中的值。

我从一个网站上提取了此代码:

https://www.thespreadsheetguru.com/the-code-vault/2014/4/14/find-and-replace-all

因为他们正在努力实现我的相同目标,但这没有用。我的修改了一下,因为最初我的数据格式不同,但是我更改了数据以匹配网站输入,尽管它仍然无法正常工作。

我尝试使用Worksheets.Count方法,并使用i = 2循环到ws_count并将find&replace表放置为第一张表,但是这也失败了。我还尝试了选择案例方法,但同样失败了。

我想知道是否更改了某些背景设置,这会阻止它识别工作表名称?不确定问题出在哪里,因为我的格式设置似乎与询问基本相同问题的已解决问题完全相同。

Dim ws As Worksheet
Dim FindList As Long, ReplaceList As Long
Dim tbl As ListObject
Dim ReplaceArray As Variant
Dim j As Long


'Variable pointing to table
  Set tbl = Worksheets("DataSheet").ListObjects("ReplaceTable")

'Code here loads table data into array

'Loop through each item in Array lists
  For i = LBound(ReplaceArray, 1) To UBound(ReplaceArray, 2)
    'Loop through each worksheet in ActiveWorkbook except data sheet
      For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "DataSheet" Then

            ws.Cells.Replace What:=ReplaceArray(FindList, i), Replacement:=ReplaceArray(ReplaceList, i), _
            LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
            SearchFormat:=False, ReplaceFormat:=False

        End If
      Next ws
  Next i

理想的输出,即在表中的查找列表中定义的值,将被替换表上除包含表的表之外的所有表中的值取代。

0 个答案:

没有答案