2017-05-20 8 views
-2

あなたからの助けが必要です。私はネットを検索し、私の問題の解決策を見つけることができません。 VBは私の特技ではありませんが、私が使用することを余儀なくされている実際の後方システムのために、VBは私のエンジニアリング時間を短縮する答えと思われます。私は動作するコードを見つけましたが、これを拡張する必要があります。VBを使用して特定のExcelシートで検索/置換する

すべてのシートではなく、特定のシートを1つだけ検索して置換するには、このコードが必要です。一度私はこの権利を得ると、私はより多くのことを行うためにそれを変更します。 :)

このコードを変更するにはどうすればよいですか?

Sub Multi_FindReplace() 
'PURPOSE: Find & Replace a list of text/values throughout entire workbook from a table 
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault 

Dim sht As Worksheet 
Dim fndList As Integer 
Dim rplcList As Integer 
Dim tbl As ListObject 
Dim myArray As Variant 

'Create variable to point to your table 
    Set tbl = Worksheets("Table").ListObjects("Table1") 

'Create an Array out of the Table's Data 
    Set TempArray = tbl.DataBodyRange 
    myArray = Application.Transpose(TempArray) 

'Designate Columns for Find/Replace data 
    fndList = 1 
    rplcList = 2 

'Loop through each item in Array lists 
    For x = LBound(myArray, 1) To UBound(myArray, 2) 
    'Loop through each worksheet in ActiveWorkbook (skip sheet with table in it) 
     For Each sht In ActiveWorkbook.Worksheets 
     If sht.Name <> tbl.Parent.Name Then 

      sht.Cells.Replace What:=myArray(fndList, x), Replacement:=myArray(rplcList, x), _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
      SearchFormat:=False, ReplaceFormat:=False 

     End If 
     Next sht 
    Next x 

End Sub 

このコードはかなり終わりですが、金銭的報酬なしで完全な範囲を与えることは公正ではありません。ちょうどこの解決策で十分です。 :)

PS:フォーマットはうまくいくと思っていますか?

答えて

0

はこの1つを試してみてください:

Sub Multi_FindReplace() 
Dim sht As Worksheet 
Dim fndList As Integer 
Dim rplcList As Integer 
Dim tbl As ListObject 
Dim myArray As Variant 

Set tbl = Worksheets("Table").ListObjects("Table1") 
Set TempArray = tbl.DataBodyRange 
Set sht = 'the sheet you want to run through 
myArray = Application.Transpose(TempArray) 
fndList = 1 rplcList = 2 

For x = LBound(myArray, 1) To UBound(myArray, 2) 
     sht.Cells.Replace What:=myArray(fndList, x), Replacement:=myArray(rplcList, x), _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
     SearchFormat:=False, ReplaceFormat:=False 
    End If 
Next x 
End Sub 
+0

はあなたに非常に多くのUGPありがとうございます。出来た。 –

+0

私は別の質問があります。私は別のスクリプトを書いています(それは正しい言葉ですか?)、毎回異なる値で215回実行する必要があります。私が行うコーディングのタイプでは、私はファンクションブロック(FB)を使用します。 VBでこれに使用する正しい用語は何でしょうか?私はVBの関数を読んだが、それは間違った "ツール"のようだ。サブとループは私が必要とするものに近いと思われる。私が接する前に、正しい方向に私を助けてください。 –

+0

ループを使用して、関数またはサブを呼び出します。あなたはそれらを呼び出すときにメソッドのパラメータをstart/useに与えることができます。関数だけが値を返すことができます。それは唯一の違いのようです。 – UGP

関連する問題