質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

911閲覧

変数に同じものが何度も入ってきてしまう

Naoko_Coco

総合スコア54

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/05/16 08:59

変数excecに文字列を入れているのですが、select caseすると,値はとれているのですが
そのあとに続けて最初のSELECT分から2回分、3回分となってしまいます。
SERECT・・・・・・SELECT・・・・・SELECT・・・
select case がいけないのでしょうか?
If文でやっていった方がよいのでしょうか?

VBA

1Sub SQL抽出() 2Dim n As String 3Dim excec As String 4 5 Set wb = ThisWorkbook 6 Set sh = wb.Worksheets("条件") 7 Set sql = wb.Worksheets("SQL") 8 9 r = sh.Range("C30").End(xlToRight).Column 10 11 excec = "" 12 excec = excec & "SELECT" 13 excec = excec & "count(distinct km_customer.cust_cd) " 14 excec = excec & "FROM " 15 excec = excec & "dba.km_customer INNER JOIN dba.km_member ON (km_customer.kigyo_cd=km_member.kigyo_cd and km_customer.cust_cd=km_member.cust_cd) " 16 excec = excec & "WHERE " 17 excec = excec & "km_customer.cust_cd " 18 19 For i = 3 To r 20 excec = excec & sh.Cells(32, i).Value 21 Debug.Print excec 22 n = sh.Cells(30, i).Value 23 Select Case n 24 Case "1" 25 excec = excec & " (select member_cd from " & "#login" & ")" 26 Case "2" 27 excec = excec & " (select member_cd from " & "#tabtouch" & ")" 28 Case "3" 29 excec = excec & " (select member_cd from " & "#age" & ")" 30 Case "4" 31 excec = excec & " (select member_cd from " & "#cate" & ")" 32 Case "5" 33 excec = excec & " (select member_cd from " & "#cate1" & ")" 34 Case "6" 35 excec = excec & " (select member_cd from " & "#sku" & ")" 36 Case "7" 37 excec = excec & " (select member_cd from " & "#sku1" & ")" 38 End Select 39 40 excec = excec & excec & sh.Cells(31, i).Value 41    Debug.Print excec 42 Next 43 44 sql.Range("B9").Value = excec 45 46 47End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

excec = excec & excec & sh.Cells(31, i).Valueの行が原因ではないでしょうか?
これの行を実行すると、excecに入っている内容が2回繰り返された後にsh.Cells(31, i).Valueの内容を追加した文字列がexcecにセットされますが、これはあなたが意図した動作ではないように思えます。

投稿2019/05/16 09:10

ku__ra__ge

総合スコア4524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Naoko_Coco

2019/05/16 09:21

ありがとうございます。 その通りです。 気づかなかった~
guest

0

ベストアンサー

VBA

1excec = excec & excec & sh.Cells(31, i).Value

この行ですね。
excecを2回連結してしまっています。

余談ですが、以下の行、SELECTのあとに空白が必要です。
エラーにならないんですよね?不思議です。

VBA

1 excec = excec & "SELECT"

投稿2019/05/16 09:07

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Naoko_Coco

2019/05/16 09:19

どこで書き間違えたんだろう?w その通りです。 うまくいきました! 因みに、余談、エラーになります。(笑) 2回連結に悩まされてて気づきませんでしたw
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問