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

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

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

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

Q&A

解決済

2回答

3098閲覧

subの関数内で ifでEnd subに飛ばしたら”ifブロックに対応するEnd If がありません”と警告受けるので実装方法が知りたい。

ma2hiro

総合スコア159

VBA

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

0グッド

0クリップ

投稿2021/12/21 00:41

お世話になっております。

EXCELのB3にあるxlsxファイルを削除するVBAを以下のように組みましたが

If (endFlag) Then End Sub End If

上記のEnd Sub で件名のように
”ifブロックに対応するEnd if がありません”と警告を受けてしまいます。

初めはendFlagではなく直接

If (exceltmp <> "") Then End Sub End If

で実装したらそこでもEnd Ifがありませんと言われたので
Dim endFlag As Boolean: endFlag = False
と実装してみたのですが同様にEndIFが無いと警告を受けてしまいました。

もしかしてVBAで途中で関数を抜け実装方法は
IF ではないのでしょうか?

どのような語句で調べれば良いのか伺ってよろしいでしょうか?

大変基本的な事を問い合わせて申し訳ないのですが上記お問い合わせいたします。
何か情報をお持ちになっていらっしゃる方はコメント頂けますようお願い申し上げます。

以下が元ソースです。

VBA

1Sub deleteFile_Click() 2 3 Dim copyDirFiles, exceltmp As String 4 Dim endFlag As Boolean: endFlag = False 5' copyDirFiles = Range("B3").Value & "*.xlsx" 6 'B3にファイル名まで含めたパスてすと 7 copyDirFiles = Range("B3").Value & "*.xlsx" 8 9 exceltmp = Dir(Range("B3").Value) 10 11 If (exceltmp <> "") Then 12 endFlag = True 13 End If 14 15 If (endFlag) Then 16 End Sub 17 End If 18 19 With CreateObject("Scripting.FileSystemObject") 20' If .FileExists(copyDirFiles) Then 'なんかFileExistsには*が使えないので削除 21 .DeleteFile copyDirFiles 22' End If 23 End With 24End Sub

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

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

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

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

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

ma2hiro

2021/12/21 01:33

仰る通りですね…… 焦って書き込んで失礼いたしました。
退会済みユーザー

退会済みユーザー

2021/12/21 01:35

自分の質問文中のワードくらい最低限検索してくださいよ。人力検索サイトか何かと勘違いしてます?
ma2hiro

2021/12/21 02:09

大変失礼しました。 以後気をつけます。
guest

回答2

0

ベストアンサー

End Sub はそこがSubプロシージャの終端という意味になります。
Subプロシージャを抜けたいのならExit Sub を使ってください。

vba

1 If (endFlag) Then Exit Sub

投稿2021/12/21 00:53

hatena19

総合スコア33795

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

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

ma2hiro

2021/12/21 00:56

失礼いたしました。 end Sub と思い込んでしまっていましたが Exit Sub ですねっ ありがとうございました。焦ってしっかり確認していなく失礼いたしました。
guest

0

Exit Sub でどうでしょうか。

vba

1 If (exceltmp <> "") Then 2 Exit Sub 3 End If

投稿2021/12/21 00:53

umau

総合スコア805

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

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

ma2hiro

2021/12/21 00:57

umau様 ありがとうございます。 出来ましたっ 本当に初心者で申し訳ございませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問