[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『セルに色をつけたい』(KAZUKAZU)
お願いします。現セルに色をつけ、移動したら移動先のアクテブセルに 色をつけ、直近のセルは、以前に戻すことをしたいのですが 事例を試してもわかりません。よろしく、お願い致します。 データーが行9000ありますので フイルターでヒットとしたセルの位置が 不明になる。それを画面中央に出す。 @ ActiveCell.Activate ActiveCell.Interior.ColorIndex = 3 この方法だと、元の色が元にもどらない。
A Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each c In UsedRange If c.Interior.ColorIndex = 4 Then c.Interior.ColorIndex = xlColorIndexNone End If Next Target.Cells.Interior.ColorIndex = 4 End Sub この方法ですと、エンター毎に変化するのと、時間がかかるので(データー多いので) 通常マクロで実行したく、Aの一行を削除し普通マクロで実行とエラーになる。
・シート名にコピーのマクロでなく、どうしても普通マクロで実行したい。
実行したいのは、ActiveCell.Activate後のセルに色をつけたいのです。
何度も繰り返すすので、位置が分からなくなる。
どうか教えて下さい お願い致します
なんどかこの板で紹介してるけど、なぜか見向きもされない、アンドリューさんの条件付き書式を使うスゴ技。 「元に戻すとき」元に色がついていたら、その色に戻るところも「ミソ」だね。 何よりも、コードとしては「1行」というのがすごい。
http://blog.livedoor.jp/andrewj/archives/18035971.html
・↑の例は、「選ばれた行に色づけ」なので、選ばれた「セル」なら、条件式を =AND(CELL("row")=ROW(),CELL("col")=COLUMN()) ・またThisworkbookモジュールで全シートをカバーしているけど、特定のシートのみでよければ、そのシートモジュールのWorksheet_SelectionChangeのほうが軽くなる。 ・条件付き書式は、シートのセルをすべて選択した状態で設定してもいいけど、そのようにしたいセル領域のみを選んで設定したほうが軽くなる。
(ぶらっと)
>アンドリューさんの条件付き書式を使うスゴ技。 実際に使ってみると ・条件付き書式を設定している範囲外からペーストすると設定した書式が無くなる ・新しく同様の物を作ろうと思った時 条件付き書式とコードの二つを移植する必要がある ・範囲に変更が有った場合、条件付き書式の再設定が必要 ・この様に成っているセルをコピーすると、条件付き書式までコピーされてしまう なんて、ちょっと面倒でした。
上の3つは、コードの方で 該当セル範囲に trueの条件付き書式を設定 と言う仕組みに変えて使ってみた事もありますが コピーで、条件付き書式が付いてきてしまうのは避けられず。。。 発動していないと、設定が有るのか無いのかも分からないですしね。 設定しているのを忘れてそのまま貼り付けて、ある日突然別のシートで発見してしまう事が何度かありました。
シートの状況が見えませんが Cells.Interior.ColorIndex = xlNone ActiveCell.Activate ActiveCell.Interior.ColorIndex = 3 こんなので良いんじゃないでしょうか?
何のフィルタか分からないですが、私は 見つけた行のどこかのセルをアクティブにして →← とかします。 絞り込み後、セルを選択して、フィルタを解除してマクロを実行するのではなく 絞り込み後、セルを選択して、フィルタを解除してアクティブセルを矢印キーで動かす。 すると、選んだセルが画面で見える位置に移動してきます。 一つ移動したのと逆の方向へもう一つ移動させておけば、 アクティブセルの位置も変わらずに済みます。
(HANA)
私の質問も悪かったと思いますが、毎回その場所を知るというよりも、行5000列CAの多数のデーターを ファイター抽出・画面表示した時、アクテブセルの場所を発見したいのです そのために私なりに、 ActiveCell.Activate ActiveCell.Interior.ColorIndex = 3を試しヤッタと思いましたら、 次セル移動したときに直前色が元にもとりませんでした。 ご教示の条件付きは試しましたが 重かった また Cells.Interior.ColorIndex = xlNone ActiveCell.Activate ActiveCell.Interior.ColorIndex = 3は既存設定してます、項目等の色まで リセットされました。 カーソル位置を必要に時のみ知りたい そのマクロを作りたいのですが・・・・
また事前質問のマクロ A Private Sub Worksheet_SelectionChange(ByVal Target As Range)
で、シートから外し、普通マクロにするにはどうしたらいいのですか
すみません 質問がヘタで・・・・
よろしく、お願い致します。
>既存設定してます、項目等の色までリセットされました。 でしたら、そのコードで 指定した場所以外のセルの色がリセットされれば良いのでしょうか?
ちなみに、「普通マクロ」と言うのは ボタン等で実行指令をかけて 実行するマクロの事ですか?
セルの選択を変えた時に、勝手に実行されるマクロの事ではなく ですよね?
>シートから外し、普通マクロにするには このコードは Private Sub Worksheet_SelectionChange(ByVal Target As Range) で始まっていますが、()の中に Target As Range ってのが有ります。 Targetの中には、選択したセルがセットされています。 なので、 Target.Cells.Interior.ColorIndex = 4 この時に、選択したセルの背景色が変わります。
一行目を削除してしまっては、Targetに何もセットされていないので 下の行で、「何処のセルの色よ!!」と怒られます。
単純に、アクティブセルの色 としてみてはどうでしょう? ActiveCell.Interior.ColorIndex = 4
(HANA)
それでは普通のマクロを。これだと軽いね。 なお、色は、特に色なしだったセルの色を戻すとき、セルの薄い枠線がきえないColorIndexを使うのがすきだけど、 一方で、2007以降は、必ずしも、セルから取得した塗りつぶしの色のColorIndexと実際の色が同じではないケースがあるのでここでは、Colorを。 色がつけられたアクティブセルを削除しても、エラーにはならないようにしてある。
Dim myAct As Range Dim myColor As Long
Sub 普通のマクロ() If Not myAct Is Nothing Then On Error Resume Next myAct.Interior.Color = myColor On Error GoTo 0 End If Set myAct = ActiveCell myColor = myAct.Interior.Color myAct.Interior.Color = vbYellow 'ここは好きな色を End Sub
(ぶらっと)
んん??
>結論からするとどちらも現セルに着色はしますが、移動するとその色が残ります。
提示コードは、「ボタンを押したときに」アクティブセルを認識。 それ以前に色がついているセルがあれば、それを「元の色に」戻した上で、新しいアクティブセルに色づけ。
要望は、アクティブセルが移動した、その瞬間に前の色を消したいということ? で、アクティブセルに色づけするのは、あくまでボタンを押したときだけ?
それなら
(標準モジュール) Public myAct As Range Public myColor As Long
Sub 普通のマクロ() If Not myAct Is Nothing Then On Error Resume Next myAct.Interior.Color = myColor On Error GoTo 0 End If Set myAct = ActiveCell myColor = myAct.Interior.Color myAct.Interior.Color = vbYellow 'ここは好きな色を End Sub
(シートモジュール)
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not myAct Is Nothing Then On Error Resume Next myAct.Interior.Color = myColor On Error GoTo 0 Set myAct = Nothing End If End Sub
(ぶらっと)
私はいつもみなさんのマクロを貼り付けて使用してました
そのため↑のSUB 普通のマクロからコピーしてましたがエラーがでます
(標準モジュール)はどうコピーするのですか
ボタンマクロにはどこから〜どこまでコピーしたらいいのでしょうか
すみません
エラーとは、いつの時点で、どんなエラーになるんだろうか?
それはそれとして、 エクセルの画面で Alt/F11 をおすとVBE画面というものにきりかわる。 標準モジュールは、ここで、メニューの挿入->標準モジュール を選んで出てくるシート。ここに
Public myAct As Range Public myColor As Long
Sub 普通のマクロ() If Not myAct Is Nothing Then On Error Resume Next myAct.Interior.Color = myColor On Error GoTo 0 End If Set myAct = ActiveCell myColor = myAct.Interior.Color myAct.Interior.Color = vbYellow 'ここは好きな色を End Sub
これだけを貼り付け。
シートモジュールは、エクセル画面のシートのシートタブを右クリックしてコードの表示を選ぶとでてくるところ。ここに
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not myAct Is Nothing Then On Error Resume Next myAct.Interior.Color = myColor On Error GoTo 0 Set myAct = Nothing End If End Sub
これだけを貼り付け。
で、シート上のボタンに、「普通のマクロ」をマクロ登録する。
(ぶらっと)
>カラーの変更は番号でできるよう
上でレスしたようにColorIndexの場合、2007以降では、不都合がおこるケースがでてくるけど、それは承知の上ということなら。 3カ所ある、myAct.Interior.Color を myAct.Interior.ColorIndex に。 vbYellow(1カ所)を、たとえば 6 に。
>ボタン実行した時に、画面中央に表示
この意味は、そのときのアクティブセルが画面中央にということ?
(ぶらっと)
解決ということで祝着・・・だけども 【画面中央に表示ですそれもOKでした】 アップしたコードでは、アクティブセルを画面中央時もっていくことはしていないんだけど? もし、そうするなら 【普通のマクロ】の最後、End Sub の前に、以下を追加。
11:20 コードアップしたけど、いったん取り下げ。 11:26 コード再掲。(ちょっと乱暴というか手抜きだけど)
With ActiveWindow On Error Resume Next .ScrollColumn = ActiveCell.Column - Int(.VisibleRange.Columns.Count / 2) .ScrollRow = ActiveCell.Row - Int(.VisibleRange.Rows.Count / 2) On Error GoTo 0 End With
(ぶらっと)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.