t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

Webで動くVBAチュートリアルを作りたい その9

その6で作ったEvalVariableプロシージャのうち、変数かどうかを判別する部分をつかいまわしたかったので、そこだけ関数にした。

'変数を評価するプロシージャ
Sub EvalVariable(ByRef Memory() As String)
    If UBound(Memory) < 1 Then Exit Sub
    For i = 1 To UBound(Memory)
        If IsVariable(Memory(i)) Then
            'VariablesにMemory(i)があればメモリをその値に書き換え、
            '無ければ登録してEmptyを入れる
            If Variables.Exists(Memory(i)) Then
                Memory(i) = Variables.Item(Memory(i))
            Else
                Call Variables.Add(Memory(i), Empty)
                Memory(i) = ""
            End If
        End If
    Next i
End Sub

'変数かどうかを判別する関数
Function IsVariable(ByRef x As String) As Boolean
    'キーワードでも型でも関数でも無く、アルファベットであれば変数とみなす。
    IsVariable = _
        Not Keywords.Exists(x) And _
        Not VariableTypes.Exists(x) And _
        Not VBAFunctions.Exists(x) And _
        x Like "*[a-z]*"
        
End Function

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。