プロが教えるわが家の防犯対策術!

すいません、まったくマクロやVBA関係は、だめで、、
上司が、どこかのサイトで見つけた操作をやってみようと思ったら
下記の内容をVisual Basic Editorを開いて、
ThisWorkbookに下記のコードを入力して、さらに条件付書式をすると
セルを選択すると、その行が自動的にハイライトになるしく。。
私には、よくわからない世界になってきたような。。
すんません、またまたお願いします!

『入力するコード内容』

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = True
End Sub

そして、条件付書式より
”数式が”を選択して=CELL("row")=ROW()を入力します。

⇒ごめんなさいです。
 どこで、探してきたのか、わかりませんが、詳細をテキストにして
 送付されてきました。すみません。
 内容を説明できないでいます。
 

A 回答 (4件)

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


>Application.ScreenUpdating = True
>End Sub

この3行の意味は『このBook内で、セルの選択範囲が変わったら画面を更新する』です。

>”数式が”を選択して=CELL("row")=ROW()を入力します。

意味は No.2 の方の通りです。行をハイライトにするのであれば
全てのセルを選択した状態で [書式(O)]-[条件付書式(D)] とすすみ、上記の条件を設定し
[書式(F)]-[パターン] で好みの色を選択し [OK]-[OK] とすすみます。

これで、例えば[C5]を選択すれば5行目全体に色がつきます。

上の3行だけでは何も起こりませんし、条件付書式だけでは色のついた行が移動しません。
2つがセットで選択行のハイライトが可能になります。
    • good
    • 0
この回答へのお礼

遅くなって申し訳ありません。
ごていねいな回答に感謝します。
4人の方々の回答を全て参考にして上司は、うまく伝えることが出来ました。
本当に有難うございました

お礼日時:2005/08/10 08:01

こんばんは。



説明はみなさんがされているので置いておきますが、なぜ、条件付書式をしなければならないのでしょうか?。

私は、以下のようなコードでよいと思います。
全て、VBAの中でまかなえばよいと思います。
最初に、全体の色を消して、次に、アクティブになっているセルの全体の行に色をつけるというものです。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 Sh.Cells.Interior.ColorIndex = xlColorIndexNone
 Target.EntireRow.Interior.ColorIndex = 34
 '色番号は、記録マクロで調べてください。
End Sub

ただし、このマクロの不都合な点は、すでに色づけしているところまで消してしまうということです。条件付書式は、そういうことがありませんが、今度は、ワークブック全体を重くしてしまうという欠点があります。

なお、SelectionChangeイベントは、セルの選択を移動したときに発生するイベントです。ThisWorkbook モジュールに付けるのは、ワークブック全体のシートに設定しようとするためのものです。Sh とは、アクティブシートのこと。Target というのは、アクティブセルのことです。
    • good
    • 0
この回答へのお礼

遅くなって申し訳ありません。
ごていねいな回答に感謝します。
4人の方々の回答を全て参考にして上司は、うまく伝えることが出来ました。
本当に有難うございました!

お礼日時:2005/08/10 08:01

=CELL("row")=ROW()で、「カーソルのある行に対して次の書式を適用する」という意味になります。

書式(フォントが斜体とか)を指定してやらないとダメです。

次のスクリプトは、セルを移動するたびに起動され、強制的に画面を書き換えます。これがなければ画面の書き換えが行われません。

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = True
End Sub
    • good
    • 0
この回答へのお礼

遅くなって申し訳ありません。
ごていねいな回答に感謝します。
4人の方々の回答を全て参考にして上司は、うまく伝えることが出来ました。
本当に有難うございました

お礼日時:2005/08/10 08:01

正解かどうか自信がありませんが^^;



Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
これは、現在選択しているワークシート以外のシートを選択したときに発生するイベントです。
つまり、シートを移動する度に発生します^^
Application.ScreenUpdating = True
これは、画面の更新(たとえばマクロでA1のセルからA10のセルまで一個ずつセルを選択していくと動きが見えるかと思いますが、application.screenupdating=Falseにすると
見えなくなります。)

End Sub
サブルーチンの終わりを示す

※これだけでは何の意味も無い気がしますけど^^;
    • good
    • 0
この回答へのお礼

遅くなって申し訳ありません。
ごていねいな回答に感謝します。
4人の方々の回答を全て参考にして上司は、うまく伝えることが出来ました。
本当に有難うございました

お礼日時:2005/08/10 08:01

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

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