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

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

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

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

Q&A

解決済

1回答

5538閲覧

フォームを×で閉じるとエラーメッセージが掃かれるのを止めたい

webillion

総合スコア33

VBA

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

0グッド

0クリップ

投稿2017/09/18 04:16

編集2017/09/18 04:54

###前提・実現したいこと
VBAでフォームが最初に立ち上がるシステムを作っています。
フォームを×ボタンで閉じると以下のようなエラーメッセージが発生しました。

イメージ説明

デバックを押すと下記のようなメッセージが現れ、該当コードが黄色で反転されています。

イメージ説明

以前にもエクセルを立ち上げたときに、ユーザーフォームが表示されるシステムを作りましたが、その時は今回のようなエラーメッセージは掃かれませんでした。

分かる方、ご教示願います。

UserFormのコードを追記いたします。

Private Sub ComboBox1_Change() End Sub Private Sub CommandButton1_Click() Dim i For i = 10 To 60 Step 10 ComboBox1.AddItem i & "分" Next End Sub Private Sub CommandButton2_Click() Cells.Select Selection.ColumnWidth = 2 If Cells(1, 1) = "" Then Worksheets("Task").Cells(1, 1).Value = TextBox1.Value Columns("A:E").AutoFit If ComboBox1.Text = "10分" Then Cells(1, 2).Interior.ColorIndex = 3 Cells(1, 2).Value = "□" ElseIf ComboBox1.Text = "20分" Then Range(Cells(1, 2), Cells(1, 3)).Interior.ColorIndex = 3 Range(Cells(1, 2), Cells(1, 3)).Value = "□" ElseIf ComboBox1.Text = "30分" Then Range(Cells(1, 2), Cells(1, 4)).Interior.ColorIndex = 3 Range(Cells(1, 2), Cells(1, 4)).Value = "□" ElseIf ComboBox1.Text = "40分" Then Range(Cells(1, 2), Cells(1, 5)).Interior.ColorIndex = 3 Range(Cells(1, 2), Cells(1, 5)).Value = "□" ElseIf ComboBox1.Text = "50分" Then Range(Cells(1, 2), Cells(1, 6)).Interior.ColorIndex = 3 Range(Cells(1, 2), Cells(1, 6)).Value = "□" ElseIf ComboBox1.Text = "60分" Then Range(Cells(1, 2), Cells(1, 7)).Interior.ColorIndex = 3 Range(Cells(1, 2), Cells(1, 7)).Value = "□" End If Else 'MsgBox Maxcol n = Cells(Rows.Count, 1).End(xlUp).Row + 1 'MsgBox n 'With Range("A" & n - 1).SpecialCells(xlLastCell) With Cells(n - 1, Columns.Count).End(xlToLeft).Column 'maxrow = .Row l = Cells(n - 1, Columns.Count).End(xlToLeft).Column + 1 End With 'MsgBox l '最終行を求めてしまっている↓ ''m = Range("A" & n - 1).End(xlToRight).Column + 1 'm = Range("A" & Columns.Count).End(xlToLeft).Column + 1 'm = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 1) ''MsgBox m Worksheets("Task").Cells(n, 1).Value = TextBox1.Value Columns("A:E").AutoFit If ComboBox1.Text = "10分" Then Cells(n, l).Interior.ColorIndex = 3 'Range(n, m).Value = "□" Cells(n, l).Value = "□" ElseIf ComboBox1.Text = "20分" Then Range(Cells(n, l), Cells(n, l + 1)).Interior.ColorIndex = 3 Range(Cells(n, l), Cells(n, l + 1)).Value = "□" ElseIf ComboBox1.Text = "30分" Then Range(Cells(n, l), Cells(n, l + 2)).Interior.ColorIndex = 3 Range(Cells(n, l), Cells(n, l + 2)).Value = "□" ElseIf ComboBox1.Text = "40分" Then Range(Cells(n, l), Cells(n, l + 3)).Interior.ColorIndex = 3 Range(Cells(n, l), Cells(n, l + 3)).Value = "□" ElseIf ComboBox1.Text = "50分" Then Range(Cells(n, l), Cells(n, l + 4)).Interior.ColorIndex = 3 Range(Cells(n, l), Cells(n, l + 4)).Value = "□" ElseIf ComboBox1.Text = "60分" Then Range(Cells(n, l), Cells(n, l + 5)).Interior.ColorIndex = 3 Range(Cells(n, l), Cells(n, l + 5)).Value = "□" End If End If End Sub Private Sub Label2_Click() End Sub Private Sub TextBox1_Change() End Sub Private Sub UserForm_Click() End Sub Private Sub UserForm_Initialize() UserForm1.Show End Sub

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

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

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

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

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

yamashita_yuich

2017/09/18 04:23

そのExcelには複数のアドインがインストールされているかを教えて下さい。また、複数のアドインが読み込まれている場合、いずれかのアドインの起動時にシートオブジェクトなどを参照しているものがあるかを教えて下さい。
webillion

2017/09/18 04:29

複数のアドインはインストールされていません。
yamashita_yuich

2017/09/18 04:33

すいません、追加で教えて下さい。当該事象が発生しているマクロはアドイン(xlam)ファイルですか。それともマクロブック(xlsm)ですか。
webillion

2017/09/18 04:36

マクロブック(xlsm)になります。
yamashita_yuich

2017/09/18 04:41

UserForm1のソースコードを拝見することは可能でしょうか。あと、VBEの設定にて、ツール(T)-オプション(O) にある全般タブのエラートラップの設定をクラスモジュールで中断(R)にして再度マクロを実行した時に黄色くなるコード位置も教えて頂きたいです。
退会済みユーザー

退会済みユーザー

2017/09/18 04:43

userform1の中身も出していただけますか?
webillion

2017/09/18 04:57

baseballyama様>設定をした後に黄色くなるコードは画像にある通り「UserForm1.Show」です。
webillion

2017/09/18 04:58

slash様>質問にuserform1の中身を追加しました。
guest

回答1

0

ベストアンサー

VBA

1Private Sub UserForm_Initialize() 2 UserForm1.Show 3End Sub

このコードが問題を引き起こしています。

"UserForm_Initialize" はブックを開いた時に呼ばれるので、
・Private Sub UserForm_Initialize()
・Private Sub Workbook_Open()
の二か所で
UserForm1.Show
が発火しており、上記エラーが発生します。

今回の場合ですと、
・Private Sub UserForm_Initialize()
を削除されるのが良いと思います。

投稿2017/09/18 05:05

yamashita_yuich

総合スコア316

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

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

webillion

2017/09/18 05:09

二箇所の記述がエラーの原因だったのですね。 大変助かりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問