タグ: ByVal

  • [言語比較]ByVal : コピーした値を受け取る

    [言語比較]ByVal : コピーした値を受け取る

    Lotus Script 言語

    • 値のありかを受け取る ByRef(参照渡し)が規定ですが、わざわざ ByRef と明記するとエラーになります
    • ByVal と記載するとコピーされた値を受け取ることができます(値渡し)

    VbScript 言語

    • 値のありかを受け取る(参照渡し)が規定です。わざわざ ByRef と明記することができます
    • ByVal と記載するとコピーされた値を受け取ることができます(値渡し)
  • [言語比較]Call : 関数を呼ぶ

    [言語比較]Call : 関数を呼ぶ

    Lotus Script 言語

    () は省略できることが多いです
    Call を省略するときは () も省略します
    Call だけ省略し () を付けると、意味が変わります
    次のとおり色々な書き方ができます

    受け渡し値がないとき

    • Call 関数名 ()
    • Call 関数名
    • 戻り値 = 関数名 ()
    • 戻り値 = 関数名
    • 関数名

    受け渡し値があるとき(関数側の ByVal/ByRef 設定どおり)

    • Call 関数名 (受け渡し値)
    • Call 関数名 受け渡し値
    • 戻り値 = 関数名 (受け渡し値)
    • 関数名 受け渡し値

    これはエラーになります

    • 戻り値 = 関数名 受け渡し値

    受け渡し値があるとき(常に ByVal を強制)

    • 関数名 (受け渡し値) ’ Call を省略して () を付けます

    VbScript 言語

    Call を付けるときは () も付けます
    Call を省略するときは () も省略します
    Call だけ省略し () を付けると、意味が変わります
    次のとおり色々な書き方ができます

    受け渡し値がないとき

    • Call 関数名 ()
    • 戻り値 = 関数名 ()
    • 関数名

    受け渡し値があるとき(関数側の ByVal/ByRef 設定どおり)

    • 戻り値 = 関数名 (受け渡し値)
    • Call 関数名 (受け渡し値)
    • 関数名 受け渡し値

    受け渡し値があるとき(常に ByVal を強制)

    • 関数名 (受け渡し値) ’ Call を省略して () を付けます

    クラスの値を受け渡すと動作が変わります(アクセス権がどうの)

    クラス名.パラメータ = 値
    関数名 (クラス名.パラメータ) ’ クラス名.パラメータの値は変化しません
  • [言語比較]Class : クラスをつくる

    [言語比較]Class : クラスをつくる

     Lotus Scriptのクラスは、VBScriptと異なっているところが多いです。

    Lotus Script 言語

    Class クラス名 As 元クラス ’別のクラスから引き継ぐことができます

     ’最初に実行されます
     Sub New (変数名 As 型).元クラス (変数名 As 型) ’値を受け取ることができます
     End Sub

     ’最後に実行されます
     Sub Delete ()
     End Sub

     Public Sub 戻り値がない関数名 (変数名 As 型)
     End Sub
    ‘使うときは「Call クラスオブジェクト.関数名(値)」です

     Public Function 戻り値がある関数名 (変数名 As 型) As 型
      Me.戻り値がある関数名 = 戻り値 ’値を返します
     End Function
    ‘使うときは「値 = クラスオブジェクト.関数名(値)」です
    ‘または「Set 値 = クラスオブジェクト.関数名(値)」です

     Public Property Set プロパティ名 As 型 ‘ Lotus Script では Let は Set に統合されています
      変数名 = Me.プロパティ名 ’値を受け取ります
      (または) Set 変数名 = Me.プロパティ名 ’値を受け取ります
     End Property
    ‘使うときは「クラスオブジェクト.プロパティ名 = 値」です
    ‘または「Set クラスオブジェクト.プロパティ名 = 値」です

     Public Property Get プロパティ名 As 型
      Me.プロパティ名 = 戻り値 ’値を返します
     End Property
    ‘使うときは「値 = クラスオブジェクト.プロパティ名」です
    ‘または「Set 値 = クラスオブジェクト.プロパティ名」です

    End Class

     何も指定しないと Private、ByRef になります。
     現在のクラスのなかで現在のクラスで定義された関数・プロパティ・変数を使うには、名前の先頭に Me. をつければOKです

    VbScript 言語

    Class クラス名 ’独立したクラスとして作成します

     ’最初に実行されます
     Sub Class_Initialize () ’値を受け取れません
     End Sub

     ’最後に実行されます
     Sub Class_Terminate ()
     End Sub

    Sub 戻り値がない関数名 (変数名)
    End Sub
    ‘使うときは「Call クラスオブジェクト.関数名(値)」です

    Function 戻り値がある関数名 (変数名)
     戻り値がある関数名 = 戻り値 ’値を返します
    End Function
    ‘使うときは「値 = クラスオブジェクト.関数名(値)」です
    ‘または「Set 値 = クラスオブジェクト.関数名(値)」です

    Public Property Set プロパティ名 ’Set はオブジェクトを受け取ります
     Set 変数名 = プロパティ名 ’値を受け取ります
    End Property
    ‘使うときは「Set クラスオブジェクト.プロパティ名 = 値」です

    Public Property Let プロパティ名 ’Let はオブジェクト以外を受け取ります
     変数名 = プロパティ名 ’値を受け取ります
    End Property
    ‘使うときは「クラスオブジェクト.プロパティ名 = 値」です

    Public Property Get プロパティ名
     プロパティ名 = 戻り値 ’値を返します
    End Property
    ‘使うときは「値 = クラスオブジェクト.プロパティ名」です
    ‘または「Set 値 = クラスオブジェクト.プロパティ名」です

    End Class

     なにも指定しないと Public、ByRef になります。
     現在のクラスで定義されたプロパティをつかうときに、名前の先頭に Me. をつけるときがあります

    VBA (for Excel, Word など)

     VBAのクラスは Visual Basic Editor のメニューの挿入からクラスモジュールを選ぶことで作成できます。ひとつのページ(?)に複数のクラスを記述することができません
     クラスをエクスポートすると、次のようなヘッダーが付いてきます
     ここに記述したものすべては単一のクラス内のものとして扱われます

    VERSION 1.0 CLASS
    BEGIN
    MultiUse = -1 'True
    END
    Attribute VB_Name = "クラス名"
    Attribute VB_GlobalNameSpace = False
    Attribute VB_Creatable = False
    Attribute VB_PredeclaredId = False
    Attribute VB_Exposed = True
    
    (ここに関数ほかを記述します)
    ’最初に実行されます
    Private Sub Class_Initialize() ’値を受け取れません
    End Sub
    '使うときは「New クラス名」です
    ’最後に実行されます
    Private Sub Class_Terminate()
    End Sub
    '使うときは「Set クラス変数 = Nothing」です
    Public Sub 戻り値がない関数名(変数名) ' 複数の変数を指定するときはカンマ(,)で区切ります
    End Sub
    '使うときは「Call クラスオブジェクト.関数名(値)」です
    'または「Call クラスオブジェクト.関数名(変数名:=値)」です
    Public Function 戻り値がある関数名(変数名)
    	戻り値がある関数名 = 戻り値 ’値を返します
    End Function
    '使うときは「値 = クラスオブジェクト.関数名(変数名)」です
    'または「Set 値 = クラスオブジェクト.関数名(変数名)」です
    Public Property Get プロパティ名
    	プロパティ名 = 戻り値 ’値を返します
    End Property
    '使うときは「値 = クラスオブジェクト.プロパティ名」です
    Public Property Let プロパティ名(変数名) ’Let はオブジェクト以外を受け取ります
    	変数名 = プロパティ名 ’値を受け取ります
    End Property
    '使うときは「クラスオブジェクト.プロパティ名 = 値」です
    Public Property Set プロパティ名(変数名) ’Set はオブジェクトを受け取ります
    	Set 変数名 = プロパティ名 ’値を受け取ります
    End Property
    '使うときは「Set クラスオブジェクト.プロパティ名 = 値」です