回答編集履歴
9
修正漏れ
answer
CHANGED
@@ -141,7 +141,7 @@
|
|
141
141
|
|
142
142
|
' 3. B列に"A1"or"B1"or"C1"で始まる文字列がある場合、[開発]の値として変数に代入しておく。
|
143
143
|
If (Left(.Cells(lngFromRowsNo, 2).Value, 2) = "A1" Or Left(.Cells(lngFromRowsNo, 2).Value, 2) = "B1" Or Left(.Cells(lngFromRowsNo, 2).Value, 2) = "C1") Then
|
144
|
-
'
|
144
|
+
'訂正.Cells( は省略しない
|
145
145
|
|
146
146
|
End If
|
147
147
|
' 4. C列が4セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 4 の場合)
|
8
修正
answer
CHANGED
@@ -129,4 +129,35 @@
|
|
129
129
|
|
130
130
|
'***** ここまで
|
131
131
|
|
132
|
+
```
|
133
|
+
|
134
|
+
追記2
|
135
|
+
質問者様の返答内容を記載します。
|
136
|
+
```VBA
|
137
|
+
'***** ここから
|
138
|
+
' 2. コピー元のシートを1行目から検索
|
139
|
+
For lngFromRowsNo = 1 To .UsedRange.Rows.Count
|
140
|
+
'※.UsedRange.Rows.Countは省略しない!直っていません
|
141
|
+
|
142
|
+
' 3. B列に"A1"or"B1"or"C1"で始まる文字列がある場合、[開発]の値として変数に代入しておく。
|
143
|
+
If (Left(.Cells(lngFromRowsNo, 2).Value, 2) = "A1" Or Left(.Cells(lngFromRowsNo, 2).Value, 2) = "B1" Or Left(.Cells(lngFromRowsNo, 2).Value, 2) = "C1") Then
|
144
|
+
'※ここは修正OKです
|
145
|
+
|
146
|
+
End If
|
147
|
+
' 4. C列が4セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 4 の場合)
|
148
|
+
|
149
|
+
' 4.1. C列に"担当者"という文字列が入っている場合、表のヘッダーとして[年月]の値をコピー先の行へ設定する。
|
150
|
+
|
151
|
+
' 5. C列が2セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 2 の場合)
|
152
|
+
|
153
|
+
' 5.1. C列に文字列が入っている場合、表の明細として[担当者][工数]の値をコピー先の行へ設定する。
|
154
|
+
|
155
|
+
' ※コピー先の行へ設定した場合追加なので、コピー先は次の行へ移動
|
156
|
+
lngRowsNo = lngRowsNo + 1
|
157
|
+
'※ここもなぜ変数lngRowsNoなんですか?直っていません
|
158
|
+
|
159
|
+
Next i
|
160
|
+
'※追加 ここの変数名もおかしいですよね?
|
161
|
+
|
162
|
+
'***** ここまで
|
132
163
|
```
|
7
修正漏れ
answer
CHANGED
@@ -110,7 +110,6 @@
|
|
110
110
|
|
111
111
|
' 3. B列に"A1"or"B1"or"C1"で始まる文字列がある場合、またはセルが結合されていない場合、[開発]の値として変数に代入しておく。
|
112
112
|
If (Left(.Cells(i, 2).Value, 2) = "A1" Or Left(.Cells(i, 2).Value, 2) = "B1" Or Left(.Cells(i, 2).Value, 2) = "C1") And .Cells(i, 2).MergeCells = False Then
|
113
|
-
'※~~B列に"A1"or"B1"or"C1"で始まるに関しては合っています。~~
|
114
113
|
'※セルの参照でなぜi変数を使っているのですか?
|
115
114
|
'ただ不要な条件があります。
|
116
115
|
|
6
修正
answer
CHANGED
@@ -110,7 +110,8 @@
|
|
110
110
|
|
111
111
|
' 3. B列に"A1"or"B1"or"C1"で始まる文字列がある場合、またはセルが結合されていない場合、[開発]の値として変数に代入しておく。
|
112
112
|
If (Left(.Cells(i, 2).Value, 2) = "A1" Or Left(.Cells(i, 2).Value, 2) = "B1" Or Left(.Cells(i, 2).Value, 2) = "C1") And .Cells(i, 2).MergeCells = False Then
|
113
|
-
'※B列に"A1"or"B1"or"C1"で始まるに関しては合っています。
|
113
|
+
'※~~B列に"A1"or"B1"or"C1"で始まるに関しては合っています。~~
|
114
|
+
'※セルの参照でなぜi変数を使っているのですか?
|
114
115
|
'ただ不要な条件があります。
|
115
116
|
|
116
117
|
End If
|
5
修正漏れ
answer
CHANGED
@@ -105,8 +105,8 @@
|
|
105
105
|
'***** ここから
|
106
106
|
' 2. コピー元のシートを1行目から検索
|
107
107
|
For lngFromSheetIndex = 1 To .UsedRange.Rows.Count
|
108
|
-
'
|
108
|
+
'※なぜlngFromSheetIndexなのですか?変数は用意していますよね?
|
109
|
-
'※
|
109
|
+
'※.UsedRange.Rows.Countに関いて省略して書かない。
|
110
110
|
|
111
111
|
' 3. B列に"A1"or"B1"or"C1"で始まる文字列がある場合、またはセルが結合されていない場合、[開発]の値として変数に代入しておく。
|
112
112
|
If (Left(.Cells(i, 2).Value, 2) = "A1" Or Left(.Cells(i, 2).Value, 2) = "B1" Or Left(.Cells(i, 2).Value, 2) = "C1") And .Cells(i, 2).MergeCells = False Then
|
4
修正漏れ
answer
CHANGED
@@ -50,6 +50,7 @@
|
|
50
50
|
' 見つかったExcelブックを開く
|
51
51
|
Set wbFrom = Workbooks.Open(strDefaultPath & strFromXMLFileName)
|
52
52
|
|
53
|
+
' 2. コピー元のシートを1行目から検索
|
53
54
|
' 見つかったExcelブックのシートを順番に検索(登録があるシートすべて)
|
54
55
|
For lngFromSheetNo = 1 To wbFrom.Worksheets.Count
|
55
56
|
|
@@ -104,8 +105,8 @@
|
|
104
105
|
'***** ここから
|
105
106
|
' 2. コピー元のシートを1行目から検索
|
106
107
|
For lngFromSheetIndex = 1 To .UsedRange.Rows.Count
|
107
|
-
'
|
108
|
+
'訂正ここに関してはすでに回答してありました。
|
108
|
-
'※.UsedRange.Rows.Countに関いて省略して書かない。
|
109
|
+
'※ただし.UsedRange.Rows.Countに関いて省略して書かない。
|
109
110
|
|
110
111
|
' 3. B列に"A1"or"B1"or"C1"で始まる文字列がある場合、またはセルが結合されていない場合、[開発]の値として変数に代入しておく。
|
111
112
|
If (Left(.Cells(i, 2).Value, 2) = "A1" Or Left(.Cells(i, 2).Value, 2) = "B1" Or Left(.Cells(i, 2).Value, 2) = "C1") And .Cells(i, 2).MergeCells = False Then
|
3
返信追記
answer
CHANGED
@@ -95,7 +95,37 @@
|
|
95
95
|
sample1_Error:
|
96
96
|
Resume sample1_End:
|
97
97
|
End Sub
|
98
|
+
```
|
98
99
|
|
100
|
+
追記1
|
101
|
+
質問者様の返答内容を記載します。
|
102
|
+
(追記・編集依頼ですと表示が崩れる為)
|
103
|
+
```VBA
|
104
|
+
'***** ここから
|
105
|
+
' 2. コピー元のシートを1行目から検索
|
106
|
+
For lngFromSheetIndex = 1 To .UsedRange.Rows.Count
|
107
|
+
'※なぜlngFromSheetIndexなのですか?変数は用意済みですよね?
|
108
|
+
'※.UsedRange.Rows.Countに関いて省略して書かない。
|
99
109
|
|
110
|
+
' 3. B列に"A1"or"B1"or"C1"で始まる文字列がある場合、またはセルが結合されていない場合、[開発]の値として変数に代入しておく。
|
111
|
+
If (Left(.Cells(i, 2).Value, 2) = "A1" Or Left(.Cells(i, 2).Value, 2) = "B1" Or Left(.Cells(i, 2).Value, 2) = "C1") And .Cells(i, 2).MergeCells = False Then
|
112
|
+
'※B列に"A1"or"B1"or"C1"で始まるに関しては合っています。
|
113
|
+
'ただ不要な条件があります。
|
100
114
|
|
115
|
+
End If
|
116
|
+
' 4. C列が4セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 4 の場合)
|
117
|
+
|
118
|
+
' 4.1. C列に"担当者"という文字列が入っている場合、表のヘッダーとして[年月]の値をコピー先の行へ設定する。
|
119
|
+
|
120
|
+
' 5. C列が2セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 2 の場合)
|
121
|
+
|
122
|
+
' 5.1. C列に文字列が入っている場合、表の明細として[担当者][工数]の値をコピー先の行へ設定する。
|
123
|
+
|
124
|
+
' コピー先の行へ設定した場合追加なので、コピー先は次の行へ移動
|
125
|
+
lngRowsNo = lngRowsNo + 1
|
126
|
+
' ※なぜlngRowsNoなのですか?変数は用意済みですよね?
|
127
|
+
Next i
|
128
|
+
|
129
|
+
'***** ここまで
|
130
|
+
|
101
131
|
```
|
2
修正漏れ
answer
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
' 見つかったExcelブックを開く
|
51
51
|
Set wbFrom = Workbooks.Open(strDefaultPath & strFromXMLFileName)
|
52
52
|
|
53
|
-
' 見つかったExcelブックのシートを順番に検索(登録がある
|
53
|
+
' 見つかったExcelブックのシートを順番に検索(登録があるシートすべて)
|
54
54
|
For lngFromSheetNo = 1 To wbFrom.Worksheets.Count
|
55
55
|
|
56
56
|
' シート名が"更新"のシートを検索
|
1
編集
answer
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
' 見つかったExcelブックを開く
|
51
51
|
Set wbFrom = Workbooks.Open(strDefaultPath & strFromXMLFileName)
|
52
52
|
|
53
|
-
' 見つかったExcelブックのシートを順番に検索
|
53
|
+
' 見つかったExcelブックのシートを順番に検索(登録がある行すべて)
|
54
54
|
For lngFromSheetNo = 1 To wbFrom.Worksheets.Count
|
55
55
|
|
56
56
|
' シート名が"更新"のシートを検索
|