[[20060416101817]] 『行列に色を付ける』(苦学生) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『行列に色を付ける』(苦学生)

[[20030910025935]]を見せて頂いて,重宝しています。

 ただ、印刷する
 時に色が付くと困るので行列番号の左上でクリックしてページ全体を指定して
 から書式設定でセルの色を無しにしてから印刷しています。
 そこで質問を2つ
 1つめ
 好きなときに行列に色を付けたり、付けなかったりはできないでしょう
 か?(スイッチみたいなものが作れないでしょうか)
 2つめ
 また、そのシートだけにしかその機能は働かないのですが、
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Application.CutCopyMode = xlCopy Then
        Exit Sub
     End If
    Cells.Interior.ColorIndex = xlNone
    Columns(Target.Column).Interior.ColorIndex = 35
    Rows(Target.Row).Interior.ColorIndex = 35
    Selection.Interior.ColorIndex = 36
 End Sub
 この記述をどこに貼り付けたらどのシートにも色を付けることができ
 るのでしょうか。シートは4月、5月、と12枚あります。今は4月
 のシートに貼り付けてあります。それぞれに全部貼り付けなくては、
 いけないのでしょうか?

 1つめへの回答です。

 どこかのセルなりにフラッグを立て、
 フラッグが立っていたらマクロを実行
 するようにしてはいかがでしょう?

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Worksheets(1).Cells(1,1).Value <> "着色" Then Exit Sub
  '処理
 End Sub 
 (MARBIN)

 すみません!以前自分で質問していて回答をもらっていたのに忘れていました。
 消える方法は[20040521141055]にかいてありました。ただ、これだと1行めがところ
 どころセルの結合があってそこは2列とか3列一度に色が付いてしまいます。「kazu]先
 生のだと必ず一列ずつなのでとても良いのですが。

1.たとえば↓をコピーします。

 ↑のように黒字で大きく書かないで回答をお願いします。もう面倒な奴やな!これでど
 うや・・・と叱られているような気がしますので。・・・(気の弱い苦学生)
 またまた追伸を書いている間に回答を頂きまして (MARBIN)様有り難うございます。

 ふたつめの、どのシートでも、というのは
 Workbookモジュールの↓のイベントに変えてみる、でいかがでしょう?

 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

 End Sub
 (MARBIN)

 (MARBIN)様へ 教えて頂いたことをいろいろやって見てはいるのですが一つもまだ成功
 はしていません。
 まず
 <どこかのセルなりにフラッグを立て>の意味さえ理解できません。フラッグとはどん
 なものなのでしょう.。マクロの記録とボタンを作りそれに記録させることはできるの
 ですが,
  Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Worksheets(1).Cells(1,1).Value <> "着色" Then Exit Sub
  '処理
 End Sub 
 を」どこへ貼り付けるのでしょうか。単純に続けて貼り付けたらエラーになってしまい
 ました。     もう少しだけお教え下さい。(苦学生)

 フラッグを立てるとは?

 たとえば、シート1のA1に
 "着色"と入力されているとします。

 シート1のA1の値が"着色"だったら
 マクロを実行し、
 "着色"意外だったり何も入力されていなかったら
 マクロを中止するようにする、
 ということです。

 例)
 シート1のA1に"着色"と入力しておく。

 標準モジュールに↓を記述してマクロを手動で実行させて
 みてください。
 test用の新規ブックでお試しください。

 Sub test()
  If Sheets("Sheet1").Range("A1").Value = "着色" Then
     MsgBox "着色する"
  Else
     MsgBox "着色しない"
  End If
 End Sub

 セルの値が"着色"だった場合と違う場合でメッセージが違
 うはずです。

 なおマクロは↓のようにすることも出来ます。

 Sub test()
  If Sheets("Sheet1").Range("A1").Value = "着色" Then
     MsgBox "着色する"
  End If
 End Sub

 この場合は、セルの値が"着色"だったらメッセージが表示され、
 違う場合は何も表示されません。

 ※分かりやすいようにセルの値をフラッグにしましたが、
 オプションボタンで選択するようにしてもいいですし、
 トグルボタンの状態で切り替えるようにしてもいいかもしれませ
 ん。
 (MARBIN)

 Alt + F11 でVBE起動
 ↓
 ThisWorkbookをWクリック
 ↓
 (General)の右の▼をクリックし
 Workbookを選択
 ↓
 右に表示された
 Openの右の▼をクリックし
 SheetSelectionChangeを選択

 そうすると自動的に

 Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

 End Sub
 と記述されるので
 コードを記述してVBEを閉じたらエクセルに戻ります。

 このイベントはブック内の全てのシートに適用されます。
 (MARBIN)

 すごい!できました。新規のbookには最初標準モジュールというのはないですね。いっ
 たんマクロの記録で最初標準モジュールを作りだしその内容を削除して教えて頂いたも
 のを貼り付けましたが。それでよろしいか?

 Alt+ F11 でVBE起動→挿入→標準モジュール

 あるいはショートカットキーで

 Alt + F11 → Alt + I → M

 で標準モジュールの挿入ができます。
 (MARBIN)

 有り難うございました。おかげさまで標準モジュールの挿入を覚えました。(苦学生)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.