あなたはこれを試すことができます。
Option Explicit
Sub ChangeFormulas()
Const LOOK_FOR As String = "#REF!"
Const REPLACE_WITH As String = "DATASETNEW"
Dim oWS As Worksheet, lCalcMode As Long
Dim aFormulas As Variant, r As Long, c As Long, bHasLookFor As Boolean
lCalcMode = Application.Calculation
Application.Calculation = xlCalculationManual
Debug.Print "WORKSHEET", "ROW", "COLUMN", """" & LOOK_FOR & """?", "FORMULA"
For Each oWS In ThisWorkbook.Worksheets
aFormulas = oWS.UsedRange.Formula
Select Case oWS.UsedRange.Cells.Count
Case Is > 1
For r = LBound(aFormulas, 1) To UBound(aFormulas, 1)
For c = LBound(aFormulas, 2) To UBound(aFormulas, 2)
bHasLookFor = (InStr(1, aFormulas(r, c), LOOK_FOR, vbTextCompare) > 0)
If bHasLookFor Then
Debug.Print oWS.Name, r, c, bHasLookFor, aFormulas(r, c)
oWS.UsedRange.Cells(r, c).Formula = Replace(aFormulas(r, c), LOOK_FOR, REPLACE_WITH)
End If
Next c
Next r
Case 1
bHasLookFor = (InStr(1, aFormulas, LOOK_FOR, vbTextCompare) > 0)
If bHasLookFor Then
Debug.Print oWS.Name, 1, 1, bHasLookFor, aFormulas
oWS.UsedRange.Cells(1, 1).Formula = Replace(aFormulas, LOOK_FOR, REPLACE_WITH)
End If
End Select
Next oWS
Application.Calculation = lCalcMode
End Sub
ワークブック内のすべてのワークシートを介してこれがループ、を探し、必要に応じて、これらの文字列を置換します。イミディエイトウィンドウに進行状況を表示します。
VBAにある必要がある場合:メモリ(ロットの高速化)または範囲ですべてのワークシートのすべてのUsedCellの式をループする必要がある場合は、それに応じて数式を変更します。 – PatricK
...どのように私はそれをやるだろうか?私は数式ですべてのセルをループし、数式全体を置き換えることができますが、#REFだけを置き換える方法はわかりません!テキスト? –