Excel VBA:メソッドチェーンの利用

Excel VBA

サンプルコード

Option Explicit

Private b As Boolean
Private d As Double
Private re As Object

Private Sub Class_Initialize()

    b = True
    d = 0
    Set re = CreateObject("VBScript.RegExp")
    
    With re
        
        .Pattern = "^(0|-?[1-9]{1}[0-9]*){1}(\.[0-9]*)?$"    ' 検索パターンを設定
        .IgnoreCase = False                                  ' 大文字と小文字を区別する
        .Global = True                                       ' 文字列全体を検索
    End With
End Sub

Private Sub Class_Terminate()

    Set re = Nothing
End Sub

Public Function add(ByVal s As String) As MethodChaining
    
    If Not Len(s) = 0 Then
    
        If re.test(s) Then
        
            d = d + CDbl(s)
        
        Else
        
            b = False
        End If
    
    Else
    
        b = False
    End If
    
    Set add = Me
End Function

Public Function getAnswer() As String

    Dim s As String
    s = ""
    
    If b Then
    
        s = CStr(d)
    End If
    
    getAnswer = s
End Function

クラス名をMethodChainingとする。

使用例

Dim mc As MethodChaining
Set mc = New MethodChaining

MsgBox mc.add("1").add("2").add("3.0").add("0.5").getAnswer()

Set mc = Nothing

実行すると”6.5″とメッセージが表示される。

コメント

タイトルとURLをコピーしました