Aşağıdaki makrolar ile diğer çalışma kitaplarına başvuran hücrelerdeki formülleri bulabilir ve silebilirsiniz.
Makrolar, yalnızca çalışma sayfası formüllerine baktıklarından tüm dış referansları bulamaz.
Sub DeleteOrListLinks() Dim i ActiveWorkbook Hiçbir Şey Değilse Tamsayı Olarak Dim O zaman Exit Sub i = MsgBox("EVET: Harici formül referanslarını sil" & Chr(13) & _ "HAYIR: Harici formül referanslarını listele", _ vbQuestion + vbYesNoCancel, "Sil veya harici formül referanslarını listeleyin") Case i Case i Case vbYes DeleteExternalFormulaReferences Case vbNo ListExternalFormulaReferences End Select End Sub Sub DeleteExternalFormulaReferences() Dim ws As Worksheet, AWS As String, ConfirmReplace As Boolean Dim i As Integer, Hiçbir Şey Yok ise Boole Olarak Tamam, Çık Sub i = MsgBox("Tüm harici formül referanslarının değerlerle değiştirilmesini onayla?", _ vbQuestion + vbYesNoCancel, "Harici formül referanslarını dönüştür") ConfirmReplace = False If i = vbCancel O zaman Sub'dan Çık Eğer i = vbYes O zaman ConfirmReplace = True AWS = ActiveSheet.Name Application.ScreenUpdating = ActiveWorkbook.Worksheets'teki Her ws İçin Yanlış Tamam = DeleteLinksInWS(ConfirmReplace, ws) Tamam Değilse Sonraki ws İçin Çık Set ws = Hiçbir Şey Sheets(A WS).Select Application.ScreenUpdating = True End Sub Private Function DeleteLinksInWS(ConfirmReplace As Boolean, _ ws As Worksheet) Olarak Boolean Dim cl As Range, cFormula As String, i As Integer DeleteLinksInWS = ws Hiçbir Şey Değilse, İşlev Uygulamasından Çıkın. StatusBar = "" & _ ws.Name & "… " içindeki harici formül referansları siliniyor. ws.Activate For Her cl In ws.UsedRange cFormula = cl.Formula If Len(cFormula) > 0 Then If Left$(cFormula, 1) = "=" O zaman If InStr(cFormula, "[") > 1 Sonra OnaylanmadıysaDeğiştir Sonra cl.Formula = cl.Value Başka Application.ScreenUpdating = True cl.Select i = MsgBox("Formülü değerle değiştirelim mi?", _ vbQuestion + vbYesNoCancel, _ " & _ cl.Address(False, False, xlA1) & _ " içindeki harici formül referansını hücre değeriyle değiştiriniz mi?") Application.ScreenUpdating = False If i = vbCancel Sonra DeleteLinksInWS = False Exit Function Eğer i = vbYes ise Sonlandır Sonra Hatada Devam Et Sonraki ' çalışma sayfasının korumalı olması durumunda cl.Formula = cl.Value On Error Git 0 E ise Bitir nd If End If End If End If Sonraki cl Set cl = Nothing Application.StatusBar = False End Function Sub ListExternalFormulaReferences() Dim ws Çalışma Sayfası Olarak, TargetWS Çalışma Sayfası Olarak, SourceWB Çalışma Kitabı Olarak ActiveWorkbook Hiçbir Şey Değilse Alt Uygulamadan Çıkın.ScreenUpdating = İle Yanlış ActiveWorkbook On Error Resume Next Set TargetWS = .Worksheets.Add(Before:=.Worksheets(1)) Eğer TargetWS Hiçbir Şey Değilse, ' çalışma kitabı korumalı olarak ayarlayın SourceWB = ActiveWorkbook Set TargetWS = Workbooks.Add.Worksheets(1) SourceWB.Activate Set SourceWB = TargetWS ile Hiçbir Şey Bitmez .Range("A1").Formula = "Sequence" .Range("B1").Formula = "Hücre" .Range("C1").Formula = "Formula" .Range( "A1:C1").Font.Bold = .Worksheets In .Worksheets Değilse, TargetWS Olursa, True End ile Doğru Son O zaman ListLinksInWS ws, TargetWS Eğer Sonraki ws Set ws = Hiçbir Şey, TargetWS ile Bitmez .Parent.Activate .Activate .Columns ("A:C").Hatada Otomatik Sığdır Sonraki Devam Et .Name = Hatada "Bağlantı Listesi" GoTo 0 End With Set TargetWS = Hiçbir Şey Application.ScreenUpdati ng = True End Sub Private Sub ListLinksInWS(ws As Worksheet, TargetWS As Worksheet) Dim cl As Range, cFormula As String, tRow As Long Eğer ws Hiçbir Şey Değilse O Zaman Exit Sub Eğer TargetWS Hiçbir Şey Değilse O zaman Exit Sub Application.StatusBar = "Harici Bulma " & _ ws.Name & "… " içindeki formül referansları Her cl için ws.UsedRange'de cFormula = cl.Formula If Len(cFormula) > 0 Then If Left$(cFormula, 1) = "=" Then If InStr(cFormula) , "[") > 1 Sonra TargetWS ile tRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1 .Range("A" & tRow).Formül = tRow - 1 .Range ("B" ve tRow).Formül = ws.Name & "!" & _ cl.Address(False, False, xlA1) .Range("C" & tRow).Formula = "'" & cFormula End With End If End If Next If Next cl Set cl = Hiçbir Şey Application.StatusBar = False End Sub