マンガでよめる痔のこと・薬のこと

エクセルでアクティブセルに色を付けて目立つようにしたいので教えて下さい

もともとセルに色が塗つぶされており、そのセルが選択されると違う色になり、選択から外れると元の色に戻る方法があれば教えてください。

例えば、
 A1~A2のセルが水色に塗りつぶされいるとします
 A1を選択すると黄色に変わり、
 次に、A2を選択すると、A1は水色に戻り、A2が黄色に変わる


よろしくお願いします

A 回答 (5件)

条件付き書式で、数式を


 =OR(CELL(“row”)=ROW(),CELL(“col”)=COLUMN())
VBAでWorksheet_SelectionChange イベントを使い
 Application.ScreenUpdating = True
を使ったものは試されたのでしょうか?
https://okirakurak.exblog.jp/12541440/

分らない場合、どの部分で躓いているのでしょうか?
    • good
    • 2

No.2です。



>選択から外れると元の色に戻る方法・・・
を見逃していました。

前回のコードは消去し、↓のコードに変更してください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim myRng As Range
  Set myRng = Range("A1:A2")
   myRng.Interior.ColorIndex = 28
   If Intersect(Target, myRng) Is Nothing Or Target.Count > 1 Then Exit Sub
   Target.Interior.ColorIndex = 6
End Sub

※ コードそのものはほとんど変わりませんが、
コードの行を入れ替えました。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。

セルロックしてシートの保護をすると定義エラーが出るのですが、シートの保護は出来ないのでしょうか?

お礼日時:2018/08/06 22:16

「VBAと条件付き書式を使って」ですよね?・・・。


やってみました。とりあえずできました。こんな感じです。

Function CondCell(r As Range) As Boolean
Application.Volatile
If r.Address = ActiveCell.Address Then CondCell = True
End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Calculate
End Sub

上記のユーザ定義関数「CondCell」を使って、条件付き書式設定をしてください。
ただ、これだけでは反応しません。そこで、Worksheet_SelectionChangeで無理やりCalculateを発行しています。これにより、Excelにかなりの負荷がかかります。動作も不安定なところがありました。遊びとしては楽しいですが、実用性はゼロです。
    • good
    • 0

こんばんは!



VBAになりますが、一例です。

↓のコードをシートモジュールにしてください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim myRng As Range
  Set myRng = Range("A1:A2")
  If Intersect(Target, myRng) Is Nothing Or Target.Count > 1 Then Exit Sub
   myRng.Interior.ColorIndex = 28
   Target.Interior.ColorIndex = 6
End Sub

※ 対象範囲を広げたい場合、仮にA1~A10セルの範囲で同じ操作をしたい場合は
>Set myRng = Range("A1:A2")

>Set myRng = Range("A1:A10")

のように変更してください。m(_ _)m
    • good
    • 0

ごめんなさい。

普通に塗りつぶすとそうなるのでは??
    • good
    • 0
この回答へのお礼

すみません
質問がわかりづらかったみたいですね

現セルに色をつけ、移動したら移動先のアクテブセルに色をつけ、直近のセルは、以前に戻すことをしたいのですが(自動で)
VBAと条件付き書式を使ってできそうなのですが、よくわからないので…

お礼日時:2018/08/03 22:45

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qアクティブなセルを色つき表示させる

お世話になります。
エクセル表にて矢印キーやエンターを押すとカーソルが
セルを移動しますよね。
移動先のセルが黄色になって、移動元のセルはまた透明となる。
いまどこのセルにカーソルがあるか黄色で示すなど、
見やすくする方法はありますか。

Aベストアンサー

マクロと条件付き書式を併用することで実現は可能です

まずシート名右クリック→「コードの表示」で開く画面に以下の3行を貼り付けます。A1にアクティブセルのアドレスを書き込みますがA1は使用中なら、任意のセルに変えてください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A1") = Target.Address
End Sub

表示されるアドレスが目障りでしょうからシート上の文字色は「白色」にすると良いと思います

次にシートに戻り「書式」→「条件付き書式」を選びます
「セルの値が」は「数式が」に変更して、式には選択しているセルがB1だとして、
=CELL("address",B1)=$A$1
と入力します。そして書式で色を設定します。

