前回の質問でも同じ補足をしましたが、VBAの文字列では改行をそのまま入力することはできません
「 _
」はVBAコードとしての改行を無視するのみです
"SELECT TOP 1 基4, 変位4, №" & _
"FROM T_01_地耐力"
は、単に
"SELECT TOP 1 基4, 変位4, №" & "FROM T_01_地耐力"
として実行されます。この結果生成される文字列は
SELECT TOP 1 基4, 変位4, №FROM T_01_地耐力
となります。これでは、「SELECT
句で№FROM
フィールドを指定」という記述になってしまいますね
この直後ですでに構文エラーとなるような気もしますが、エラーメッセージがそのように出力されるのはよくわかりません
hirotonが提示したちょっと楽をする記述をするなら次の通りです
StrSQL = _
" SELECT TOP 1 基4, 変位4, №" & _
" FROM T_01_地耐力" & _
" WHERE (T_01_地耐力.№ Between 1 And 9)" & _
" ORDER BY T_01_地耐力.変位4 DESC , T_01_地耐力.№ DESC"
StrSQL =
" SELECT TOP 1 基4, 変位4, №" &
" FROM T_01地耐力" &
" WHERE (T_01地耐力.№ Between 1 And 9)" &
" ORDER BY T_01_地耐力.変位4 DESC , T_01_地耐力.№ DESC"
実際のSQL構文部分の各行で先頭に半角スペースを追加する形で記述します
SQL構文は「改行」と「半角スペース」が同じ役割をするので、VBAでは直接入力できない改行の代わりに半角スペースを使います。さらに、改行を行の最後に入力するかわりに、行の先頭で記述します
こうすることにより、
面倒な改行の入力が半角スペース1つで済む
インデントがそろって見やすい
行末(文字列の最後)という気づきにくいところでの記述漏れを防げる
というメリットがあります
通報 ...