質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

36971閲覧

End sub が必要ですというエラー文が出てしまいます

Gamagaeru

総合スコア11

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/04/13 06:15

以下のコードを実行するとコンパイルエラーで、End sub が無効ですというエラー文が出てしまいます。
どこに入れればいいかわかりません。よろしくお願いします。

Sub 単体テスト仕様書マクロ() 'Excelファイルを開いてデータを取得 '戻り値:名前|住所 ( | で区切る) Function File_Load(ByVal wFilePath As String) As String Dim CurBookName As Variant Dim ColNo As Long Dim RowNo As Long Dim strValue As String Dim FoundCell As Range Dim i As Long 'ファイルを開く Workbooks.Open wFilePath '開いたExcelのファイル名を取得 CurBookName = Application.ActiveWorkbook.Name '検索する項目を配列に格納 wItem = Array("機能(プログラム)名", "テスト件数", "完了数", "不具合件数") '検索する For i = LBound(wItem) To UBound(wItem) Set FoundCell = Cells.Find(What:=wItem(i)) If FoundCell Is Nothing Then '検索出来なかった場合 If i = 0 Then strValue = "" Else strValue = strValue & "|" End If Else '検索したセルに移動 FoundCell.Select ColNo = ActiveCell.Column '列番号を取得 RowNo = ActiveCell.Row '行番号を取得 '住所を取得する If i = 0 Then '最初の項目 Cells(15, 3).Value Cells(16, 3).Value Cells(18, 3).Value Else '2番目以降の項目は|で区切る strValue = strValue & "|" & Cells(RowNo, ColNo + 1).Value End If End If Next i '結果を返す File_Load = strValue '開いたExcelファイルを閉じる Application.DisplayAlerts = False '確認メッセージの非表示 Workbooks(CurBookName).Close Application.DisplayAlerts = True '確認メッセージの表示 End Function

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Subプロシージャは Subから始まり、End Sub で終わります。
その間に実行したい処理を記述します。

vba

1Sub 単体テスト仕様書マクロ() 2 ’ここに実行したい処理を記述 3End Sub

例えば、次の File_Loadファンクションを呼び出したいのなら、下記のような感じになります。

vba

1Sub 単体テスト仕様書マクロ() 2 Dim Ret As String 3 4 ret = File_Load("C:\TEST\Test.xlsx") 5 MsgBox ret 6 7End Sub 8 9'Excelファイルを開いてデータを取得 10'戻り値:名前|住所 ( | で区切る) 11Function File_Load(ByVal wFilePath As String) As String 12 13 '以下略

投稿2021/04/13 06:28

編集2021/04/13 06:30
hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gamagaeru

2021/04/16 00:22

ありがとうございました。 本当に助かりました。 また、よろしくお願いします。
guest

0

おそらくVBAに触れてきたことがない方だと思います。 Function File_Load(ByVal wFilePath As String) As Stringの上にまずEnd Subを書き、Sub 単体テスト仕様書マクロ()を閉じましょう(Sub,End Subは開きカッコと閉じカッコのような関係です、中に別のSubやFunctionは入れられません)
その後、実行したい処理をその間に書きましょう

VBA

1Sub 単体テスト仕様書マクロ() 2 3'Excelファイルを開いてデータを取得 4'戻り値:名前|住所 ( | で区切る) 5 6' 7'実行したい処理を書く、以下実行例 8'returned_strings = File_Load(ファイルのフルパス) 9'MsgBox returned_strings 10' 11 12 13End Sub 14 15 16Function File_Load(ByVal wFilePath As String) As String 17181920End Function 21 22

投稿2021/04/13 06:26

Third_Kei

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問