B1をコピーして他のセルに「編集」→「形式を選択して貼り付け」→「書式」で貼り付けると、条件付き書式を設定したセルを選択すると色が変わるようになります。

Qエクセル、アクティブセルの行に色ではなく枠太線を付けたいです。

アクティブセルで色を付けることは出来ましたが
もともとのセルにはいろいろな色(解りやすくするため)がついています。
色がついている為に赤の枠太線でわかりやすくしたいです。

初心者で申し訳ございません。
何卒よろしくお願いいたします。

Aベストアンサー

こんばんは!

一例です。
前提条件として
① 各セルに罫線(枠線)の設定はしていない。 
② 罫線に関する条件付き書式の設定はしていない。
② 1行目には最終列まで・A列には最終行までデータが入っている。
(1行目で最終列・A列で最終行を取得しているため)
とします。

シートモジュールですので
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
セルを選択してみてください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'この行から//
Dim lastRow As Long, lastCol As Long, c As Range, myArea As Range
lastRow = Cells(Rows.Count, "A").End(xlUp).Row '←A列で最終列を取得//
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column '←1行目で最終行を取得//
If Target(1).Row <> Target(Target.Count).Row Then
MsgBox "1行のみ選択してください"
Exit Sub
End If
Application.ScreenUpdating = False
For Each c In Range("A:A")
If c.Row > lastRow Then Exit For
If c.Borders(xlEdgeLeft).ColorIndex = 3 Then
Set myArea = c.Resize(, lastCol)
With myArea
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
End With
Exit For
End If
Next c
If Target.Row > lastRow Or Target.Column > lastCol Then Exit Sub
Set myArea = Range(Cells(Target.Row, "A"), Cells(Target.Row, lastCol))
With myArea.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlMedium
End With
With myArea.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlMedium
End With
With myArea.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlMedium
End With
With myArea.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlMedium
End With
Application.ScreenUpdating = True
End Sub 'この行まで//

※ 枠線の設定をしてある場合は
枠線を消すようにしていますので、枠線の再設定のこーどが必要になります。

まずはこの程度で・・・m(_ _)m

こんばんは!

一例です。
前提条件として
① 各セルに罫線(枠線)の設定はしていない。 
② 罫線に関する条件付き書式の設定はしていない。
② 1行目には最終列まで・A列には最終行までデータが入っている。
(1行目で最終列・A列で最終行を取得しているため)
とします。

シートモジュールですので
画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
セルを選択してみてく...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qエクセルで条件に一致したセルの隣のセルを取得したい

下のような「得点」という名前のシートがあります。
(「田中」のセルがA1です。)

 [ 田中 ][ 10 ][ 200 ]
 [ 山田 ][ 21 ][ 150 ]
 [ 佐藤 ][ 76 ][ 250 ]
 [ 鈴木 ][ 53 ][ 350 ]

別のシートのA1セルに、「佐藤」と入力すると、

 [ 佐藤 ]

「得点」シートから「佐藤」の列を見つけて、B1、C1に

 [ 佐藤 ][ 76 ][ 250 ]

のように表示させたいのですが、B1、C1にはどのような式を書けば良いのでしょうか。
「得点」シートでは氏名が重複する事はありません。
IF文を使うと思うのですが、いまいち良く分かりませんでした。

よろしくおねがい致します。

Aベストアンサー

こんにちは!
VLOOKUP関数で対応できます。
IF関数と併用すればエラー処理が可能です。

Excel2007以降のバージョンであれば
B1セルに
=IFERROR(VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0),"")
としてC1セルまでオートフィルでコピー!
そのまま下へコピーすると行が2行目以降でも対応できます。

Excel2003までの場合は
=IF($A1="","",VLOOKUP($A1,得点!$A:$C,COLUMN(B1),0))

としてみてください、m(_ _)m

Q(Excel)あるセルに文字を入力しただけで、同じブック内のほかのワークシートにも、同じ文字が自動的に入るようにするには?

こんにちは。
質問内容はタイトルのとおりです。

