• ベストアンサー

エクセルVBAでUserFormを起動した時

エクセルVBAでUserFormを起動した時に自動的に実行される動作を記述したいのですが、 どうすればよいでしょうか? Private Sub UserForm1_Load() End Sub だとだめでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.4

こんにちは。お邪魔します。 > UserFormを起動した時 というのが、一意の表現ではないので、 多少混乱しているようですが、 UserFormを読み込んだ時、 にあたるイベントが Private Sub UserForm_Initialize() End Sub UserFormを表示(再表示)した時 にあたるイベントが Private Sub UserForm_Activate() End Sub という感じです。 UserFormを読み込みながら表示する場合、 (UserFormが読み込まれていない状態で、UserForm.Show、など) UserForm_Initialize() の次に UserForm_Activate() が発効します。 UserForm(のインスタンス)が読み込まれてている間、 常に有効にしたいプロパティ設定などは UserForm_Initialize() UserFormを表示した時の条件によって処理を換えたい場合などは UserForm_Activate() といった感じの使い分けをします。

その他の回答 (3)

  • MSZ006
  • ベストアンサー率38% (390/1011)
回答No.3

ユーザーフォームがメモリ上にロードされる際に実行されるイベントプロシージャに UserForm_Initialize() というものがあります。 ひとつ気をつけなければいけないのですが、このイベントプロシージャはフォームがメモリ上に「ロードされる時に」実行されるのであって、フォームが表示(可視)になった時に実行されるものではない、という点です。 ですから、Hideで非表示にして再びShowで表示した際には実行されません。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.2

 不注意で、よく読んでいませんでした。 >UserFormを起動した時< ということなので、「起動する」とはどういうことなのか私にはわかりません。 先の回答は何かの参考にしてください。

  • DreamyCat
  • ベストアンサー率56% (295/524)
回答No.1

標準モジュールに Auto_open プロシージャを書いておきます。 Sub Auto_open() UserForm1.Show vbModeless End Sub userform のイベントプロシージャに処理を書いておきます。 Private Sub UserForm_Initialize() 'ここに書いておく End Sub

