ここから本文です

Sheet1"A"列に行結合されている所が幾つかあります。 そこで結合されているエリ...

es2********さん

2014/11/1610:38:23

Sheet1"A"列に行結合されている所が幾つかあります。
そこで結合されているエリアの数をVBA Excelで知りたいのですが。

ネットで調べて見たのですが、自分の調べ方が悪いせいか、
解りません。解る方がいらしゃれば、教えて頂きたいのですが、
宜しくお願いします・

作業はExcel2007でしています。

閲覧数:
40
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

him********さん

2014/11/1722:41:39

下記のサンプルでは、結合セル数ではなく、結合エリア数をカウントし、
カウントメッセージと共に、結合エリアを全て選択します。

ちなみに、If MyR.MergeCells Then において、
MergeCellsだけでカウントすると結合されているセル数が
全てカウントされるので、ループ中のセルのアドレスが、
結合エリアの代表セル(1つ目のセル)のアドレスと一致した時だけ、
カウントすれば、エリア数を取得できます。

また、Intersectを使って、A列内の使用中セルに限定して探し、
Unionでもって、一気にエリア選択するのが一番効率がいいかと思います。

Sub Sample()
Dim MyR As Range, MyU As Range
Dim MyC As Integer
Dim Ws As Worksheet
Set Ws = ActiveSheet
For Each MyR In Intersect(Ws.Columns("A"), Ws.UsedRange)
If MyR.MergeCells Then
If MyU Is Nothing Then Set MyU = MyR
Set MyU = Union(MyU, MyR)
If MyR.Address = MyR.MergeArea(1).Address And MyR.MergeCells Then
MyC = MyC + 1
End If
End If
Next
If Not MyU Is Nothing Then MyU.Select
MsgBox "結合エリア数は " & MyC
End Sub

  • him********さん

    2014/11/1723:01:08

    追伸:
    ごめんなさい。Sheet1でしたね・・・。
    Set Ws = ActiveSheet
    を、
    Set Ws = Worksheets("Sheet1")
    にしていただいて構いません。

    また、
    >行結合されている所が幾つかあります。
    ですが、仮に、値も何も無い空白エリアであっても、
    提示したコードできちんと拾いますので!!

  • その他の返信(1件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2014/11/21 09:30:15

感謝 himawari_to_asagaoさん
ご回答有難う御座います。
参考になりました。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

tra********さん

2014/11/1611:41:45

セルを1個づつ検査していくより無いように思います。

Sub sample()
Dim i As Long, j As Long
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
With Cells(i, 1)
If .MergeCells Then
j = j + 1
i = i + .MergeArea.Rows.Count
End If
End With
Next i
MsgBox "結合セル数 = " & j
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる