Navedite, promijenite ili izbrišite vanjske reference formula (veze) pomoću VBA u programu Microsoft Excel

Sadržaj

Pomoću dolje navedenih makronaredbi možete pronaći i izbrisati formule u ćelijama koje se odnose na druge radne knjige.
Makronaredbe ne nalaze sve vanjske reference jer gledaju samo u formulama radnog lista.

Sub DeleteOrListLinks () Dim i As Integer Ako ActiveWorkbook nije ništa Zatim izađite iz Sub i = MsgBox ("DA: Izbrišite vanjske reference formula" & Chr (13) & _ "NE: Navedite reference vanjskih formula", _ vbQuestion + vbYesNoCancel, "Delete ili navedite reference vanjskih formula ") Odaberite Case i Case vbDa DeleteExternalFormulaReferences Case vbNo ListExternalFormulaReferences End Odaberite End Sub Sub DeleteExternalFormulaReferences () Dim ws As Worksheet, AWS As String, ConfirmReplace As Boolean Dim i kao integer, OK kao Book Sub i = MsgBox ("Potvrdite sve zamjene vanjskih referenci formula vrijednostima?", _ VbQuestion + vbYesNoCancel, "Pretvori vanjske reference formula") ConfirmReplace = False Ako je i = vbCancel Zatim izađite iz Sub Ako je i = vbDa Zatim potvrdite zamjenu = Istina AWS = ActiveSheet.Name Application.ScreenUpdating = Netačno Za svaki ws U ActiveWorkbook.Worksheets OK = DeleteLinksInWS (ConfirmReplace, ws) Ako nije u redu, onda izađite za sljedeći ws Set ws = Ništa tablice (A WS) .Odaberite Application.ScreenUpdating = True End Sub Privatna funkcija DeleteLinksInWS (ConfirmReplace As Boolean, _ ws As Worksheet) Kao Boolean Dim cl As Range, cFormula As String, i As Integer DeleteLinksInWS = True Ako ws nije ništa, tada izađite iz aplikacije Funkcija. StatusBar = "Brisanje vanjskih referenci formula u" & _ ws.Name & "…" ws.Aktiviraj za svaki cl U ws.UsedRange cFormula = cl.Formula Ako je Len (cFormula)> 0 Onda ako je lijevo $ (cFormula, 1) = "=" Onda ako je InStr (cFormula, "[")> 1 Onda ako nije PotvrdiZamijeni Zatim cl.Formula = cl.Value Else Application.ScreenUpdating = True cl. Odaberite i = MsgBox ("Zamijenite formulu s vrijednošću?", _ vbQuestion + vbYesNoCancel, _ "Zamijenite vanjsku referencu formule u" & _ cl.Address (False, False, xlA1) & _ "s vrijednošću ćelije?") Application.ScreenUpdating = False Ako je i = vbCancel Zatim DeleteLinksInWS = False Izlaz Funkcija Završi ako je i = vbDa Zatim greška Nastavi dalje 'u slučaju da je radni list zaštićen cl.Formula = cl.Vrijednost na pogrešci Idi na 0 Završi ako E nd Ako je kraj Ako je kraj Ako je kraj Ako je sljedeće cl Postavite cl = Ništa Application.StatusBar = False End Funkcija Pod ListExternalFormulaReferences () Zatamni kao radni list, TargetWS kao radni list, SourceWB kao radna knjiga Ako ActiveWorkbook nije ništa Zatim izađite iz pod aplikacije.ScreenUpdating = False With ActiveWorkbook On Error Nastavi Sljedeći skup TargetWS = .Radni listovi.Dodaj (Prije: =. Radni listovi (1)) Ako TargetWS nije ništa Tada je radna knjiga zaštićena Postavite SourceWB = ActiveWorkbook Set TargetWS = Radne knjige.Dodajte radne listove (1) SourceWB.Aktivirajte Postavi SourceWB = Ništa nema kraja ako je s TargetWS .Range ("A1"). Formula = "Sequence" .Range ("B1"). Formula = "Cell" .Range ("C1"). Formula = "Formula" .Range ( "A1: C1"). Font.Bold = True End With Za svaki ws U. Radnim tablicama Ako ne ws Je TargetWS Zatim ListLinksInWS ws, TargetWS End If Next ws Postavi ws = Ništa ne završava s TargetWS. Parent.Activate .Activate .Columns ("A: C"). Automatsko postavljanje pri pogrešci Nastavi sljedeće. Ime = "Popis veza" Na pogrešci Idi na 0 Završi s postavljenim ciljemWS = Ništa aplikacija.ScreenUpdati ng = True End Sub Private Sub ListLinksInWS (ws kao radni list, TargetWS kao radni list) Dim cl kao raspon, cFormula kao niz, tRow sve dok ws nije ništa, tada izađite iz podmlatka ako TargetWS nije ništa, izađite iz pod aplikacije.StatusBar = "Traženje vanjskog reference formula u "& _ ws.Name &" … "Za svaki cl U ws.UsedRange cFormula = cl.Formula Ako je Len (cFormula)> 0 Onda ako je lijevo $ (cFormula, 1) =" = "Tada ako je InStr (cFormula , "[")> 1 Zatim s TargetWS tRow = .Range ("A" & .Rows.Count) .End (xlUp) .Row + 1 .Range ("A" & tRow) .Formula = tRow - 1 .Range ("B" & tRow) .Formula = ws.Name & "!" & _ cl.Address (False, False, xlA1) .Range ("C" & tRow) .Formula = "'" & cFormula End With End If End If End If Next cl Set cl = Nothing Application.StatusBar = False End Sub

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave