回答編集履歴
1
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
|