'***************************************************************************************************
' 結合セルを見つけてイミディエイトに表示するサンプル Module1(Module)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
'変更日付 Rev 変更履歴内容------------------------------------------------------------------------>
'05/11/02(1.00)新規作成
'20/02/22(1.10)*.xlsm化、他
'***************************************************************************************************
Option Explicit
'***************************************************************************************************
' ■■■ ワークシート側からの呼び出し処理 ■■■
'***************************************************************************************************
'* 処理名 :FindMergeCells1
'* 機能 :結合セルを見つけてイミディエイトに表示するサンプル①
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2005年11月02日
'* 作成者 :井上 治
'* 更新日 :2020年02月22日
'* 更新者 :井上 治
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Sub FindMergeCells1()
'-----------------------------------------------------------------------------------------------
Dim objR As Range ' セル探索用Object
' まずシートの使用域を表示
Debug.Print ActiveSheet.UsedRange.Address
' シートの使用領域内の各セルを探索するループ処理
For Each objR In ActiveSheet.UsedRange
' このセルが結合されたセルかを判定(=True)
If objR.MergeCells Then
' アドレスをイミディエイトに表示
Debug.Print objR.Address & " " & objR.MergeArea.Address
End If
Next objR
End Sub
'***************************************************************************************************
'* 処理名 :FindMergeCells2
'* 機能 :結合セルを見つけてイミディエイトに表示するサンプル②
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 作成日 :2005年11月02日
'* 作成者 :井上 治
'* 更新日 :2020年02月22日
'* 更新者 :井上 治
'* 機能説明:重複除去対応
'* 注意事項:
'***************************************************************************************************
Sub FindMergeCells2()
'-----------------------------------------------------------------------------------------------
Dim objR As Range ' セル探索用Object
Dim lngIx As Long ' テーブルINDEX
Dim lngIx2 As Long ' テーブルINDEX(Work)
Dim strAddress As String ' 結合セルのアドレス
Dim tblAddress() As String ' アドレス格納テーブル
' まずシートの使用域を表示
Debug.Print ActiveSheet.UsedRange.Address
' 格納テーブルのインデックス初期値(-1は未格納の意)
lngIx = -1
' シートの使用領域内の各セルを探索するループ処理
For Each objR In ActiveSheet.UsedRange
' このセルが結合されたセルかを判定(=True)
If objR.MergeCells Then
' 一旦アドレスを変数に格納(オブジェクトに何度も聞かないため)
strAddress = objR.MergeArea.Address
lngIx2 = 0
' この結合セルのアドレスが既にテーブルにあるかを確認
Do While lngIx2 <= lngIx
If tblAddress(lngIx2) = strAddress Then Exit Do
lngIx2 = lngIx2 + 1
Loop
' テーブルになければテーブルに追加
If lngIx2 > lngIx Then
lngIx = lngIx2
ReDim Preserve tblAddress(lngIx)
tblAddress(lngIx) = strAddress
End If
End If
Next objR
' テーブルに格納したアドレスを順にイミディエイトに表示
lngIx2 = 0
Do While lngIx2 <= lngIx
Debug.Print tblAddress(lngIx2)
lngIx2 = lngIx2 + 1
Loop
End Sub
'----------------------------------------<< End of Source >>----------------------------------------