【お題】王手、そして

セルのかたちが正方形に近い、約100行(日付)と100列(項目)の表があります。
ひとつのセルの中には2桁(0~99)までの数字を入力し、縦横それぞれの最後尾でSUM関数により
合計値を出しています。

すべてのセルに数字を入力するわけではないので、よく間違ってとなりの項目に
数字を入力してしまうことがあります。

入力ミスを防ぐ為に、入力する際にアクティブなセルの行と列同時に反転表示する方法はありますでしょうか。(十文字のイメージ)

動作はブック全体ではなく任意のシート(Sheet1)のみで行いたいです。


エクセル2003です。

よろしくお願いします。

A 回答 (11件中1~10件)

アイデアだけ書いてみる。


Sheet1にセルの列幅にあわせて、縦に細長い、オートシェイプの四角を貼り付ける。
オートシェイプの書式設定の「色と線」で、
・「塗りつぶし」の「「色}で淡い色を着ける(ライトブルー、ライトグリーン、ピンク)
・「塗りつぶし」の透明度を調節し30%ぐらいで設定
ーー
Sheet1のCelection_Changeイベントで
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Worksheets("sheet1").Shapes(1).Left = Cells(1, Target.Column).Left
End Sub
を作る。
別の列のセル選択をすると、シェイプの四角がそちらの列に移動する。
ーーー
良いところ
そんなに動作が重くない
セルの字が見える
セルに既に設定された色書式を壊さない
Sheet1だけの限定効果。
VBAコードが割合簡単。
ーー
悪いところ
セルの文字がややぼやける
===
以上は列についてやったが、行のほうも上記を少し変えれば出来る(同時実現可能ー>十字状)。
縦の長さはデータ行によりあわせて長くしてください。
列幅が、列ごとに違う場合も、列幅にあわせてシェイプの幅を変えれば対応できそう。コードは略。

===
関数ではアクチブセルをとらえるのが難しく、全体にこの件を関数(条件付書式)では難しいだろう。
    • good
    • 0

何度もごめんなさい。



画像を添付するのを忘れていました。m(__)m
「エクセルでアクティブなセルの行と列を反転」の回答画像10
    • good
    • 0

またまたお邪魔します。



なかなかご希望通りの動きにならないみたいですが・・・

今、当方使用のExcel2003で新規ファイルに前回のコードをコピー&ペーストして操作してみるとちゃんと動きました。
一旦保存した後にファイルを開いてやってみましたが問題なく動きました。

ファイルを開いた段階ではセルの色を消すようにしていますが、別セルを選択するとちゃんとセルに色がつくようにしています。

ん~~~~~~~~~~

原因が判らないのですが、考えられることとしては、
Excelのバージョンは何をお使いでしょうか?
2007以降の場合は手元にないので詳しく判らないのですが、もし2007以降の場合は
保存方法(ファイル形式)の右側の下向き▼をクリックし、「マクロ有効ファイル」等のような項目があったと思いますので、そのファイル形式で保存します。
そしてそのファイルを開いた場合は「マクロを有効にするか?どうか?」という画面が出ますので、当然マクロを有効にしてファイルを開きます。

今一度 ThisWORKbook と操作しているSheet見出し上で右クリックしコードをコピー&ペーストしてみてください。

尚、もう一工夫して↓の画像のように項目列・項目行の色が同じ場合は項目列・項目行も一緒に変えるようにしてみました。
(行項目・列項目とも同じ色の場合のみ有効です。A1セルの色を基準にしていますので、A1セルも塗りつぶしておきます)

ThisWORKbook に貼り付けるコードは

Private Sub Workbook_Open()
Dim ws1 As Worksheet
Set ws1 = Worksheets("sheet1") '←Sheet名は適宜変更してください。
ws1.Range(Cells(2, 2), Cells(100, 100)).Interior.ColorIndex = xlNone
ws1.Range(Cells(1, 2), Cells(1, 100)).Interior.Color = ws1.Cells(1, 1).Interior.Color
ws1.Range(Cells(2, 1), Cells(100, 1)).Interior.Color = ws1.Cells(1, 1).Interior.Color
End Sub

