アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんわ、表題通り、行や列を削除しても 常にC3セルに背景色をつけておくマクロを教えて下さい。

行や列を操作しても、いちいち作業しなくて常にその状態を維持する方法が理想です

具体的なコードをお願いします!

A 回答 (6件)

No.1さんのご指摘のとおり、私もマクロで対応すべき課題でもないように思います。



添付画像をご覧ください。条件付き書式で
「常にC3セルに背景色をつけておく」
を実現したものです。

手順は以下のとおりです。
(1)まず、添付画像の左上の○印のように、行番号と列名の交叉位置にある「右下三角」をクリックする
(2)シート全体のセルが選択された状態になる
(3)メインメニュのホームタブから「条件付き書式」をクリックし、「新しいルール」を選択
(4)「新しいルール」のダイアログが開くので、「数式を使用して。書式を設定するセルを決定」を選択
(5)「次の数式を満たす場合に値を書式設定」と表示された数式記入欄に以下の数式を入力する

=CELL("address",A1)="$C$3"

(6)書式ボタンを押し、表示された「セルの書式設定」ダイアログの「塗りつぶし」タブで好みの色を選択してOKを押す
(7)「新しいルール」のダイアログに戻るので、OKを押す

上記手順で「常にC3セルに背景色をつけておく」という状態になります。

条件付き書式の数式記入欄に記述した
=CELL("address",A1)="$C$3"
という数式を解説すると、
(a)予め全てのセルを選択しているので、選択範囲の左上隅のセルがA1セルになっている
(b)仮に、左上隅に記述するとした場合の数式を関数内で相対参照形式で記述すると、条件付き書式では、その数式が全ての選択したセルにコピーした状態で適用される
(c)従って、C3セルには「=CELL("address",C3)="$C$3"」とい条件付き書式の「数式条件」が設定されたことになる
※ただし、C3セルを選択してメニューの条件付き書式の「ルールの管理」から設定されている数式を確認しても「=CELL("address",A1)="$C$3"」と表示されているだけなので注意
(d)この条件を満たすのはC3セルのみで、行や列を削除しても必ず存在するので、常にC3セルのみが指定の背景色に塗られることになる

という訳です。
「エクセル マクロ 行や列を削除しても 常」の回答画像4
    • good
    • 1
この回答へのお礼

なるほどです、マクロを使わなくても充分出来るんですね、ありがとうございます!

お礼日時:2023/04/05 17:27

間違っていました


Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:C3")) Is Nothing Then Exit Sub
Dim r As Long: r = 0
Dim c As Long: c = 0
With Selection
If .Rows.Count <> Rows.Count Then r = .Rows.Count
If .Columns.Count <> Columns.Count Then c = .Columns.Count
End With
Dim rng As Range
With Range("C3")
For Each rng In Union(Range("A3:B3", "C1:C2"), .Offset(r, 0), .Offset(0, c))
If rng.Interior.ColorIndex = 6 Then rng.Interior.ColorIndex = xlNone
Next
.Interior.ColorIndex = 6
End With
End Sub
    • good
    • 1
この回答へのお礼

ありがとう

ありがとうございます!
安定のマクロ操作です!

お礼日時:2023/04/05 17:29

#1様#4様に同意です


VBAで行う場合、条件などを絞る必要があるように思いますが
ざっくりコードにすると
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1:C3")) Is Nothing Then Exit Sub
Dim r As Long: r = 0
Dim c As Long: c = 0
With Selection
If .Rows.Count <> Rows.Count Then r = .Rows.Count
If .Columns.Count <> Columns.Count Then c = .Columns.Count
End With
With Range("C3")
If .Offset(r, c).Interior.ColorIndex = 6 Then .Offset(r, c).Interior.ColorIndex = xlNone
If .Offset(r, 0).Interior.ColorIndex = 6 Then .Offset(r, 0).Interior.ColorIndex = xlNone
If .Offset(0, c).Interior.ColorIndex = 6 Then .Offset(0, c).Interior.ColorIndex = xlNone
If r <= 2 And c <= 2 Then
If .Offset(-r, -c).Interior.ColorIndex = 6 Then .Offset(-r, -c).Interior.ColorIndex = xlNone
If .Offset(-r, c).Interior.ColorIndex = 6 Then .Offset(-r, c).Interior.ColorIndex = xlNone
If .Offset(r, -c).Interior.ColorIndex = 6 Then .Offset(r, -c).Interior.ColorIndex = xlNone
End If
End With
Range("C3").Interior.ColorIndex = 6
End Sub
纏められそうですが・・
条件はC3セル以外周辺に黄色のセルが無い事?
If Intersect(Target, Range("A1:C3")) Is Nothing Then Exit Sub
なので初めに色は手動もしくはA1:C3セル変更で実行してください
    • good
    • 0

簡単なのは,条件付き書式(範囲:=$1:$1048576) にて,


=IF(AND(ROW()=3,COLUMN()=3),TRUE,FALSE)
として色を付けることです。ROW(), COLUMN() は,常に行数,列数の数値になりますので,行3 & 列 3 で一致させています。
2列目や2行目を削除しても,3,3 に色が付きます。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2023/04/04 13:09

以下は、常にC3セルに背景色をつけるためのVBAマクロです。

行や列を削除しても、常にC3セルに背景色が付いたままになります。

vbnet
Copy code
Private Sub Worksheet_Change(ByVal Target As Range)
'C3セルの範囲内で何らかの変更があった場合
If Not Intersect(Target, Range("C3")) Is Nothing Then
'C3セルに背景色を設定する
Range("C3").Interior.ColorIndex = 6 '例えば、黄色に設定する場合
End If
End Sub

このコードをワークシートのVBAコンソールに貼り付けてください。C3セルに何らかの変更があった場合(例えば、値が変更された場合)、C3セルに背景色が設定されます。行や列を削除しても、このマクロによってC3セルに背景色が付いたままになるため、常にC3セルに背景色を設定したい場合には適しています。ただし、C3セル以外の範囲に変更があった場合には、背景色が設定されない点に注意してください。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2023/04/04 13:10

こんにちは



>常にC3セルに背景色をつけておくマクロを教えて下さい。
マクロでやるようなこととも思えませんけれど・・・
(実行のタイミングの問題もありますが、常時実行の監視型にでもするのでしょうか)

多分、セル全体に
 「C3セルなら色を付ける」
ように条件付き書式で設定しておけばすむ話のように思えます。

※ どうしてもマクロになさりたいのなら、他の回答をお待ちください。
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2023/04/04 13:09

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