関連するQ&A

  • エクセル VBA エクセルの表示について

    下記のプロシージャを実行し、Userform1のみ表示したじょうたいで、他のエクセルファイルを開くとエクセルが表示されません。他のエクセルファイルを開いた時に、エクセルが自動で表示されるような対処法を教えてください。どうかよろしくお願いします。 Private Sub Workbook_Open() Application.Visible = False UserForm1.Show End Sub

  • Excel VBAについて

    Excel VBAにおいて、Sheetの選択した行によって値を表示するUserFormを変更したいと思っています。 現在以下のようにしたのですが、実行すると「SubまたはFunctionが定義されていません」というエラーが表示されます。 「Controls("UserForm" & x).Label1.Caption =」のところをどのようにしたらよいのでしょうか。 Private Sub CommandButton1_Click()   If ActiveCell.Row = 5 Then     UserForm1.Show     x = 1   ElseIf ActiveCell.Row = 6 Then     UserForm2.Show     x = 2   End If End Sub Private Sub Worksheet_Selection Change(Byval Target As Range)   Controls("UserForm" & x).Label1.Caption = ・・・

  • UserForm1.Showでエラーになります。

    Thisworkbookのところで Option Explicit Private Sub Workbook_Open() UserForm1.Show End Sub と記述するとUserForm1.Showでエラーになります。 どうすればよいでしょうか。 Excel2013で開発しています。

  • VBA起動時のコンボボックスについて

    度々、お世話になっており、今回もご教授お願いしたいです。 VBAの“Sheet1”に2つのコンボボックスのプログラムを作成しました。 Private Sub ComboBox1_Change() Private Sub ComboBox2_Change() どちらも選択(fmStyleDropDownList)のみです。 しかし、Excel起動時にコンボボックスの内容が登録されないため、 ThisWorkbookの【Private Sub Workbook_Open()】 で Private Sub ComboBox1_Change() Private Sub ComboBox2_Change() ↑この2つを実行したいのですが、、、、 なんと記述したらよいかわからず、行き詰っています。。。 Private Sub Workbook_Open() ComboBox1_Change() = ture End Sub ↑こんな感じであれやこれや試してはいますが・・・ 記述方法をご教授ください。よろしくお願いします。

  • (VB初心者) VB起動時既に起動されているExcelの情報

    VisualBasic 6.0 初心者です。 既に起動しているExcelの後にVisualBasicを立ち上げた場合、 既に起動しているExcelの情報を得ることが出来るのでしょうか? やりたい事は Excel起動⇒VB起動⇒Excelのセルを選択⇒そのセルに入力されている値 を取得。 VB起動⇒Excel起動の場合はActiveCellの値を取得出来たのですが 既に起動しているExcelの場合 エラー になってしまいます。 お手数ですが、ご教授願います。 Private Sub コマンド1_Click() MsgBox ActiveCell End Sub 'Form_Load時にこれを実行しないと開いたExcelのアクティブセル値を得られない?? Private Sub Form_Load() MsgBox ActiveCell End Sub

  • excel VBA 作成したUserFormにoptionButton

    excel VBA 作成したUserFormにoptionButtonを多数配置しています。このUserFormをワークシート上に再表示すとる、チェック項目に入力したチェックが消えてしまいます。消えない方法が解りません。 private sub OptionButton1_Click() Activesheet.Shapes("図形1").Visible=False '図形1表示 End sub private sub OptionButton1_Click() Activesheet.Shapes("図形1").Visible=True  '図形1非表示 End sub  同様な書式で数項目あります。 又、保存したワークシートを読み込んだ場合も同様に出来ないでしょうか。optionButtonのチェック項目が多数あります。チェック項目は図形を表示と非表示です。何方か良い方法がありましたら教えて頂けないでしょうか。宜しくお願いします。

  • エクセルVBA テキストボックス

    いつもお世話になっております。 エクセルでVBAを使いユーザーフォームのテキストボックスで 文章入力をしようと思っているのですが、少しトラブルがありましたのでお教え願います。 エクセルシートの横がa~k、縦を9~34までのシートを結合して その中にテキストボックスで入力した文章を入れるように作っています。 MultiLineとEnterKeyBehaviorをTrueにして Private Sub CommandButton1_Click() Unload Me End Sub Private Sub TextBox1_Change() Sheets("sheet1").Range("a9") = UserForm1.TextBox1 End Sub Private Sub UserForm_Initialize() TextBox1.Value = Range("a9").Value End Sub Private Sub UserForm_Activate() With Me .Left = Application.Left .Top = Application.Top .Left = .Left + 350 .Top = .Top + 80 End With End Sub という状態になっているのですが、文章を入力して16行目で改行するとシートの方で「#VALUE!」と出てきてしまうので一旦ユーザーフォームを閉じてもう一度フォームを立ち上げると 「実行時エラー’-2147352571(80020005) Valueプロパティが設定できません。種類が一致しません。」 と出てきます。 デバッグすると  Private Sub CommandButton1_Click() → UserForm1.Show  End Sub と出てきます。 なにがおかしいのでしょうか? 今回初めてVBAを作っているので初歩的な間違いかもしれませんがよろしくお願いします

  • Excel VBA ブックが閉じれない

    Excel2016を使用してVBAを使用しています。 VBA初心者ですが、よろしくお願いします。 質問内容は以下になります。 EXCEL起動と同時にUserFormを表示させ、UserForm上のコマンドボタンから ダイアログボックスを表示し、他ブックを開く処理なのですが、 他ブックを開くまでは問題ないのですが、他ブックが閉じれない状態になります。 Private Sub Workbook_Open() UserForm1.Show End Sub Private Sub UserForm_Initialize()  各種処理 End Sub Private Sub CommandButton1_Click() Dim OpenFileName As String SetCurrentDirectory (Worksheets(1).Cells(11, 3)) OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Workbooks.Open OpenFileName End Sub UserFormを閉じると開いたブックも閉じることが可能です。 タスクマネージャーから強制的に終了しようとすると、以下メッセージが出ます。 ”開いているダイアログボックスがあるため、Microsoft Excel を終了できません。[OK]をクリックしてから、Microsoft Excelに切り替えてダイアログを閉じて下さい。" UserFormを閉じないで他ブックを閉じるには、どうすれば宜しいでしょうか。 申し訳ございませんがご教授下さい、よろしくお願いいたします。

  • UserForm1.Showでエラーになります。1

    Thisworkbookのところで Option Explicit Private Sub Workbook_Open() UserForm1.Show End Sub とプログラミングすると UserForm1.Showでエラーになります。 どうすればよいでしょうか。 Excel2013でプログラミングしています。 UserForm1.Showもきちんと作成済みです。 エラーメッセージは、 実行時エラー’424’ オブジェクトが必要です。 と出ています。

  • 文法 何がおかしい? VBAです

    エクセルを開いたときに、 ユーザーフォームのモーダルモードにしたくないのですが それをvbaで設定したいのですが Private Sub UserForm_Initialize() Me.Showmodal = False End Sub ではダメなのでしょうか? エラーになってしまいます。

専門家に質問してみよう