|
●条件付書式版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キー等でセル内容を消すと、また範囲外になるんですね。
また、条件付書式も範囲外として扱われるんですね。
今まで、てっきり対象になると思ってました。
|
|