特殊・他 ByValとByRefによる引数渡し-応用高等編

※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。

※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。

Option Explicit


Sub ByRefstrFileName()
'**************************************************
'多次元変数のプロシージャ間の受け渡し(大量データ)
'**************************************************
'呼び出し側
'可変変数

Dim strFileName() As String
Dim i As Long

'変数の値を別のプロシージャでセットさせる
Call FileNameEnumeration(strFileName)

    '変数の最小値から最大値までを読む
    For i = LBound(strFileName) To UBound(strFileName)

        MsgBox strFileName(i)

    Next i

End Sub


Sub FileNameEnumeration(ByRef strFileName() As String)
'***********************************************
'指定フォルダ内のファイル名一覧を取得列挙する。
'***********************************************
'呼び出される側
'可変変数

Dim strPath As String
Dim buf As String, i As Long
Dim strExtension As String

strPath = ThisWorkbook.Path & "\www\BasicFile\take\" 'パス指定
strExtension = "txt" '指定拡張子
i = 0 'デフォルトでは0

    buf = Dir(strPath & "\*." & strExtension)
    Do While buf <> ""
    '変数値を増やす
    ReDim Preserve strFileName(i) As String
        strFileName(i) = buf
        i = i + 1
        buf = Dir()
    Loop

End Sub
Option Explicit


Private Sub TestDB(ByVal CharacterDB As Variant)
Dim i As Long
    For i = LBound(CharacterDB) To UBound(CharacterDB)
        Debug.Print CharacterDB(i)
    Next i
End Sub


Private Sub Test()
Dim CharacterDB() As String
Dim i As Long

    For i = 0 To 20
        ReDim Preserve CharacterDB(i)
        CharacterDB(i) = i * 10
    Next i

Call TestDB(CharacterDB())

End Sub

 

 

 

2000年01月01日|[VBサンプルコード]:[特殊・他]