iSAMrx72's 思い付きBlog

今、新しいアカウントではじめました、への投稿となります。https://blog.goo.ne.jp/isamrx72

VBAとVBで遊んでました。

2015-07-06 14:05:30 | 日記

Sub maintest()
    Dim a As Integer
  a = 10
    Call BaiSeisu(a)
End Sub

Sub BaiSeisu(aa As Integer)
    aa = aa * 2
End Sub
--------------------------------------------------------------------------------

上はExcelのVBAのコードです。Subの方のByRef、ByValを省略するとByRefと

なるようです。maintestでCall BaiSeisuを呼んだ後はaの値が20になります。

省略するとどうなるか分からないので、出来るだけ省略しない方が良いのでしょう。

---------------------------------------------------------------------------------

Module Module1

    Sub Main()
        Dim a As Integer
        a = 10
        Call BaiSeisu(a)
        Console.WriteLine(a)
        Console.WriteLine(BaiSeisuF(a))
    End Sub

    Sub BaiSeisu(ByRef a As Integer)
        a = 2 * a
    End Sub

    Function BaiSeisuF(ByVal a As Integer) As Integer
        BaiSeisuF = 2 * a
    End Function

End Module
---------------------------------------------------------------------------------

上はVBで書いたものですが、BaiSeisuはaを参照ですので、Mainのaが変わります。

BaiSeisuFの方はaの値は変更されません。ByValですからね。Functionなので

値はファンクション名に返されますね。VBAもVBとも出来るだけ省略しない方が解り

易いようです。



最新の画像もっと見る

コメントを投稿