Код разрывов именованных диапазонов - PullRequest
1 голос
/ 13 мая 2010

У меня есть одна рабочая тетрадь с несколькими листами. Я заполняю списки (извлекаю статические данные из ячеек) на 2-м листе, нажимаю кнопку, и она работает нормально.

Когда я заполняю списки с именованным диапазоном, список заполняется так, как я хочу, но я получаю ошибку, потому что код думает, что я ничего не выбрал в списке, хотя я это сделал. Таким образом, он проходит через "" вместо "заголовка".

Это общая проблема? Именованный диапазон не является проблемой, поскольку он проходит через данные в список, и я знаю, что он выбирает данные, потому что, как только список теряет фокус, он выплевывает содержимое ячейки в ячейку A1.

Что еще более странно, так это то, что у меня есть содержимое списка со значением Msg1. Таким образом, A1 заполняется Msg1 (что я на самом деле выбрал в списке). Но когда я пытаюсь использовать Msg1 в коде, он говорит мне, что Msg1 "". Опять же, это происходит только тогда, когда я использую динамический именованный диапазон, а не статические данные в ячейках K1: K9.

Частная функция strEndSQL1 As String

Dim strSQL As String

strSQL = ""
        'Create SQL statement
    strSQL = "FROM (SELECT * FROM dbo.Filter WHERE ID = " & TextBox1.Text & " And Source IN (" & Msg1 & ")) a FULL OUTER JOIN "
    strSQL = strSQL & "(SELECT * FROM dbo.Filters WHERE ID = " & TextBox2.Text & " And Source IN (" & Msg1 & ")) b "
    strSQL = strSQL & "ON a.Group = b.Group    
strEndSQL = strSQL

Функция завершения

1 Ответ

1 голос
/ 14 мая 2010

Я не уверен, как вы заполняете список, или нет, является ли список из панели инструментов форм или панели инструментов управления. Если это последнее, вот пример для заполнения и извлечения значений.

Sub FillListBox()

    Sheet1.ListBox1.List = Sheet1.Range("MyNamedRange").Value

End Sub

Sub MakeSQL()

    Dim sSql As String
    Dim Msg1 As String

    With Sheet1.ListBox1
        If .ListIndex > -1 Then
            Msg1 = .Value
        End If
    End With

    sSql = "SELECT * FROM MyTable WHERE ID=" & Msg1

    Debug.Print sSql

End Sub

Обратите внимание, что свойство Value будет зависеть от того, что вы установили в свойстве BoundColumn.

...