目安箱 IV

目安箱投稿のルールはこちらをごらんください。
ご意見は電子メールで承っています。
「目安箱」は質問禁止です。技術的な質問はそれぞれの質問箱へどうぞ。

迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
69 / 118 ツリー ←次へ | 前へ→

【159】アクティブセルの視認性アップ Jaka 06/10/31(火) 10:18 Excel[未読]
【161】条件付書式版 Jaka 06/11/2(木) 11:44 Excel[未読]

【159】アクティブセルの視認性アップ
Excel  Jaka  - 06/10/31(火) 10:18 -

引用なし
パスワード
   アクティブセルの色が「赤」に変わります。範囲選択の場合でもアクティブセルのみ対象。
色月セルを選択したまま終了すると、選択前の色情報を保存してないから、セル移動後は色が無い物として扱う。(無色にされる。)
セルのアクティブセル認識色と同色の色に変えた場合、無色にされる。選択する前から赤の場合はそのままです。
不具合も色々あると思いますから、参考程度に。
条件付書式を使ってもいいんだけど....。

注)セルの色を変えているから、セルの使用履歴に反映されます。
  つまり、UsedRangeが拡大します。

**************
標準モジュール

Public savad As String

Sub Auto_Open()
              '↓ 対象シート名
  If ActiveSheet.Name = "Sheet1" Then
    savad = ActiveCell.Address
  End If
End Sub

**************
シートモジュール(上記コードの対象シート名と同じシート)

Private OrgColor As Integer
Private PrevCell As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Not PrevCell Is Nothing Then
  On Error Resume Next
  If PrevCell.Interior.ColorIndex <> xlNone Then
    If PrevCell.Interior.ColorIndex <> 3 Then
     'irono = PrevCell.Interior.ColorIndex
     'PrevCell.Interior.ColorIndex = irono
    Else
     PrevCell.Interior.ColorIndex = OrgColor
    End If
  End If
  On Error GoTo 0
 Else
  On Error Resume Next
  Range(savad).Interior.ColorIndex = xlNone
  On Error GoTo 0
 End If
 OrgColor = ActiveCell.Interior.ColorIndex
 ActiveCell.Interior.ColorIndex = 3
 Set PrevCell = ActiveCell
End Sub

Private Sub Worksheet_Activate()
  savad = ActiveCell.Address
End Sub

【161】条件付書式版
Excel  Jaka  - 06/11/2(木) 11:44 -

引用なし
パスワード
   ●条件付書式版1(作業セルが必要。)
 作業セルをA1として、

標準モジュール

Public savad As String

Sub Auto_Open()       ↓対象シート名と同じ
  If ActiveSheet.Name = "Sheet1" Then
    savad = ActiveCell.Address
  End If
End Sub

対象シートモジュール

Private PrevCell As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  'If Target.Count > 1 Then Exit Sub
  If Range("A1").Value = "" Then
    Range("A1").Value = ActiveCell.Address(0, 0)
  End If
  If Not PrevCell Is Nothing Then
    Range("A1").Value = ActiveCell.Address(0, 0)
    On Error Resume Next
    PrevCell.FormatConditions.Delete
    On Error GoTo 0
    With ActiveCell
      .FormatConditions.Delete
      .FormatConditions.Add Type:=xlExpression, Formula1:="=A1=""" & .Address(0, 0) & """"
      .FormatConditions(1).Interior.ColorIndex = 3
    End With
  End If
  Set PrevCell = ActiveCell 'Target.Cells(1)
  DoEvents
End Sub

Private Sub Worksheet_Activate()
  savad = ActiveCell.Address
End Sub


●条件付書式版2(やっぱり作業セルが必要。)
 作業セルをA1として、各セルに条件付書式を設定しておく。
 簡易だけど、ファイルが重くなる可能性大。
 ↓これにひっかかる可能性がありそう
 "表示形式を追加できません"エラーが書式設定時に発生する
 えっちttp://support.microsoft.com/default.aspx?scid=kb%3bja%3b213904

シートモジュール

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Range("A1").Value = Target.Address
End Sub

全てのセルか、A1から使いたい範囲のセルを選択して、

条件付書式の「数式が」で、
=CELL("address",A1)=$A$1
(A1の条件は後で消す。)

----------------
ちょっとした発見
入力規則って、セルに設定しただけでは、UsedRange内に入らないんですね。
範囲内に入るのは、リストから何かしらの値が選択されたときだけで、
セルを選択して、Deleteキー等でセル内容を消すと、また範囲外になるんですね。

また、条件付書式も範囲外として扱われるんですね。
今まで、てっきり対象になると思ってました。

  新規投稿 ┃ツリー表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃ホーム  
69 / 118 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:   
0
(SS)C-BOARD v3.8 is Free