У меня есть именованный диапазон lstVendors, который ссылается на: = OFFSET (Data! $ W $ 2,0,0, COUNTA (Data! $ W $ 2: $ W $ 400), 1). Я хочу, чтобы этот диапазон был заполнен при открытии рабочей книги. У меня есть следующий код для этого:Невозможно использовать именованный диапазон, когда он пуст
Private Sub Workbook_Open()
Application.WindowState = xlMaximized
Dim rslt()
Dim i As Integer
Dim n As Integer
Dim startRng As Range
Dim DropDown1 As DropDown
ThisWorkbook.Sheets("Dashboard").Shapes("TextBox 6").Visible = False
' Range("lstVendors").Offset(0, 0).Value = "Please Select..."
' Set DropDown1 = ThisWorkbook.Sheets("Dashboard").DropDowns("Drop Down 1")
' DropDown1.Value = 1
On Error Resume Next
If Not IsError(Range("lstVendors")) Then
Range("lstVendors").ClearContents
End If
On Error GoTo 0
rslt = Application.Run("SQLite_Query", "path/to/my/sqlite", "SELECT PROGRAM_ID FROM VENDOR;")
Set startRng = Range("lstVendors")
i = 0
For n = 2 To UBound(rslt)
Range("lstVendors").Offset(i, 0).Value = rslt(n)(0)
i = i + 1
Next n
End Sub
Она ошибки на Set startRng = Range ("lstVendors"). Я знаю, что это потому, что в этом диапазоне ничего не происходит, когда я пытаюсь установить его, потому что, если я помещаю одну запись в именованный диапазон, набор работает, однако, мне нужно, чтобы он заполнялся sqlite-запросом на каждом открытии, поскольку данные изменения.
Любые предложения, которые были высоко оценены.
Какое сообщение об ошибке вы получаете? Кроме того, я не уверен, что ваш 'On Error Resume Next' используется соответствующим образом. –
Извините, это ошибка времени выполнения '1004': метод 'Range' объекта '_Global' не удался. В основном это означает, что именованный диапазон не существует, потому что он пуст. Application.Goto Worksheets («Данные»). Диапазон («lstVendors») возвращает ту же ошибку. – Methonis
Является ли ошибка, потому что ваш sql не возвращает никаких результатов, так что это аннулирует часть COUNTA вашей формулы? Если да, попробуйте обернуть это в статусе Max, например: = OFFSET (данные! $ W $ 2,0,0, MAX (COUNTA (данные! $ W $ 2: $ W $ 400), 2), 1) – sous2817