ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのエクセルVBAでセルの文字列の代入

  • mixiチェック
  • このエントリーをはてなブックマークに追加
度々ですみません(_ _)

エクセル2007のVBAでの質問です
SQLのWhere句を、セルに入力した値から代入しているのですが、テーブル内で型式が文字列であるカラムの場合にうまくいきません

数値の場合は、if(A1="","'%'",A1) として、空欄だったらワイルドカードを利用して全て出力させるようにできました、が…

数値の場合は…
〜(略)sql = sql & "and 数値 like " & cells(1,1)
として実行できるのですが
〜(略)sql = sql & "and 文字 like " & cells(1,2)
とすると、SQLエラーになってしまいます

文字列の場合は%ではなくて、*だと検索が出来るようで
直接
〜(略)sql = sql & "and 数値 like "*" "
とすれば実行が出来ました
けれど、if(A1="",""*"",A1) とは出来ないので、どのようにすれば文字列を取得できるのでしょうか?
また、セルに直接文字を打ち込んでも実行が出来ないので、& cells(1,2) は文字列だと宣言のようなものが必要なのでしょうか?

宜しくお願い致します

コメント(4)

空欄の場合に絞込みが不要なのであれば、
セル中の値を無条件に直接SQL文Where句に追記するのではなくて、
セルの値に応じてSQL文に追加するか否かを場合分けしては如何でしょう?

If cells(1,2) <> "'%'" then 'ワイルドカードを示す文字??
 sql = sql & " and 文字 like " & cells(1,2)
End If

Where句自体が絞込みのための機能なので、
絞込みが不要なのに条件を追記しても処理の無駄でしょうし…。
Minonさん、早速ご回答ありがとうございます

どのみち、文字の形式がarchar2となっているようで、セルに入力をしてもエラーになってしまうのです…
数値は引っ張って来られるのですが…と言うところで悩んでおります
う〜ん、DB側の文字列の型が固定長でも可変長でも、基本的なSQL文に違いは無い
と思うのですが…。(結果が意図したとおりでなくともSQL実行エラーにはならない)


具体的にExcel側のセルにどんな式を記述したのか分からないので見当違いかも
知れませんが、単にSQL文中で右辺をシングルクォート'で囲むのを忘れていた
という話だったりしませんか?
例えば、StringField1というフィールドで「test」を含むレコードを
抽出したい場合に、SQL文が1のようになっていたりしませんか?
 1(誤): where StringField1 like %test%
 2(正): where StringField1 like '%test%'

%だと結果が返ってこなかったんですよね…

明日また、おっしゃるとおり'%_%'で含み検索を試してみます

ありがとうございました(_ _)

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。