次に操作Sheetのコードは

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, j As Long
i = Target.Row
j = Target.Column
If i > 1 And i <= 100 Then
If j > 1 And j <= 100 Then
Range(Cells(1, 2), Cells(1, 100)).Interior.Color = Cells(1, 1).Interior.Color
Range(Cells(2, 1), Cells(100, 1)).Interior.Color = Cells(1, 1).Interior.Color
Range(Cells(2, 2), Cells(100, 100)).Interior.ColorIndex = xlNone
Range(Cells(1, j), Cells(i, j)).Interior.ColorIndex = 6
Range(Cells(i, 1), Cells(i, j)).Interior.ColorIndex = 6
End If
End If
End Sub

今度は上手くいくことを望んでいます。m(__)m
    • good
    • 0

No.5・7です。



確かにファイルを開くと閉じた状態で開きますね!
ファイルを開いた時にはセルに色がついていない状態の方法です。

操作しているsheet見出し上で右クリック → コードの表示
これで画面左側に「This WorkBook」とありますので、そこをダブルクリック → 新しいVBE画面が出ますので↓のコードをコピー&ペーストしてみてください。
(操作しているsheetは「sheet1」としていますので、sheet名は適宜変更してください。)

Private Sub Workbook_Open()
Worksheets("sheet1").Range(Cells(2, 2), Cells(100, 100)).Interior.ColorIndex = xlNone
End Sub

尚、余計なお世話かもしれませんが、前回のコードでは十の字の色つきになりますが、
逆L字型の方法もあります。

参考程度でもう一度コードを載せておきます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, j As Long
i = Target.Row
j = Target.Column
If i > 1 And j > 1 Then
If i <= 100 And j <= 100 Then
Range(Cells(2, 2), Cells(100, 100)).Interior.ColorIndex = xlNone
Range(Cells(i, 2), Cells(i, j)).Interior.ColorIndex = 6 '←色は好みで変更
Range(Cells(2, j), Cells(i, j)).Interior.ColorIndex = 6 '←色は好みで・・・
End If
End If
End Sub

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

tom04さん ありがとうございます。

L字型更に見やすくなりました!

ただ、保存後の動作についてですが、ファイルを再度開くとL時型の表示がでません。

私のやりかたが間違っているのでしょうか。

確認するために新規ブックを作成し
「This WorkBook」に上記VBAのコードを貼り付け、
「Sheet1」に下記L字型のVBAを貼り付けてみました。

貼り付けた時は問題なく動作しますが、保存後再度動作するようになりますでしょうか。

見ようみまねで、
Private Sub Workbook_BeforeCloseも試してみましたがうまくいきませんでした。

お礼日時:2011/03/03 21:45

No.5です。



>項目欄には背景色を手動でつけているので消えてしまいます・・・

とありましたので再びお邪魔しました。
方法はいくつかあると思います。

一番簡単なのは項目セルは条件付書式を利用して、条件が空白でない場合は塗りつぶす!という方法です。

他の方法としては色付けしたいセル範囲が決まっているのであれば前回のコードを少し変更すれば可能です。

仮に、B2セル~CV100セル(100列目・100行目)までの範囲でご希望の操作を行う場合のコードです。


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i, j As Long
i = Target.Row
j = Target.Column
If i > 1 And j > 1 Then
If i <= 100 And j <= 100 Then
Range(Cells(2, 2), Cells(100, 100)).Interior.ColorIndex = xlNone
Range(Cells(i, 2), Cells(i, 100)).Interior.ColorIndex = 6 '←色は好みで変更
Range(Cells(2, j), Cells(100, j)).Interior.ColorIndex = 6 '←色は好みで・・・
End If
End If
End Sub

行・列範囲の数値はお使いのsheet範囲で変更してみてください。

参考になればよいのですが・・・m(__)m
    • good
    • 0
この回答へのお礼

tom04さん

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

範囲指定はとても使いやすくなりました。

ただ、保存して再度ファイルを開くと、色が付いた状態で十文字になってしまいます。

希望としては背景色を付けずに入力データを保存し、再度十文字になる状態にしたいのです。

