特殊・他 ByValとByRefによる引数渡し-応用高等編
※より実装に近く表示させる為、コードの改行を避けています。スマホ等で閲覧される際は向きを変えてご覧ください。
※実装するバージョンによってはバージョンアップの仕様により動作しないコードもあります。実装には動作確認の上ご使用下さい。
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 |
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 |