| ・Function 関数名(引数1 As 型式 , 引数2 As 型式)As String〜 End Function 実際に作成したプログラムで説明する。 Sub関数はExcel VBAで実行するプログラム。 Function関数はSub関数からさらに呼び出す関数(ユーザー定義関数)。 以下のプログラムは、外部データ取り込み部分をユーザー定義関数化して、他のマクロから呼び出せるようにした。 [本体部分] Sub torikomi() Dim path As String Dim path1 As String Dim path2 As String Dim page As String path1 = Sheets("Sheet2").Cells(2, 1) path2 = Sheets("Sheet2").Cells(3, 1) path = path1 & "\" & path2 page = "データ" Sheets("Sheet2").Cells(4, 1)=torikomi1 path, page ↑ torikomi1関数を呼び出している。 引数としてpath(外部データ取り込みアドレス)、page(取り込むシート)を渡している。 戻り値をSheets("Sheet2").Cells(4, 1)に代入するようにしている。 End Sub [サブルーチン部分] Function torikomi1(path As String, page As String) As String ↑ Function関数設定部分。 引数path、pageを文字列で受け取る設定をしている。 戻り値を文字列と設定している。 Sheets(page).Cells.Clear With Sheets(page).QueryTables.Add(Connection:="TEXT;" & path, Destination:=Sheets(page).Range("A1")) ↑ 引数path、pageを使用 .Name = "test" .FieldNames = True .RowNumbers = False .RefreshPeriod = 0 .RefreshOnFileOpen = False .Refresh BackgroundQuery:=False .RefreshStyle = xlInsertEntireRows .SavePassword = False .SaveData = True .FillAdjacentFormulas = False .PreserveFormatting = True .AdjustColumnWidth = True .TextFilePromptOnRefresh = False .TextFileStartRow = 1 .TextFilePlatform = 932 .TextFilePlatform = xlWindows .TextFileParseType = xlFixedWidth .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False .TextFileTrailingMinusNumbers = True .TextFileColumnDataTypes = Array(5, 9, 1, 9, 2) .TextFileFixedColumnWidths = Array(10, 2, 8, 4, 200) .Refresh .Refresh BackgroundQuery:=False .Parent.Names(.Name).Delete .Delete End With torikomi1 = "完了" ↑ 戻り値は関数名torikomi1に入れる。 完了という文字列を入れている。 End Function 以上が使用方法。 |