2

アプリケーションを開いたときに Workbook_Open を使用してユーザーフォームを呼び出していますが、これは正常に機能しています。ただし、最初に開いたときにのみ実行したいと思います。これを試してみましたが、エディターからサブを実行すると機能しますが、ファイルを開いたときは機能しません。

Sub Workbook_Open()
If Worksheets("DataSheet").Range("A1").Value = "" Then
     QuickStartForum.Show
End If
End Sub

注: A1 には、ユーザー フォームの実行後に入力される値が含まれています。

問題は、データがワークシートに読み込まれる前にユーザー フォームを開くことにあるようです。

これを回避する方法はありますか、それとも別のアプローチを取る必要がありますか?

4

1 に答える 1

8

このコードが にあるためだと思いますModule。' ' 内にコードを入れる必要がありますThisWorkBook

この次のコードを試してみましたが、' ' 内で実行に失敗したときに問題はありませんでしThisWorkBookModule1

Private Sub Workbook_Open()
    If Worksheets("DataSheet").Range("A1").Value = "" Then
         QuickStartForum.Show
         Worksheets("DataSheet").Range("A1").Value = "filled" ' <-- this fills the cell with data for testing, so that when you reopen the file it should not re-open the userform
    Else
        MsgBox ("not shown because the A1 cell has data")
    End If
End Sub
于 2012-12-19T10:18:46.187 に答える