プロが教えるわが家の防犯対策術!

例えば、A1が選択されたらA1~A30までをセルの色は赤、フォントは白に
例えば、B1が選択されたらA1~B30までをセルの色は赤、フォントは白に

といった感じで、選択された列の1行目を選択した場合にセルや文字の色を変更することは可能でしょうか?

A 回答 (3件)

こんにちは!


一例です。
1行目以外を選択した場合は「塗りつぶし」はなし・「フォント色」は自動にしています。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myRng As Range
With Cells
.Interior.ColorIndex = xlNone
.Font.ColorIndex = xlAutomatic
End With
If Target.Row = 1 And Target.Count = 1 Then
Set myRng = Range(Cells(1, "A"), Cells(30, Target.Column))
With myRng
.Interior.ColorIndex = 3
.Font.ColorIndex = 2
End With
End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

ご回答をありがとうございます。

縦ではなく、横の場合はどこを変えれば良いのでしょうか?
A1なら、1行目
A2なら、2行目

といった感じです。

何度も申し訳ありません。

お礼日時:2014/09/01 12:58

ご利用のエクセルのバージョンが不明です


具体的にどこのセル範囲までそういう設定にしたいのか説明がありません



手順:
A1から例えばJ30を(あるいは1行目から30行目までを)選択し、条件付き書式を開始する
新しいルールで数式を使用して…を選び(エクセル2003以前ではセルの値が → 数式がに変更し)
=CELL("COL")=COLUMN()
または
=(CELL("ROW")=1)*(CELL("COL")=COLUMN())
と記入、書式ボタンでセルの塗色とフォントの色を設定

シート名タブを右クリックしてコードの表示を選択
現れたシートに下記のマクロをコピー貼り付ける

private sub Worksheet_SelectionChange(byval Target as excel.range)
application.screenupdating = true
end sub

ファイルメニューから終了してエクセルに戻り、セルを選択すると色が付く。






#この方法では無く、積極的にセルの色やフォントの色を塗り替えるマクロにしてしまうと、アナタが恣意的にセルの書式を変更していた状態を保全できないので注意します。
    • good
    • 0
この回答へのお礼

ご回答をありがとうございます。

2010です。配慮が足りませんでした。申し訳ありません。

お礼日時:2014/09/01 13:00

No.1です。



>縦ではなく、横の場合はどこを変えれば良いのでしょうか?
>A1なら、1行目
>A2なら、2行目

最初の質問内容とは違っているような感じですが、
A列のどこかのセルを選択するとその行すべての塗りつぶしが「赤」・フォント色が「白」になるようにしています。
前回のコードは全て消去して↓のコードにしてみてください。(シートモジュールです)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Cells
.Interior.ColorIndex = xlNone
.Font.ColorIndex = xlAutomatic
End With
With Target
If .Column = 1 And .Count = 1 Then
.EntireRow.Interior.ColorIndex = 3
.EntireRow.Font.ColorIndex = 2
End If
End With
End Sub

※ 質問では
>例えば、A1が選択されたらA1~A30までをセルの色は赤、フォントは白に
>例えば、B1が選択されたらA1~B30までをセルの色は赤、フォントは白に
となっていますので、30列まで限定の場合は↓のコードに変更してみてください。m(_ _)m

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Cells
.Interior.ColorIndex = xlNone
.Font.ColorIndex = xlAutomatic
End With
With Target
If .Column = 1 And .Count = 1 Then
.Resize(, 30).Interior.ColorIndex = 3
.Resize(, 30).Font.ColorIndex = 2
End If
End With
End Sub
    • good
    • 0
この回答へのお礼

何度もありがとうございます。

自分の説明不足でした。すごく助かりましや。

お礼日時:2014/09/01 22:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!