前提
以下のような機能を持つマクロをVBAで組んでいます。
- 2回目以降のマクロ実行時、処理を中断してメッセージボックスに”すでにその名前のシート名がある”旨を表示する、なければアクティブシートをコピーして左端に配置されるようにする
実現したいこと
- SubプロシージャからFunctionプロシージャを呼び出して、条件分岐できるようにする
発生している問題・エラーメッセージ
- Functionプロシージャの引数やSubプロシージャでの呼び出しかたが正しいかわからない
- 処理が中断されず、メッセージボックスも表示されない
- マクロを2回目以降実行すると同一シート名()でコピーができてしまう
該当のソースコード
VBA
1Sub Macro1() 2 3 Dim flg As Boolean 4 Dim SheetName As String 5 6 flg = SheetsCheck(SheetName) 7 8 If flg = True Then 9 End 10 MsgBox "中断します" 11 Else 12 ActiveSheet.Copy Before:=Sheets(1) 13 Sheets(1).Name = Format(Date, "yyyymmdd") 14 End If 15End Sub 16 17Function SheetsCheck(ByVal SheetName As String) As Boolean 18 19 Dim ws As Worksheet 20 21 For Each ws In Sheets 22 If ws.Name = SheetName Then 23 SheetsCheck = True 24 Else 25 SheetsCheck = False 26 End If 27 Next 28End Function
試したこと
- Subだけでできるか試してみましたが、読みずらくなるのと処理の結果は変わりませんでした
- Subプロシージャ内での呼び出し方が違うのかと思いましたが、調べた方法を試しても変わりません
- フローチャート的なものを書いて整理しましたが、それを実現してみてもうまくいきません
以上、何卒よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー