先日の関数を再計算にも対応させた。
あまりすっきりしたコードではないけど、名前定義を利用して、関数もどきの再計算をさせている。
'標準モジュール
'使用例 =rotate(対象のセル範囲,回転角) 回転角は-90~90
Function rotate(a As Range, b)
rotate = a.Address & "," & b
End Function
'シートモジュール
Private Sub Worksheet_Calculate()
Dim a As Variant
For Each n In ActiveWorkbook.Names
If n.Name Like "rotate_*" Then
f = Range(n.Name).Formula
If f Like "*rotate(*,*)*" Then
a = Split(Range(n.Name), ",")
Range(a(0)).Orientation = a(1)
End If
End If
Next
End Sub
Private Sub Worksheet_Change(ByVal target As Range)
Dim a As Variant
For Each ta In target
f = ta.Formula
If f Like "*rotate(*,*)*" Then
a = Split(ta, ",") 'a(0)は対象のセル a(1)は回転角
Range(a(0)).Orientation = a(1)
ActiveWorkbook.Names.Add Name:="rotate_" & Replace(ta.Address, "$", ""), RefersTo:="=" & ta.Address
End If
Next
End Sub