複数のシートを含む 1 つのワークブックがあります。2 番目のシートのリストボックス (セルから静的データをプル) にデータを入力し、ボタンをクリックすると正常に実行されます。
リストボックスに名前付き範囲を入力すると、リストボックスは希望どおりに入力されますが、リストボックスで何も選択していないとコードが判断するため、エラーが発生します。""したがって、の代わりに通過し"title"ます。
これはよくある問題ですか?名前付き範囲はデータを介してリストボックスに渡されるため問題ではありません。リストボックスがフォーカスを失うとすぐにセルの内容を cell に吐き出すため、データを選択していることがわかりますA1。
さらに奇妙なのは、リストボックスの内容が に設定されていることMsg1です。そのため、(リストボックスで実際に選択したもの)A1が入力されます。Msg1しかしMsg1、コードで使用しようとするMsg1と、 "". 繰り返しますが、これは、セル内の静的データではなく、動的な名前付き範囲を使用した場合にのみ発生しますK1:K9。
Private Function 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
End Function