回答編集履歴

3

説明の改善

2020/10/22 10:47

投稿

hatena19
hatena19

スコア33757

test CHANGED
@@ -14,9 +14,11 @@
14
14
 
15
15
  あれからサンプルを作成して試してみたら、.Offset(1) で結合セルの場合でも次のセルへ移動しますね。
16
16
 
17
+ (A2~A6 が結合セルの場合、Range("A2").Offset(1) で Range("A7") へ移動する)
17
18
 
18
19
 
20
+
19
- ということで、下記のようなコードで結合セルでも順に最後まで移動できます。
21
+ ということで、下記のようなコードで結合セルでも順に最後まで移動しながらデータを取得できます。
20
22
 
21
23
 
22
24
 

2

コード微修正

2020/10/22 10:46

投稿

hatena19
hatena19

スコア33757

test CHANGED
@@ -38,8 +38,6 @@
38
38
 
39
39
  Do Until curRng.Row > endRow
40
40
 
41
- Dim rCnt As Long
42
-
43
41
  If curRng.Value <> "" Then
44
42
 
45
43
  Debug.Print "開始:"; curRng.Offset(0, -1).Text
@@ -50,7 +48,7 @@
50
48
 
51
49
  End If
52
50
 
53
- Set curRng = curRng.Offset(1)
51
+ Set curRng = curRng.Offset(1) ’次のセルへ移動(結合セルでもOK)
54
52
 
55
53
  Loop
56
54
 

1

説明追加

2020/10/22 04:49

投稿

hatena19
hatena19

スコア33757

test CHANGED
@@ -7,3 +7,55 @@
7
7
 
8
8
 
9
9
  [Office TANAKA \- Excel VBA Tips[結合セルを調べる]](http://officetanaka.net/excel/vba/tips/tips50.htm)
10
+
11
+
12
+
13
+ ---
14
+
15
+ あれからサンプルを作成して試してみたら、.Offset(1) で結合セルの場合でも次のセルへ移動しますね。
16
+
17
+
18
+
19
+ ということで、下記のようなコードで結合セルでも順に最後まで移動できます。
20
+
21
+
22
+
23
+ ```vba
24
+
25
+ Sub Test()
26
+
27
+ Dim endRow As Long
28
+
29
+ endRow = Cells(Rows.Count, 2).End(xlUp).Row
30
+
31
+
32
+
33
+ Dim curRng As Range
34
+
35
+ Set curRng = Cells(2, 2)
36
+
37
+
38
+
39
+ Do Until curRng.Row > endRow
40
+
41
+ Dim rCnt As Long
42
+
43
+ If curRng.Value <> "" Then
44
+
45
+ Debug.Print "開始:"; curRng.Offset(0, -1).Text
46
+
47
+ Debug.Print "終了:"; curRng.Offset(1, -1).Text
48
+
49
+ Debug.Print curRng.Text
50
+
51
+ End If
52
+
53
+ Set curRng = curRng.Offset(1)
54
+
55
+ Loop
56
+
57
+ End Sub
58
+
59
+ ```
60
+
61
+ B列のみ順に移動していってイミディエイトに出力する例ですので、これをもとに改良してご希望の出力になるようにしてください。