あるワークシートのあるセルに文字を入力すると、ほかのワークシートのセルにも同じ文字が自動的に書き込まれる方法を知りたいです(ブックは同じ)。複数のワークシートを制御するには、やはりマクロを使うのでしょうか?

よろしくお願いします。

Aベストアンサー

clam_chowderさん、こんにちは。

Sheet1のA1にたとえば「100」と入力しますね。
Sheet2のA1に、これと同じ数値を表示するには、
 =Sheet1!A1
でOKです。

数式をいれるのが苦手なら、
Sheet2のA1セルで「=」を入力すると、数式入力状態に入りますから、
ここでSheet1のシートタブをクリックし、
リンクしたいA1セルをクリックしてEnterすると、
自動的にさきほどと同じ式が入ります。

Q【VBA】アクティブセルだけ背景色を変えたい

お世話になります。

アクティブセルだけ背景色を変えたいと思っています。

以下のサイトを読んで、こちらのコードを利用して
アクティブセルの背景色を変えています。
http://www.excel.studio-kazu.jp/kw/2014102311340 …

このコードは素晴らしくて、よく利用しています。
ですが1つ困ったことがあります。

それはこのコードに

Cells.Interior.ColorIndex = xlNone

が含まれているため、シート上の全てのセルの背景色が
キャンセルされて、塗りつぶしなしの状態になってしまいます。

可能なら、先に背景色を設定したセルは既存の背景色を残したまま、
アクティブセルの背景色だけを変えることが出来るのなら、
活用してみたいと思っています。

もし、そんなことが可能でしたらマクロでも通常の設定でも構いませんので、
設定やコードを教えて下さい。

お手数ですが、詳しい方、説明の上手な方、よろしくお願いします。

追記
シート上でアクティブセルの場所だけ、わかれば良いので、
以下のように書き換えたところ一瞬、セルに背景色が表示されてから
シート全体の背景色がクリアされてしまいました。

このパターンで一瞬だけアクティブセルに背景色を表示して、
すぐに背景色(アクティブセルの)が既存の設定に戻る、、、というのでもいいです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Target(1).Interior.ColorIndex = 6
Cells.Interior.ColorIndex = xlNone
End Sub

※すいませんが、お礼、返信、etc.は遅くなると思います。

お世話になります。

アクティブセルだけ背景色を変えたいと思っています。

以下のサイトを読んで、こちらのコードを利用して
アクティブセルの背景色を変えています。
http://www.excel.studio-kazu.jp/kw/2014102311340 …

このコードは素晴らしくて、よく利用しています。
ですが1つ困ったことがあります。

それはこのコードに

Cells.Interior.ColorIndex = xlNone

が含まれているため、シート上の全てのセルの背景色が
キャンセルされて、塗りつぶしなしの状態になってしまいます。

可...続きを読む

Aベストアンサー

こんばんは!

>シート上の全てのセルの背景色が
キャンセルされて・・・

セルの塗りつぶしは手動で行っているのでしょうかね?
もし可能であれば
条件付き書式で塗りつぶされているセルの色は通常のマクロでは消えません。

ただこれではお望みの方法ではないと思いますので
一案です。
どこか使っていないセルに選択セルのアドレスを退避させておいて
そのセル番地を利用する方法はどうでしょうか?

仮にアクティブシートのZ1が使っていないセルだとして

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim myAd As String
  On Error Resume Next '//←念のため//
   With Target
    myAd = .Address(False, False)
     If Range("Z1") = "" Then
      Range("Z1") = myAd
      .Interior.ColorIndex = 6
     Else
      myAd = Range("Z1")
       Range(myAd).Interior.ColorIndex = xlNone
       .Interior.ColorIndex = 6
       Range("Z1") = .Address(False, False)
     End If
   End With
End Sub

※ 列全体とか、行全体を選択すると
エラーになるかもしれません。m(_ _)m

こんばんは!

>シート上の全てのセルの背景色が
キャンセルされて・・・

セルの塗りつぶしは手動で行っているのでしょうかね?
もし可能であれば
条件付き書式で塗りつぶされているセルの色は通常のマクロでは消えません。

