Я ищу какой-нибудь код VBA или справочник, который может найти все места в книге (или, возможно, за ее пределами, но это не является нормальным использованием для меня). Я использую Excel 2010 (пока).
Я записываю полный список имен, их источников, формул и мест их использования. У меня есть несколько первых из класса имен, но метод «где они используются» отнимает много времени, даже если отключить действия обновления Excel.
Я видел несколько ссылок на этот код (ниже) в различных сайты, но это трудоемкий метод. (Я упоминаю некоторые имена в больших количествах, например, тысячи). Код ниже: https://excelhelphq.com/how-to-find-all-dependent-cells-outside-of-worksheet-and-workbook-in-excel-vba/
Sub messageBoxCellDependents()
Dim SelRange As Range
Set SelRange = Selection
MsgBox findDepend(SelRange) 'show user dependent cells in a pop up message box
End Sub
Function fullAddress(inCell As Range) As String
fullAddress = inCell.Address(External:=True)
End Function
Function findDepend(ByVal inRange As Range) As String
Dim sheetIdx As Integer
sheetIdx = Sheets(inRange.Parent.Name).Index
If sheetIdx = Worksheets.Count Then 'vba bug workaround
Sheets(sheetIdx - 1).Activate
Else
Sheets(Worksheets.Count).Activate
End If
Dim inAddress As String, returnSelection As Range
Dim i As Long, pCount As Long, qCount As Long
Set returnSelection = Selection
inAddress = fullAddress(inRange)
Application.ScreenUpdating = False
With inRange
.ShowPrecedents
.ShowDependents
.NavigateArrow False, 1
Do Until fullAddress(ActiveCell) = inAddress
pCount = pCount + 1
.NavigateArrow False, pCount
If ActiveSheet.Name <> returnSelection.Parent.Name Then
Do
qCount = qCount + 1
.NavigateArrow False, pCount, qCount
findDepend = findDepend & fullAddress(Selection) & Chr(13)
On Error Resume Next
.NavigateArrow False, pCount, qCount + 1
Loop Until Err.Number <> 0
.NavigateArrow False, pCount + 1
Else
findDepend = findDepend & fullAddress(Selection) & Chr(13)
.NavigateArrow False, pCount + 1
End If
Loop
.Parent.ClearArrows
End With
With returnSelection
.Parent.Activate
.Select
End With
Sheets(sheetIdx).Activate 'activate original worksheet
End Function
Однако, при использовании функции «Трассировка зависимостей» на ленте, полученные стрелки и ссылки занимают столько времени, сколько требуется для стрелки (когда они находятся на листе) для рендеринга на экране, что мне кажется, что есть записанный список того, где используются элементы (по крайней мере, в рабочей книге).
Существует ли этот список на самом деле? Есть ли способ добраться до него? В теории должен быть более быстрый метод.