
No.1ベストアンサー
- 回答日時:
こんばんは。
>(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
No.3
- 回答日時:
#2のimogasiさんへ
Wendy02です。
>セルに色づけされたという「イベント」を捉えるものはVBAレベルでないと思うので、不可能でしょう(#1のご回答がそれだったらすみません)。
#1の回答はそれではありません。クラスによるコマンド・ボタンへのイベントというテクニックになります。しかし、クラスによるイベントは、書式の設定のボタンが複数なので、設定が複雑で、作るほうはもちろんのこと、貼り付ける側も間違えて動かない、ということになりかねないので、紹介するのはやめました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
Excel上でのデータ数字が連番で...
-
Excelでの検索結果を含む行だけ...
-
SUMに含まれる範囲から特定のセ...
-
エクセル セル内の文字数を超え...
-
エクセルで曜日に応じた文字を...
-
エクセルで表示されている数字...
-
数式が入ったセルを含めて、数...
-
エクセルでセルの値分の個数の...
-
文字(数字)色別に計算するには?
-
スペースとスペースの間の文字...
-
列の数字に100をかけたい
-
エクセル:横長の表を改行して...
-
Excelのセル内文字の並び替えに...
-
エクセルにデータを入力すると...
-
Excelで五十音順に並べ替えたい
-
時間を「昼間」と「夜間」に分...
-
入退社日より各月末の在籍者数...
-
エクセルで合計欄を結合し、左...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数の文字列のいずれかが含ま...
-
Excelの入力規則で2列表示したい
-
SUMに含まれる範囲から特定のセ...
-
Excel上でのデータ数字が連番で...
-
数式が入ったセルを含めて、数...
-
Excelでの検索結果を含む行だけ...
-
スペースとスペースの間の文字...
-
エクセルで曜日に応じた文字を...
-
エクセルでセルの値分の個数の...
-
エクセルで表示されている数字...
-
「エクセル」特定の行(セル)...
-
エクセル:横長の表を改行して...
-
列の数字に100をかけたい
-
入退社日より各月末の在籍者数...
-
Excelのセル内文字の並び替えに...
-
時間を「昼間」と「夜間」に分...
-
EXCELでA列とB列の文字が合わせ...
-
エクセル セル内の文字数を超え...
-
HYPERLINKとADDRESSとMATCHの組...
-
エクセルで、毎日の走行距離(...
おすすめ情報