質問するログイン新規登録

回答編集履歴

9

修正漏れ

2020/09/27 07:34

投稿

kuma_kuma_
kuma_kuma_

スコア2506

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
- '※ここは修OKです
144
+ '.Cells( は省略しない
145
145
 
146
146
  End If
147
147
  ' 4. C列が4セル結合している場合(.MergeCellsがTrueの時に.MergeArea.Count = 4 の場合)

8

修正

2020/09/27 07:34

投稿

kuma_kuma_
kuma_kuma_

スコア2506

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

修正漏れ

2020/09/27 07:21

投稿

kuma_kuma_
kuma_kuma_

スコア2506

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

修正

2020/09/27 07:04

投稿

kuma_kuma_
kuma_kuma_

スコア2506

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

修正漏れ

2020/09/27 07:03

投稿

kuma_kuma_
kuma_kuma_

スコア2506

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
- '※ただし.UsedRange.Rows.Countに関いて省略して書かない。
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

修正漏れ

2020/09/27 06:59

投稿

kuma_kuma_
kuma_kuma_

スコア2506

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
- '※なぜlngFromSheetIndexなのですか?変数用意済みでよね?
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

返信追記

2020/09/27 06:58

投稿

kuma_kuma_
kuma_kuma_

スコア2506

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

修正漏れ

2020/09/27 06:53

投稿

kuma_kuma_
kuma_kuma_

スコア2506

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

編集

2020/09/27 06:28

投稿

kuma_kuma_
kuma_kuma_

スコア2506

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
  ' シート名が"更新"のシートを検索