[[20090528155511]] 『入切できるようにしたい』(ふらむ) ページの最後に飛ぶ

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

 

『入切できるようにしたい』(ふらむ)

[[20090527154500]] 『マクロでアクティブセルの行を自動色付けしたいです。』(初心者です)

 '/////Sheet Moduleへ貼り付け/////
 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 With Range("B13:AI17,A20:AU38")
    .Interior.ColorIndex = xlNone
    If Not Intersect(.Cells, Target.EntireRow) Is Nothing Then
        Intersect(.Cells, Target.EntireRow).Interior.ColorIndex = 15
    End If
 End With
 End Sub

 こちらのROUGEさんの回答のマクロを、必要に応じて入・切できるようにしたいのですが
 そんな都合のよいことは可能でしょうか?
 可能でしたらツールバーのボタンへマクロを登録はわかるので、ボタンで入・切したいと思っています。
 宜しくお願いします。

 EXCEL2003/WINXP


 他にイベント関連のマクロがなければ、
 
Sub Switch_On_Off()
Application.EnableEvents = Not Application.EnableEvents
End Sub
 
(ROUGE)


 ありがとうございます。
 機能を切る際に塗られていた色を消したいのですが・・・
 どこを変更すれば良いでしょうか?
 (ふらむ)

 1行付け加えてください。(ROUGE)
 
Sub Switch_On_Off()
Application.EnableEvents = Not Application.EnableEvents
Range("B13:AI17,A20:AU38").Interior.ColorIndex = xlNone
End Sub


 ありがとうございます、できました。
 ただ、新規シートで試していた為今気がついたのですが、
 これをすると当然なのですが元々セルに色を付けていた場合、それもクリアされちゃうのですね。
 アクティブセルを強調って難しい。。。
 (ふらむ)

 >元々セルに色を付けていた場合、それもクリアされちゃうのですね。
 条件付書式を利用してセルに色を付ける事にすると
 セルに設定されている色は残す事が出来ます。

 但し、条件付書式の設定が使えなくなります。

 あとは、選択したセルと同じ行を選択して
 目立たせる方法も良く紹介されると思います。

 (HANA)

 逆に、条件付書式で色をつける方が単純かもね。
イベントマクロで使っていない行・列に隠しデータを入れる、
隠しデータの入力で条件付書式が発動する。
マクロのほうはクリアと値の入力だけにできるでしょうね。
既存の条件付書式が存在すると使えませんが。
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Range("A:A").ClearContents
    Cells(Target.Row, 1).Value = 1
End Sub
 
A列に条件付書式を発動させるデータを入力。
色づけは条件付書式に任せる。
この仕組みなら、書式を元に戻したりということは考えなく
ていいのではないかと。
(みやほりん)(-_∂)b


 過去ログにこういうのもありました。
[[20080123201347]] 『アクティブセル』(あや)
 
HN無しの方の投稿が参考になります。
(みやほりん)(-_∂)b


 下記はグチですので読み捨ててくだされば。
 実はみやほりんさんの紹介下さったマクロは以前使っていました。
 そのマクロを使っていたら同僚が便利だと使い始めたのですが・・・
 いちいち最初にブックにマクロなりシートに条件付書式を仕込んでおかないとならないのが嫌だと。
 確かに条件付書式を先に使っていた時困るよな〜と私自身思いながら使っていたので、
 その時にぱっと入り切りして使用できるものを探していました。
 アドインみたいな形にできればいいかなと思っていたので、マクロだけでの設定が理想なので
 今回こちらに質問致しました。
 EXCELに最初からこういう機能を付けてくれたらいいのに・・

 HANAさん、みやほりんさん回答ありがとうございました。

 (ふらむ)

 例えば、こちらから
 「K窓 Windows Word Excel Tips & Techniques」
   E03M121  切り取り又はコピーされたセル範囲を取得する
http://homepage2.nifty.com/kmado/ke_m13.htm#E03M121
 まるっとコードを頂いて

 標準モジュールに
 '=================
 Option Explicit
Option Private Module
Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Declare Function CloseClipboard Lib "user32" () As Long
Declare Function RegisterClipboardFormat Lib "user32" Alias "RegisterClipboardFormatA" _
  (ByVal lpString As String) As Long
Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
  (Destination As Any, Source As Any, ByVal Length As Long)
Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long
Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalSize Lib "kernel32" (ByVal hMem As Long) As Long
Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
  
