A 回答 (8件)
- 最新から表示
- 回答順に表示
No.8
- 回答日時:
セルの色を変えるのは、Undoが効かなくなるのでお勧めできないかも。
条件付き書式と名前定義を組み合わせるのもよいかもしれませんが、面倒&重くなるのでボツ。
ってことで、こんな感じがお勧めです。
Private Sub Workbook_SheetSelectionChange( _
ByVal Sh As Object, _
ByVal Target As Range)
If Target.Count = 1 Then SendKeys "+{ }"
'{ と } の間は半角スペースです
End Sub
追記:
Target.Count=1を条件にしておけば、セルの書式設定等で困りません。
複数セル範囲の設定を行いたければ、マウスでその範囲を選択すればよいですし、一つのセルのみ書式を設定したければ、右クリックで選択すればよいです。
No.7
- 回答日時:
No.6です。
質問は行全体に色をつける、を小生は列全体に色をつけると見誤ってしまいました。すみません。Column-->Row Columns-->Rowsに訂正してください。
=====
その後も考えて
標準モジュールに(アクチブセルの列を捉える)ユーザー関数を作りました。
Function actc()
actc = ActiveCell.Column
End Function
ーー
操作=条件付き書式
シートで色をつける範囲を範囲指定。
A1がアクチブになっていることを確認。
書式
セル
条件付き書式
「数式が」を選ぶ
式に =COLUMN(A1)=actc()
パターン色を淡い色に設定
OK
ーーー
以上では画面の変換が、ぎこちない、というかうまく行かない。
先ほどのテスト経験上、わざわざ、シート切り替えして戻ると、色表示転換がうまく行ったのでそれでやっていたが、Application.ScreenUpdating = True
があるというヒントでやってみると、色表示転換がスムーズにうまく行った。それで下記を入れる
Worksheet_SelectionChangeイベントに
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = True
End Sub
ーー
上記ではVBAでのセルへの色設定はやっていないので、今まで設定されたセルの色は崩れないようで、私の心配して言ったことも解決できそう。
ーー
その後既出回答の紹介のサイトなど見るとCELL関数を使う手があることを知った。
No.6
- 回答日時:
(1)クリックしたときに、飛んできてくれるイベントの扱い
(2)クリックしたセルの列の全セル選択のコード
(3)色付けしたセルを消すコード
(4)以前の色付けした列を消すコード
ただし(3)に関連して、直前の列を覚えておくのが難しい。
が必要。
(1)はわかっているのかな。
ーーー
下記でそれに近い機能になる。
しかし完全ではない。ブックを保存した時の列の色は残ったままとか。
セルに色を設定することを妨げられるとかあって、本質問は思いつき倒れで、主旨をまっとうすることが難しいと思う。
それに初心者・中級には難しい課題と思う。
私も自信はない。Public変数など使っていること、ブックを保存した時の列の色は残ったままとか、普通の目的の為に自由にセルに色を設定することが
出来なくなる(消えてしまう)こととか。
小生の力不足・コードの未熟もあろうが、この質問の仕様を固めることさえ難しい。
VBAレベルでなく、セルのパターン色とは違った、もっと構造的な、別の色をつける仕組みを考えないといけないと思う。
Public mc
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.EnableEvents = False
If mc <> 0 Then
ActiveSheet.Cells(1, mc).EntireColumn.Select
Selection.Interior.ColorIndex = xlNone
End If
Target.EntireColumn.Select
Selection.Interior.ColorIndex = 6
mc = Target.Column
Application.EnableEvents = True
End Sub
No.5
- 回答日時:
http://okwave.jp/qa4029237.html
の、higekumanさんの回答が決定版でしょう。
ただ、ブック全体に設定するとうるさいので、シートモジュールに記載し、動作するセル範囲を下記の様に制限した方が吉かも。
下記コードは、ご質問に添って、行方向のみの着色に改造してあります。(原典は行列反転表示)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("B2:D10")) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Target
Range(.EntireRow.Address).Select
.Activate
End With
Application.EnableEvents = True
End Sub
の、higekumanさんの回答が決定版でしょう。
ただ、ブック全体に設定するとうるさいので、シートモジュールに記載し、動作するセル範囲を下記の様に制限した方が吉かも。
下記コードは、ご質問に添って、行方向のみの着色に改造してあります。(原典は行列反転表示)
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("B2:D10")) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Target
Range(.EntireRow.Address).Select
.Activate
End With
Application.EnableEvents = True
End Sub
No.4
- 回答日時:
おはよう御座います
こうゆう事
'-----------------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim a As Long
a = Target.Row
If Target.Interior.ColorIndex <> xlNone Then
Rows(a).Interior.ColorIndex = xlNone
Else
Rows(a).Interior.ColorIndex = 3
End If
End Sub
'-----------------------------------------------------------
それともこれかな
'-----------------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim a As Long
a = Target.Row
Cells.Interior.ColorIndex = xlNone
Rows(a).Interior.ColorIndex = 3
End Sub
'-----------------------------------------------------------
適当なシートにコードコピペして
あとはセルをダブルクリックして見てください
また外しましたか、外れた場合はスルーで・・・お願いします
No.3
- 回答日時:
こんばんは。
意外に知られたマクロですが、この種のマクロは、あまり洗練されていないようですね。
条件付き書式は、重くて使えなかった覚えがあります。
Dim i As Long
Private Sub Worksheet_Activate()
'色の残りを、シートのアクティベートの際に消す
'もし、色を消したくないものがあれば、ここで設定する 'Cells はすべてのセル
Cells.Interior.ColorIndex = xlColorIndexNone
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If i > 0 Then
'ここで、消す部分の範囲を決める
Rows(i).Interior.ColorIndex = xlColorIndexNone
End If
Rows(Target.Row).Interior.ColorIndex = 34
i = Target.Cells(1).Row
End Sub
No.2
- 回答日時:
たまにある要望ですね。
下記のようなやり方がスマート(?)らしいです。
■アクティブセルのある行・列を目立たせる
http://www.relief.jp/itnote/archives/001406.php
■行の自動的ハイライト
http://blog.livedoor.jp/andrewj/archives/1803597 …
この課題の難点は
「既に塗り潰してあるセルがある場合はどうするのか」という部分ですが、
上記のように条件付書式を使えば、既に塗り潰されているセルは影響を受けません。
ただ、私の個人的な好みで言えば、
「塗り潰しはまず使わない」一方で「条件付書式は多用する」ことが多いので、
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlNone
Target.EntireRow.Interior.ColorIndex = 34
End Sub
(シートモジュールに記述)
といった感じで、素朴に塗り潰しちゃいますね。
ご参考まで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/22 11:43
- Excel(エクセル) エクセルVBAで次の二つを行いたいのですが思うように動きません。どう修正したらよいのでしょうか? 2 2023/04/22 14:55
- Visual Basic(VBA) エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします 2 2023/05/03 17:35
- Excel(エクセル) Excel アクティブセルのみ条件付き書式の色を他の色にしたい。 4 2022/06/11 22:19
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) マクロを教えてください 3 2023/07/31 21:57
- Excel(エクセル) マクロを教えてください 2 2023/07/30 23:05
- その他(Microsoft Office) EXCELでバーコードを作成すると白くなってコードが見えません 1 2022/04/04 14:24
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
E列のセルに数値が入れば(空白...
-
互換性チェック
-
Excel にて条件付き書式の色に...
-
条件付き書式で、結果が1行ずれる
-
条件付書式で「=#N/A」に色を付...
-
条件付き書式で太罫線を引く方法
-
エクセルの枠の中の文字が青文...
-
エクセルで特定の数字等を表示...
-
エクセル 条件付き書式で色をつ...
-
Excelの条件付き書式にて空白セ...
-
Excelで2つのファイルを比較し...
-
【エクセル】シフトで○が6個以...
-
エクセルで1以上は全て1にするには
-
エクセルで一定期間が経過した...
-
Excelのテキストボックスでフォ...
-
ピボットテーブルオプション「...
-
Excel 条件付書式 今日より3日...
-
エクエルで隣のセルの文字が赤...
-
エクセルで文字訂正の横線だけ...
-
エクセルでセルに0.5以下は赤と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
E列のセルに数値が入れば(空白...
-
Excel にて条件付き書式の色に...
-
条件付書式で「=#N/A」に色を付...
-
条件付き書式で、結果が1行ずれる
-
Excelの条件付き書式にて空白セ...
-
エクセル 条件付き書式で色をつ...
-
エクセルで特定の数字等を表示...
-
エクセルの枠の中の文字が青文...
-
条件付き書式で太罫線を引く方法
-
セル結合させてるときの 条件...
-
Excelについて あるセルに文字...
-
Excelで2つのファイルを比較し...
-
エクセルで1以上は全て1にするには
-
エクセル内で複数の文字(50個ぐ...
-
エクセルで一定期間が経過した...
-
エクエルで隣のセルの文字が赤...
-
セルの値が空白じゃないなら色...
-
エクセルで日付を入力したらカ...
-
エクセルでシート参照する場合...
-
【エクセル】今日の日付に赤枠...
おすすめ情報