ここから本文です

VBAで、以下のユーザーフォームをブックを開いたときに自動で起動するようにするた...

aka********さん

2018/7/2608:23:08

VBAで、以下のユーザーフォームをブックを開いたときに自動で起動するようにするためにThisWorkbookに以下の3行のコードを書きました。

すると、ブックを開いたときに自動でユーザーフォームが起動するのですが、テキストボックスに8桁の年月日を入力し「OK」を押すと
「Sheets メソッドは失敗しました Global オブジェクト」というエラーがでます。
デバックで確認したところ、UserForm1の「Sheets(1).Range("C4") = i」という行でエラーが出てました(変数iを数値に変えても同じ行でエラーが出ます)。エラーが出た後にブックを閉じることなく、UserForm1を実行すると再度エラーは出ないのですが、ブックを開いて自動でUserFormが実行された場合のみエラーがでます。
また、ThisWorkbookのコードを消して、UserForm1を実行するとエラーが出ません。
初めたばかりで分からないことが多いので、よろしくお願いします

・ThisWorkbook
Private Sub Workbook_open()
UserForm1.Show
End Sub


・Userform1
Private Sub CommandButton1_Click()

Dim i As Variant
i = TextBox1

If TextBox1.Value >= 20000101 And TextBox1.Value <= 20991231 Then

i = Format(DateSerial(Left(TextBox1.Value, 4), Mid(TextBox1.Value, 5, 2), Right(TextBox1.Value, 2)), "yyyy/mm/dd")

Else
MsgBox "入力された値が正しくありません"

Unload Me
Exit Sub
End If

Sheets(1).Range("C4") = i
Sheets(2).Range("C4") = Sheets(1).Range("C4") + 1
Sheets(3).Range("C4") = Sheets(2).Range("C4") + 1
Sheets(4).Range("C4") = Sheets(3).Range("C4") + 1
Sheets(5).Range("C4") = Sheets(4).Range("C4") + 1

Sheets(1).Name = Format(i, "m月d日")
Sheets(2).Name = Format(Sheets(1).Range("C4") + 1, "m月d日")
Sheets(3).Name = Format(Sheets(2).Range("C4") + 1, "m月d日")
Sheets(4).Name = Format(Sheets(3).Range("C4") + 1, "m月d日")
Sheets(5).Name = Format(Sheets(4).Range("C4") + 1, "m月d日")

ActiveWorkbook.SaveAs Filename:= _

"\\ドキュメント\日報_" & TextBox1 & ".xlsm"

ActiveWorkbook.Save

Unload Me

End Sub

閲覧数:
68
回答数:
2
お礼:
250枚

違反報告

ベストアンサーに選ばれた回答

ina********さん

2018/7/2614:11:10

Workbook_Open の中でフォームを表示すると
そのような不具合が出ることがある、と聞いた
ことがあるような気がします。

確かではありませんが、症状的にはそんな
感じですよね。

そこで、一旦Workbook_Openプロシージャから
抜けてから、フォームを表示するという
テクニックがあります。

これで試してみてください。


'===== TisWorkbookモジュール =====
Private Sub Workbook_Open()
    Application.OnTime Now, "ShowForm"
End Sub


'===== 標準モジュール =====
Sub ShowForm()
    UserForm1.Show
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

ベストアンサー以外の回答

1〜1件/1件中

tad********さん

編集あり2018/7/2614:01:28

コードそのもののミスでは無いので、新しいブックにコードをコピペして作り直した方が早いように思います。
※フォームは、新しく作って下さい。

全体がどんなものか分かってないので、「こんな大変なもの作り直せるか!」と怒られるかもしませんが。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる