#excel #vba
Вопрос:
Я пытаюсь перечислить все внешние источники на листе Excel, но я хотел бы, чтобы пользователь мог выбрать, в какой ячейке он хотел бы, чтобы ссылки начинали отображаться.
Я попробовал следующий код, но я просто не могу заставить его работать..
Sub ListExternalLink()
Dim wb As Workbook
Set wb = Application.ThisWorkbook
xRln = InputBox("Which row #?", "Listing external link..", "Numbers Only")
xCln = InputBox("Which column #?", "Listing external link..", "Numbers Only")
If Not IsEmpty(wb.LinkSources(xlExcelLinks)) Then
For Each link In wb.LinkSources(xlExcelLinks)
Application.ActiveSheet.Cells(xRln, xCln).Value = link
xRln = xRln 1
Next link
End If
End Sub
Что я делаю не так?
Кто-нибудь может помочь мне понять, как я могу заставить это работать?
Заранее благодарю вас за помощь!!
Комментарии:
1. Что именно происходит, когда вы пытаетесь запустить код?
2. Всплывают поля ввода и принимают ввод, но затем… ничего! Это как бы просто заканчивается. Но я могу подтвердить через диалоговое окно «Редактировать ссылки», что существуют ссылки на внешние источники.
Ответ №1:
Список Источников Ссылок
Выберите ячейку
Sub ListExternalLinksCell()
On Error GoTo ClearError
Const pTitle As String = "List External Links"
Dim defValue As String
If TypeOf Selection Is Range Then
defValue = Selection.Address
End If
On Error Resume Next
Dim FirstCell As Range
Set FirstCell = Application.InputBox("Select the first cell", _
pTitle, defValue, , , , , 8)
On Error GoTo ClearError
If FirstCell Is Nothing Then
MsgBox "Canceled by user.", vbExclamation, pTitle
Exit Sub
End If
Set FirstCell = FirstCell.Cells(1)
Dim wb As Workbook: Set wb = FirstCell.Worksheet.Parent
Dim lSources As Variant: lSources = wb.LinkSources(xlExcelLinks)
If IsEmpty(lSources) Then
MsgBox "No link sources found.", vbExclamation, pTitle
Exit Sub
End If
Dim lSource As Variant
For Each lSource In lSources
FirstCell.Value = lSource
Set FirstCell = FirstCell.Offset(1)
Next lSource
ProcExit:
Exit Sub
ClearError:
Debug.Print "Run-time error '" amp; Err.Number amp; "': " amp; Err.Description
Resume ProcExit
End Sub
Входные строки и столбцы
Sub ListExternalLinksRC()
On Error GoTo ClearError
Dim xRln As Variant, xCln As Variant
xRln = Application.InputBox("Which row #?", "Listing external link..", "Numbers Only", , , , , 1)
If xRln = False Then Exit Sub
xCln = Application.InputBox("Which column #?", "Listing external link..", "Numbers Only", , , , , 1)
If xCln = False Then Exit Sub
Dim xRow As Long: xRow = CLng(xRln)
Dim xCol As Long: xCol = CLng(xCln)
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = ActiveSheet
Dim Link As Variant
If Not IsEmpty(wb.LinkSources(xlExcelLinks)) Then
For Each Link In wb.LinkSources(xlExcelLinks)
Debug.Print Link
ws.Cells(xRow, xCol).Value = Link
xRow = xRow 1
Next Link
End If
ProcExit:
Exit Sub
ClearError:
Debug.Print "Run-time error '" amp; Err.Number amp; "': " amp; Err.Description
Resume ProcExit
End Sub