回答編集履歴

1

2022/02/21 10:16

投稿

hatena19
hatena19

スコア34362

test CHANGED
@@ -1,5 +1,9 @@
1
1
  空のSQL(sql = "")も出力して、後からそれを削除するより、最初から空のSQLは出力しないようにすればいいのでは。
2
+
3
+ また、sqlに代入する行の `Cells` は `.Cells`というようにドットが必要です。ないと、ActiveSheetが対象になりますが、この時点では、newsheet がActiveSheetになりますので。
4
+
2
5
  あと、If Then ElseIf Then を使うより、 Select Case の方がスッキリすると思います。
6
+
3
7
  ```vba
4
8
  Sub createSql()
5
9
  With ActiveSheet
@@ -15,11 +19,11 @@
15
19
  For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
16
20
  Select Case .Cells(i, 5)
17
21
  Case "名称変更"
18
- sql = "UPDATE t_発注機関 SET " & "取引先 = '" & Cells(i, 4) & "' WHERE id = " & Cells(i, 1) & ";"
22
+ sql = "UPDATE t_発注機関 SET " & "取引先 = '" & .Cells(i, 4) & "' WHERE id = " & .Cells(i, 1) & ";"
19
23
  Case "新規設置"
20
- sql = "INSERT INTO t_発注機関 VALUES " & "('" & Cells(i, 1) & "','" & Cells(i, 2) & "','" & Cells(i, 3) & "')" & ";"
24
+ sql = "INSERT INTO t_発注機関 VALUES " & "('" &. Cells(i, 1) & "','" & .Cells(i, 2) & "','" & .Cells(i, 3) & "')" & ";"
21
25
  Case "削除"
22
- sql = "DELETE FROM t_発注機関 WHERE id = " & Cells(i, 1) & ";"
26
+ sql = "DELETE FROM t_発注機関 WHERE id = " & .Cells(i, 1) & ";"
23
27
  Case "-"
24
28
  sql = ""
25
29
  Case Else