'kGetRangeCopyCut関数
'切り取り又はコピーモード時(枠線点滅の状態)の範囲を取得する
'注:複数エリアを切り取り又はコピーした場合は連続した1エリアとして処理されます
Function kGetRangeCopyCut() As Range
  Dim mem&, sz&, lk&, vv As Variant, buf$
  If Application.CutCopyMode = False Then Exit Function
  OpenClipboard 0&
  mem = GetClipboardData(RegisterClipboardFormat("Link"))
  CloseClipboard
  If mem = 0 Then Exit Function
  sz = GlobalSize(mem)
  lk = GlobalLock(mem)
  buf = String(sz, vbNullChar)
  CopyMemory ByVal buf, ByVal lk, sz
  GlobalUnlock mem
  vv = Split(buf, vbNullChar)
  buf = "'" & vv(1) & "'!" & Application.ConvertFormula(vv(2), xlR1C1, xlA1)
  Set kGetRangeCopyCut = Range(buf)
End Function
 '=================
 を貼り付け。

 シートモジュールに
 '------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cpr As Range, cf As Long
    Cells.FormatConditions.Delete
If Application.CutCopyMode = 1 Then
    Set cpr = kGetRangeCopyCut
    cf = 1
End If
    With Application.Intersect(Selection.EntireRow, Range("A:I"))
        .FormatConditions.Add Type:=xlExpression, Formula1:="TRUE"
        .FormatConditions(1).Interior.ColorIndex = 35
    End With
If cf = 1 Then
    cpr.Copy
End If
End Sub
 '------

 の様に、すると 少しはそれっぽく出来るかもしれません。
 条件付書式の設定を使って色をつけていますので
 他で使用の必要がある場合は使えませんが。

 (HANA)

 あ…;; 恐縮です。
 ただのグチでしたので読み捨てて下さればよかったのに
 本当にありがとうございます。
 条件付〜がない場合に提案頂いたコードを使ってみます。
 (ふらむ)

 実は私も、
  シートに条件付書式の設定を設定しておいて
  マクロで「ScreenUpdating = True」
  としているブックを人に使わせているのですが
 1.事前に設定が必要
 2.他から貼り付けると、設定した書式が消えてしまう
 3.範囲が増えたらコピーが必要
 等の点で、使い勝手が悪いと思っていたのです。
 (時々 点検に行って直さないといけない。
  エクセルが良く分からない人が使っているので・・・。)

 この方法だと、他へコピーしたときが問題になりそうですが。。。
 (タブン、セルの色が消えない って呼び出される。。。)

 今回のコードは、まだ作っただけで使ってはいないので
 問題点など見つかりましたら、教えていただければと思います。
 (問題として、認識しますので。笑)

 (HANA)

 HANAさん

 そうなんです、自分で使ってる分には、ちょっと不都合があっても
 気をつけて使えば解消できるんですけど。(笑)
 あまりエクセルを使いこなしていない方が使う分には
 メンテナンスって言うと偉そうですが、後々が困っちゃうんですね。
 (って私も言うほどではないのですが)

 私自身は現在こちらのアドインを使わせていただいています。
 どのような仕組みなのかは私にはさっぱりですが。
http://full-link.jp/#app=9e13&3166-selectedIndex=3 
 「FULL-LINKさん 編集行、列を目立たせるEXCELアドイン」
 ※再配布になっちゃうんですかね?マズかったら識者の方消去願います
 同僚は贅沢に線なのが不満なようです(笑)

 HANAさんのコード、試運転してみました。
 他に条件付を使用してなかったら、元の塗潰しもアクティブ行でなくなれば
 元に戻るし最高です!
 それ以外では私自身が使うには全然問題ないのですが、生意気に参考意見として・・(スミマセン!)
 VBEを開かなくてもセル範囲や色の設定が出来れば(設定フォームが出るとか?)、
 コードはお手上げ!の方でも使い勝手が良いと思います。

 この度は本当にありがとうございました。
 (ふらむ)

コメント返信:

[ 一覧(最新更新順) ]


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