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

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

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

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

Q&A

解決済

1回答

865閲覧

VBA ループ処理を簡易に書き直したい

fffu8

総合スコア37

VBA

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

0グッド

0クリップ

投稿2020/03/31 04:55

編集2020/03/31 04:58

現在、ExcelにDBのデータ表示して、指定した箇所を書き替えて更新すると、指定箇所によってループが回ってしまう書き方になっていまして、
1回の処理でできるようにしたいのですが、どのようにしたらいいのかわかりません。

下記を参考に訂正したいのですが、思うように訂正することができません。
何か、アドバイス頂ければと思います。
For 行のループ
Dim 判定用 As Boolean
判定用=false
For 列のループ
If 値が変更されたか判定
判定用=True
** EXIt for**
End if
Next
If 判定用=true
更新処理
END if

Next 行

VBA

1'更新 変更されたデータのみをDBに書きだす 2Sub Button3_Click() 3 4'指定した場所のみ更新 5 6 Dim oraCon As New ADODB.CONNECTION 7 Dim oraCmd As New ADODB.Command 8 Dim strSQL As String 9 Dim i As Integer 10 Dim j As Integer 11 Dim oraRs As New ADODB.Recordset 12 Dim n As Integer 13 14 'DBの接続文字列を設定 15 oraCon.ConnectionString = CONNECTION 16 '接続を開く 17 oraCon.Open 18 19 'SQLを作成 20 strSQL = "SELECT * FROM 社員テーブル1 ORDER BY 社員NO ASC" 21 22 'レコードセットにSQL実行し結果をセット 23 oraRs.CursorLocation = adUseClient 24 oraRs.CursorType = adOpenDynamic 25 oraRs.Open strSQL, oraCon 26 27 ReDim arrRcd(oraRs.Fields.Count, oraRs.RecordCount) 28 arrRcd = oraRs.GetRows 29 30 31 32 '最終行までの処理 33 n = Cells(Rows.Count, "A").End(xlUp).row 34 35 For i = 1 To n 36 For j = 1 To 3 37 '行' '列' '列' '行' 38 If Cells(i, j + 1).Value <> arrRcd(j, i - 1) Then 39 40 strSQL = "update 社員テーブル1 set " _ 41 + " 名前 ='" + Cells(i, 2).Value + "'" _ 42 + ",住所 ='" + Cells(i, 3).Value + "'" _ 43 + ",電話 ='" + Cells(i, 4).Value + "'" _ 44 + " where 社員NO = '" + CStr(i) + "'" 45 46 With oraCmd 47 .ActiveConnection = oraCon 48 .CommandText = strSQL 49 .Execute 50 End With 51 52 End If 53 54 Next j 55 Next i 56 57 Set oraCmd = Nothing 58 oraCon.Close 59 Set oraCon = Nothing 60 61End Sub

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

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

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

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

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

guest

回答1

0

自己解決

すみません、コードミスでした。解決しました。

投稿2020/03/31 05:16

fffu8

総合スコア37

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問