複数のシートを含む 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