ここから質問投稿すると、最大4000ポイント当たる!!!! >>

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

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

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

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


エクセル2003です。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

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

Q選択範囲の反転

いつも有難うございます
Excel2007ですが、あるシートに100行100列を使用して作成してあります、そこでその中の2列を100行まで選択をしておきそれを選択しない98列の方に反転したいのですが(選択範囲の反転)可能でしょうか。
宜しくお願いいたします。

Aベストアンサー

こんにちは。

Excel 2007 は、持っていないので分かりませんが、基本的には出来ないような気がします。

私は、マクロでは作りましたが、頻繁に使いませんのでいつしか忘れられてしまいました。それでもよければ、マクロをお使いください。

コマンドボタンやショートカットに設定すると良いと思います。

'反転選択
Sub InvertSelection()
'個人用マクロ・ブックの標準モジュール
  Dim OrgArea As Range
  Dim ExceptArea As Range
  Dim a As Range
  Dim Ur As Range
  
  '範囲設定
  Set OrgArea = Range("A1:CV100")
  'または、Set OrgArea = ActiveSheet.UsedRange
  
  If StrComp(TypeName(Selection), "Range", 1) <> 0 Then Exit Sub
  Set ExceptArea = Selection
  For Each a In OrgArea.Cells
    If Intersect(a, ExceptArea) Is Nothing Then
      If Ur Is Nothing Then
        Set Ur = a
      Else
        Set Ur = Union(Ur, a)
      End If
    End If
  Next a
  Ur.Select
  Set ExceptArea = Nothing
  Set OrgArea = Nothing
End Sub

こんにちは。

Excel 2007 は、持っていないので分かりませんが、基本的には出来ないような気がします。

私は、マクロでは作りましたが、頻繁に使いませんのでいつしか忘れられてしまいました。それでもよければ、マクロをお使いください。

コマンドボタンやショートカットに設定すると良いと思います。

'反転選択
Sub InvertSelection()
'個人用マクロ・ブックの標準モジュール
  Dim OrgArea As Range
  Dim ExceptArea As Range
  Dim a As Range
  Dim Ur As Range
  
  '範囲...続きを読む

Q【Excel】 カーソルの縦横ラインに色などを付けて視認性を高めたい

Excelについて質問です。

表現が難しいのですが、
カーソルの縦と横のラインに色を付けるなどして、
カーソルのいる行がすぐにわかるようにしたいのですが、
何か設定やフリーソフトなどないでしょうか?

よく表を比べることがあるのですが、
行を間違えたりしやすく
ラインがはっきり分かると非常に助かるのですが。

どうぞよろしくお願いいたします。

添付はイメージです。

Aベストアンサー

人様の回答ですが(自分の回答は0点...)
http://okwave.jp/qa4029237.html
の、No.3がお勧めです。

QエクセルVBAでIME入力モードの制御

エクセルVBAでIME入力モードの制御について教えてください。

Sub IMEの現在の状態()
状態 = IMEStatus()
MsgBox 状態 & "です", vbInformation, "IMEの現在の状態"
End Sub

これでIMEStatus関数の戻り値が
1 オンの状態
2 オフの状態
4 全角ひらがな入力モード
5 全角カタカナ入力モード
6 半角カタカナ入力モード
7 全角英数入力モード
8 半角英数入力モード

であることがわかりましたが、逆にIMEの状態を設定するにはどのように記述すればいいのでしょうか?

たとえば、Sheets("AAA").Range("B1:B20")は「半角英数入力モード」にする場合。
DialogSheets("GGG")のダイアローグを呼び出したとき、その中のEditboxes("HHH")には「全角ひらがな入力モード」。

などです。
よろしくお願いします。

Aベストアンサー

えーっと・・・基礎はないけど実践だけで何とかやってるというレベルなんですねぇ。まぁ私も似たようなもんなんですが。
VBAの本など読まれることをお勧めしますよ。貴方の場合、全くの初心者が読むよりは遥かに得られるものがあるかと思います。


IMEモードの切り替えがマクロに記録されない点については、IMEの管轄はエクセルではないためです。まぁそれでもコードから直接操作することは可能なんですが。
前回のマクロはデータ>入力規則からした作業をマクロで記録しただけです。細かく解説すると
特定のセル(Range("A1")とか)に
入力規則(Validation)を
追加する(Add)
という意味合いなんですよ。

で「Editboxes」というのはおそらくTEXTBOXの一種ですよね。その上に入力規則を追加しようとしても反映されないのは当然で、セルにはValidationというプロパティが用意されていますが、TEXTBOXにはありません。
但しTEXTBOXはIMEmodeのプロパティを直接持っていますから
TEXTBOX.IMEmode=1
というような感じで設定できます。

しかしおそらくですが、組み込みダイアログはその辺の自由度がありませんので、Editboxesのプロパティが操作できない、というか元からIMEmodeを持ってないのじゃないのかなと。
ですので最初からフォームで作れと何度も言ってる訳なんですが。今更95時代の遺産を使うのもなんですし。

えーっと・・・基礎はないけど実践だけで何とかやってるというレベルなんですねぇ。まぁ私も似たようなもんなんですが。
VBAの本など読まれることをお勧めしますよ。貴方の場合、全くの初心者が読むよりは遥かに得られるものがあるかと思います。


IMEモードの切り替えがマクロに記録されない点については、IMEの管轄はエクセルではないためです。まぁそれでもコードから直接操作することは可能なんですが。
前回のマクロはデータ>入力規則からした作業をマクロで記録しただけです。細かく解説すると
特...続きを読む

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む


人気Q&Aランキング