QA@IT
«回答へ戻る

回答を投稿

「Excelを開いて、最初にフォームを表示した時だけ」

この際 Formはどういう操作/処理でどのようにして表示していますか?
セキュリティ設定(マクロ有効化の問い合わせをどうしているか)も含めて教えてください。

あとは既定のインスタンスを使っている(UserForm1.Showの様にやっている)のなら、new してみてください。

Private Sub CommandButton1_Click()

    Dim f As UserForm1

    Set f = New UserForm1
    f.Show
    Set f = Nothing

End Sub

ちなみに以下の様なAs New ~はVBA,VB6ではお勧めしません(理解して使ってるなら構いませんが)

Private Sub CommandButton2_Click()
    Dim f As New UserForm1
    Call f.Show(vbModeless)   ' ここで止めないためだけにモードレスダイアログで表示
    Set f = Nothing
    Call f.Show(vbModeless)   ' 参照が無いと変数アクセスのタイミングで再度 New される。
                              ' 多分VB6/VBAの As New ~ はそういう仕様。
    Set f = Nothing
End Sub
> 「Excelを開いて、最初にフォームを表示した時だけ」

この際 Formはどういう操作/処理でどのようにして表示していますか?
セキュリティ設定(マクロ有効化の問い合わせをどうしているか)も含めて教えてください。

あとは既定のインスタンスを使っている(`UserForm1.Show`の様にやっている)のなら、new してみてください。

```vb
Private Sub CommandButton1_Click()

    Dim f As UserForm1

    Set f = New UserForm1
    f.Show
    Set f = Nothing

End Sub
```

ちなみに以下の様なAs New ~はVBA,VB6ではお勧めしません(理解して使ってるなら構いませんが)

```vb
Private Sub CommandButton2_Click()
    Dim f As New UserForm1
    Call f.Show(vbModeless)   ' ここで止めないためだけにモードレスダイアログで表示
    Set f = Nothing
    Call f.Show(vbModeless)   ' 参照が無いと変数アクセスのタイミングで再度 New される。
                              ' 多分VB6/VBAの As New ~ はそういう仕様。
    Set f = Nothing
End Sub
```