ただこれではお望みの方法ではないと思いますので
一案です。
どこか使っていないセルに選択セルのアドレスを退避させておいて
そのセル番地を利用する方法はどうでしょうか?

仮にアクティブシートのZ1が使っていないセルだとして

Private Sub Worksheet_SelectionChange(ByVal Targe...続きを読む

Q現在のセルの位置を返す関数はありますか

Excel97を使っています。
マウスで指定されたセルの位置が返される関数はありますか?
例えば、その関数をA1に入れておくと、マウスで指定したセルの位置がA1に返されるという関数です。
要するに数式バーの左端に現在のセルの位置が表示されていますよね。
それを関数で指定のセルに表示したいのです。

Aベストアンサー

補足について、Sheet1で処理を行う想定で書いてみました。
最初のConstの2行で、A列と4行目までを指定しています。実情に合うよう変更して下さい。

Sheet1のコードウインドウに貼り付けます。
最初の質問の回答とは同時登録できませんのでご注意ください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Const BoldCol = "A"    '太字にする列
  Const maxRow = 4      '太字にするセルの最後の行(開始は1行目から)

  '単一セルの操作の場合
  If Target.Count = 1 Then
    'A列の太字属性を解除
    Range(BoldCol & "1:" & BoldCol & maxRow).Font.Bold = False
    If Target.Row <= maxRow Then
      '特定行にあればA列を太字属性にする
      Range(BoldCol & Target.Row).Font.Bold = True
    End If
  End If
End Sub

補足について、Sheet1で処理を行う想定で書いてみました。
最初のConstの2行で、A列と4行目までを指定しています。実情に合うよう変更して下さい。

Sheet1のコードウインドウに貼り付けます。
最初の質問の回答とは同時登録できませんのでご注意ください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Const BoldCol = "A"    '太字にする列
  Const maxRow = 4      '太字にするセルの最後の行(開始は1行目から)

  '単一セルの操作の場合
  If Target.Cou...続きを読む

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

Qエクセル 特定の文字を入れると他のセルの色が変わる

例えばセルA1に[りんご]と入力したらB2からB5までの文字の色が赤に変わる・・・などということは、関数や書式の設定なので出来るのでしょうか?
おわかりの方教えてくださーい!

Aベストアンサー

B2からB5のセルを選択し
書式メニューの条件付書式設定を選択し
数式が
=$A$1="りんご"
と入力し、書式で色を赤に変更してください。

Qエクセルで打ち込んだ数字を自動で別シートに表示したい

エクセルでセルに打ち込んだ数字を自動で別シートに表示できる方法があれば、教えてください。

例えば、シート1のC1に5を打ち込んだら、シート2のD2にシート1で打ち込んだ5が自動で表示される。

また1列すべてを自動で表示させる場合、一つのセルの時と違いがありましたら教えてください。よろしくお願いします。

Aベストアンサー

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コピー&リンク貼り付けを使うと便利です。

例)例)シート1のC1~C5に何かを入力したら、
  シート2のD2~D7にシート1で打ち込んだものが自動で表示される

  シート1にあるコピー元のセルを範囲選択して、
  シート2のD2の上で「右クリック」⇒「形式を選択して貼り付け」
  をクリックします。

  そして出てきた小さな画面の左下にある「リンク貼り付け」という
  ボタンをクリックすると完成です。
  試してみてください。。

  念のためにリンク貼り付けを図解しているURLを載せておきます。
  参考にしてみてくださいね。。
  http://www.geocities.jp/office_inoue/excel/eq21.htm

こんばんは。
入力したセルの値を合計とかでなくて、
純粋に別のシートに自動的に表示したいのであれば、
以下の方法があります。

1.1つのセルだけの場合
例)シート1のC1に5を打ち込んだら、
  シート2のD2にシート1で打ち込んだ5が自動で表示される

⇒シート2のD2のセルをアクティブにして「=」を入力
 した後、シート1のC1をクリックする。
 そうするとD2のセルに「=Sheet1!C1」と表示され、値が自動的に
 表示されるようになります。

2.1列全てコピーしたい場合。
  コ...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング