エクセラのEXCEL
表計算ソフトEXCELでゲーム等を作っています。ゲーム等の作成状況を紹介。
再計算可能なセル変更関数

先日の関数を再計算にも対応させた。
あまりすっきりしたコードではないけど、名前定義を利用して、関数もどきの再計算をさせている。


'標準モジュール
'使用例 =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

スポンサーサイト

テーマ:EXCEL - ジャンル:コンピュータ

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2005 エクセラのEXCEL all rights reserved.
Powered by FC2ブログ.