アプリ版:「スタンプのみでお礼する」機能のリリースについて

ユーザーフォームを挿入し、

Private Sub CommandButton1_Click()
ActiveSheet.Delete
Sheets.Add
End Sub

というコードを書き、
図のように配置しています。

やりたいことは、シート上にもコントロールがある状態で、
フォームを実行し、コードを終了させても、フォームは表示させたままにしたいのです。

しかし、図の状態で上記のコードを実行すると、フォームも閉じてしまいます。

コマンドボタンがシート上になければ
コードが終わってもフォームは閉じません。

どうすればコマンドボタンも配置しつつ、シートごと削除させ、
フォームを表示したままにすることが可能なのでしょうか?

よろしくお願いします。

「【エクセル2003】マクロ終了後、フォー」の質問画像

A 回答 (2件)

こんばんは。



#1さんの質問に対して、答えているようには私には思えないのです。単語自体が曖昧なのです。あえて、そういう現象を求めたりするよりも、回答者側が、作ってあげたほうがよいように思います。


UserForm のCommandButton に以下のようなコードを付けます。

'-------------------------------------------
Private Sub CommandButton1_Click()
  With ActiveWorkbook
    If .Worksheets.Count > 1 Then
      Application.DisplayAlerts = False
      ActiveSheet.Delete
      Application.DisplayAlerts = True
      .Worksheets.Add after:=ActiveSheet
    End If
  End With
End Sub

'-------------------------------------------

>他のサブプロシージャーから呼び出しています。

これ自体は構わないのですがコントロールツールのCommandButton を、削除される当該シートに置くべきではないことは言うまでもありません。もし、そのようなことをすれば、起動した、UserForm は、消えてしまいます。本来は、意図的にコードを消すことをいいますが、自分で自分のコードを削除するようなコードのことを、「自爆マクロ」といいます。

この場合は、シートのタブで、一番、左端、通常は、Sheet1 に起動するCommandButton を置くか、ツールボタンとして、メニュー側に置きます。

また、UserForm1.Show False または、UserForm プロパティのモーダルモード(ShowModal) をOffにしておきます。
    • good
    • 0
この回答へのお礼

お返事遅くなってすいません。
ありがとうございます。

お礼日時:2009/07/26 20:57

せめて画像のCommandButton1 のどちらかのCaptionを変えてくれたら分かりやすいんですが。


あと、コントロールなのか、フォームなのかの区別が付きません。
UserFormの方は、VBAEditorから追加したフォームかなぁ?って気もします。

>Private Sub CommandButton1_Click()
このイベントはどのボタンを指しているんでしょう?
あと、そのUserFormはどこから、どんなタイミングで呼び出しているんでしょうか。

見た感じの流れでは
1.ブックを開く
2.どうにかしてUserForm1を表示
3.UserForm1のボタンを押下し、質問者のコードを実行
4.アクティブシートがコントロールが貼られている・いない関係なく削除され、新規シートが追加される

だと思うんですが、ボタンやらのプロパティ弄っても再現できませんでした。
質問内容が大雑把すぎて私には答えようがないので補足を書けば比較的早く回答が。
気長に待ってれば暇を持て余した人があらゆるパターンを想定した答えを出してくれると思います。
    • good
    • 0
この回答へのお礼

確かにそうですね。
わかりづらくてすいません。
申し訳ないです。

>このイベントはどのボタンを指しているんでしょう?
フォーム上のコマンドボタンのイベントです。

>そのUserFormはどこから、どんなタイミングで呼び出しているんでしょうか。
他のサブプロシージャーから呼び出しています。

>ボタンやらのプロパティ弄っても再現できませんでした。
え!!
私だけ起きる現象なのでしょうか!?
mindatgさんのエクセルでは、シート上にオブジェクトがあっても
シートを削除をするマクロを実行してもフォームは表示されたままなのでしょうか?

お礼日時:2009/07/16 23:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!