- ベストアンサー
エクセル2003ですが、A列(500行に氏名が500人分記述)、、、
エクセル2003ですが、A列(500行に氏名が500人分記述されています)、この状態で、この500人の中から該当者のみ、黄色でセルを色塗り(バケツのツール)ました。 で、該当者を見るとき、A列をずーと下までみるのが面倒なので、B列にこのA列で黄色にいろ塗りした氏名のメンバーのみを集めたいのですが、、、 可能でしょうか? (A列で黄色くいろ塗りしたら、リアルで即、B列に反映した表示されるというものをイメージしているのですが、、、 宜しくご教示ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >(A列で黄色くいろ塗りしたら、リアルで即、B列に反映した表示されるというものをイメージしているのですが、、、 確かに、それは可能なのですが、その設定は、もう少し複雑になります。それでも良ければ、ご提示いたします。つまり、以下のマクロコードを働かせるための、書式設定ボタンにイベントをつけることです。以下は、一応、対話モードになっています。 '標準モジュールに設定してください。 Sub ColorCollection() Dim Data() As Variant Dim c As Variant Dim r As Range Dim i As Long Dim j As Long 'データ取得 SetStart: On Error Resume Next Set r = Nothing Set r = Application.InputBox("色のついたセルを指定してください。", Type:=8) If r Is Nothing Then Exit Sub On Error GoTo 0 i = r.Interior.ColorIndex If i = xlColorIndexNone Then MsgBox "そこは、色つきできありません。", vbInformation: GoTo SetStart End If For Each c In Range(Cells(1, r.Column), Cells(65536, r.Column).End(xlUp)) If c.Interior.ColorIndex = i Then ReDim Preserve Data(j) Data(j) = c.Value j = j + 1 End If Next PasteData r, Data() Set r = Nothing End Sub Private Sub PasteData(rng As Range, Data() As Variant) 'データ貼り付け用のルーチン Dim PasteRange As Range Dim r As Range Set PasteRange = Cells(1, rng.Column).Resize(UBound(Data()) + 1, 1) If WorksheetFunction.CountA(rng.Offset(, 1).EntireColumn) = 0 Then PasteRange.Offset(, 1).Value = WorksheetFunction.Transpose(Data()) ElseIf MsgBox("隣の列に上書きしてよろしいですか?", vbInformation + vbYesNo) = vbYes Then rng.Offset(, 1).EntireColumn.ClearContents PasteRange.Offset(, 1).Value = WorksheetFunction.Transpose(Data()) Else On Error Resume Next Set r = Application.InputBox("適当な列を指定してください。", Type:=8) If r Is Nothing Then Exit Sub On Error GoTo 0 Set PasteRange = Cells(1, r.Column).Resize(UBound(Data()) + 1, 1) PasteRange.Value = WorksheetFunction.Transpose(Data()) End If Set PasteRange = Nothing End Sub
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
#2のimogasiさんへ Wendy02です。 >セルに色づけされたという「イベント」を捉えるものはVBAレベルでないと思うので、不可能でしょう(#1のご回答がそれだったらすみません)。 #1の回答はそれではありません。クラスによるコマンド・ボタンへのイベントというテクニックになります。しかし、クラスによるイベントは、書式の設定のボタンが複数なので、設定が複雑で、作るほうはもちろんのこと、貼り付ける側も間違えて動かない、ということになりかねないので、紹介するのはやめました。
お礼
自分が考えていたほど、単純ではなく、複雑で驚いております。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
たった今、セルに色づけされたという「イベント」を捉えるものはVBAレベルでないと思うので、不可能でしょう(#1のご回答がそれだったらすみません)。抜き出したい都度、ボタンやメニューを押すや約束したセルを選択する、そのセルの値を変えるなど、きっかけ(イベント)を人間が与えてくれるなら、VBAでその都度再処理して抜きだせるでしょう。
お礼
回答ありがとうございます。 いやー、難しいんですね。 勉強しないと、、
お礼
回答ありがとうございます。 理解できるように努力をする、勉強をする、これのみです。 ありがとうございました。