引用:
座席表にそれぞれ番号が振ってあり、そのうち色で塗りつぶされたセルの
値(席番号)をすべて取り出したいです。
引用:
一番上の列が B2:J2(9席)、L2:T2(9席)、V2:AD2(9席)
その一段下が B4:J4(9席)、L4:T4(9席)、V4:AD4(9席)と一行ごとに
空白行を含み、10行までは同じ配列ですが、一番下のみD22:J22(7席)、
L22:T22(9席)、V22:AB22(7席) となっています。
(標準モジュール)
----------------------------------------------------------------
Sub TestMacro1()
Dim rngSeatsArray As Range
Dim rngSeats As Range
Dim rngSeat As Range
Dim strUsedSeatIDs As String
'B2セルからAD22セルまでの範囲に含まれる定数セルを参照
Set rngSeatsArray = Range("B2:AD22").SpecialCells(xlCellTypeConstants)
'セル領域ごとにループ
For Each rngSeats In rngSeatsArray.Areas
'参照中のセル領域内のセルごとにループ
For Each rngSeat In rngSeats.Cells
'参照中のセルの塗りつぶし書式が「塗りつぶしなし」ではない場合
If rngSeat.Interior.ColorIndex <> xlColorIndexNone Then
'そのセルの値(席番号)をカンマ区切りで文字列変数に追記
strUsedSeatIDs = strUsedSeatIDs & _
"," & rngSeat.Value
End If
Next
Next
'文字列変数の値から先頭のカンマを取り除く
strUsedSeatIDs = Mid(strUsedSeatIDs, 2)
'文字列変数の値をイミディエイトウィンドウに出力
Debug.Print strUsedSeatIDs
'ついでにメッセージボックスに表示
MsgBox strUsedSeatIDs
End Sub
----------------------------------------------------------------
基本的には、以上のようなマクロを実行なさればよろしいでしょう。