もし方法ありましたらよろしくお願いします。

お礼日時:2011/03/03 13:57

項目を間違えて入力してしまうということができるだけ起きないようにするために用意されているエクセルの機能として「ウィンド枠の固定」があります。


例えば項目名が入力されている1行目とA列のデータを常に画面に表示させておくためにはB2セルを選択したのちに「ウィンドウ」メニューから「ウィンド枠の固定」を選択します。エクセル2010のバージョンでは「表示」タブから「ウィンド枠の固定」を選択します。
反転表示というよりも項目名がエクセルの画面に常に表示されている状態がより重要ではないでしょうか。
    • good
    • 0
この回答へのお礼

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

おっしゃるとおり、項目名がエクセルの画面に常に表示されている状態がより重要ですので
ウィンドウ枠の固定を使っております。

視覚的な要素を使って入力補助的な使い方が出来ればと思っていました。

ありがとうございました。

お礼日時:2011/03/03 04:02

こんにちは!


一例です。

画面左下にある操作したいsheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてみてください。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells.Interior.ColorIndex = xlNone
Dim i, j As Long
i = Target.Row
j = Target.Column
Rows(i).Interior.ColorIndex = 6
Columns(j).Interior.ColorIndex = 6
End Sub

これでアクティブセルの行・列が「黄色」になると思います。
色については「カラーインデックス」のナンバーで好みの色に変更してみてください。
仮に 6 → 36 に変更すると薄い黄色になります。

尚、手動でセルに色を付けている場合はその色も消えてしまいます。
(条件付き書式での色付けは無視されます)

参考になればよいのですが・・・m(__)m
    • good
    • 0
この回答へのお礼

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

おっしゃるとおり、項目欄には背景色を手動でつけているので消えてしまいます。

既存の背景色に影響せず、データを保存した際にはアクティブセルの十文字の色が保存されず、
後日再入力の際にまた十文字で入力が出来ると嬉しいです。

ありがとうございました。

お礼日時:2011/03/03 03:47

ano.2、ano.3のken281です。



自分で確かめるとこの方法はこの方法はイマイチのようです。
セルをクリックしても色付け部分が移動しない場合と移動する場合がある。([F9」を押下して再計算させると移動するが)

なので、過去の質問を検索しましたら、同様な質問がありました。(なんと私が同じ回答をしている!!)

他の回答者さんはマクロで回答されてます。

http://oshiete.goo.ne.jp/qa/1560078.html

参考URL:http://oshiete.goo.ne.jp/qa/1560078.html
    • good
    • 0
この回答へのお礼

数回に渡り回答ありがとうございます。

参考URLを参照してVBAを入れてみたのですが、保存すると最後に色が付いた状態で保存されて
しまいます。

後日、続きを入力する際は、一度背景色を消してからの作業になりますね。。。

項目セルには色をつけてあるので、既存の背景色を保持したまま、作業を再開したいのですが、難しそうですね。

ありがとうございました。

お礼日時:2011/03/03 03:39

ano.2の補足です。



書式で色を指定する時に、パターンで色を指定します。

セルを選択しただけでは色付け部分が移動しませんので確認する場合は選択するセルをダブルクリックするなどして入力可能な状態(セルの中でカーソル点滅)にして下さい。
    • good
    • 0

条件付書式でアクティブセルを交点に十字に色付けが可能です。

(指定した範囲で、条件付書式に縦用、横用に2つの条件を指定しますので後1つの条件付書式しか使えなくなってしまいます。(2007/2010では制限は無しだったと思います))

色を付けたい部分の範囲を選択しておいて、
条件付書式の設定画面(メニューバー→書式→条件付き書式)で「セルの値が」の横をクリックして「数式が」を選び
=ROW(A1)=CELL("row")
「書式」で色を設定
追加をクリック
同様に「数式が」を選び
=COLUMN(A1)=CELL("col")
「書式」で色を設定
OKをクリック

A1は範囲指定した部分の左上端のセルです。適宜に変更してください。(シート全体ならシート全体を範囲指定して下さい。)

EXCELL 2007は下記URLを参考に
http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/e …
    • good
    • 0

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


おすすめ情報