シート表示時にメッセージを表示する方法

このQ&Aのポイント
  • win7・Excel2007でマクロ作成中の初心者です。ブックAのユーザーフォームのコマンドボタンクリックでブックBのシートCを表示させ、メッセージボックスを即座に表示させたいです。しかし、現在のコードでは、シートCを表示させると同時にメッセージボックスも表示されてしまいます。シートを開いてからメッセージボックスを表示するにはどうすればよいでしょうか?
  • 質問者はwin7・Excel2007でマクロ作成中の初心者です。現在、コマンドボタンをクリックするとシートCが表示され、同時にメッセージボックスも表示されてしまいます。質問者の希望は、シートCを表示させてからメッセージボックスを表示させることです。質問者はどのようにすればよいか教えてほしいとしています。
  • 初心者の質問者はwin7・Excel2007でマクロ作成中です。ブックAのユーザーフォームのコマンドボタンをクリックすると、ブックBのシートCを表示させ、同時にメッセージボックスを表示させたいと考えています。しかし、現在のコードではシートCを表示させると同時にメッセージボックスも表示されてしまいます。どのようにすれば、シートを開いてからメッセージボックスを表示させることができるでしょうか?
回答を見る
  • ベストアンサー

シートが表示された時にメッセージを表示したい

win7・Excel2007でマクロ作成中の初心者です。 1)今ブック2個があります。 2)ひとつは、ブックAでマクロ書き込み用です。 3)もひとつは、ブックBで、データ作業用です。 4)やりたい事は、ブックAのユーザーフォームのコマンドボタンクリックで  ブックBのシートCを表示させ、メッセージボックスを即座に表示させたいです。 5)そこで、ブックAにコードを書込みました。 Private Sub CommandButton89_Click() Unload Me 表を開く End Sub ----------------------------------------- Sub 表を開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("H25年11月の表.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\綴り\H25年11月の表.xls" Sheets("確定").Select MsgBox "これを更新してください。" End Sub ところが、シートCを表示させてから、メッセージボックスを表示させたいのに Private Sub CommandButton89_Click() Unload Me こんなところで(この段階で)、メッセージボックスが出てきてしまいます。 表を開く ここで出したいです。 End Sub シートを開いてからメッセジボックスを開くにはどうしたらよいでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • nofx35
  • ベストアンサー率82% (14/17)
回答No.1

UnLoadするタイミングが悪くありませんか? ちょっと変えてみました。 ステップ実行で動きを見てみて下さい。 Private Sub CommandButton89_Click() Me.Hide 表を開く UnLoad Me End Sub Sub 表を開く() Dim wb As WorkBook Dim ws As WorkSheet ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo Resume Next Set wb = Workbooks("H25年11月の表.xls") If Err.Number <> 0 Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\綴り\H25年11月の表.xls") Err.Clear End If Set ws = wb.WorkSheets("確定") If Err.Number <> 0 Then MsgBox "シート確定がありません。" Exit Sub End If On Error GoTo 0 wb.Activate ws.Select MsgBox "これを更新してください。" End Sub

aitaine
質問者

補足

すばやいご回答ありがとうございます。 ためしてみましたが、相変わらず、表を開く前の状態で メッセージが表示されてしまいます。 おたすけください。 Private Sub CommandButton89_Click() Me.Hide どうもここでメッセージが・・・ 表を開く UnLoad Me End Sub

その他の回答 (2)

  • nofx35
  • ベストアンサー率82% (14/17)
回答No.3

No1です。 Application.ScreenUpdating = False に設定していませんか? もししているなら、 ws.Selectの前に Application.ScreenUpdating = True を入れて下さい。 後、webで"ステップ実行"を検索して どの様にプログラムが実行されているか、確認して下さい。

aitaine
質問者

お礼

自分で解決できましたありがとうございました

aitaine
質問者

補足

以下のコードで思っていることができました。なぜか理由はわかりませんが・・・ Private Sub CommandButton89_Click() Application.ScreenUpdating = False Me.Hide 表ひらく application.ScreenUpdating = True 'MsgBox "これを更新してください。" End Sub

  • nofx35
  • ベストアンサー率82% (14/17)
回答No.2

No1です。 On Error GoTo Resume Next これ間違いです。 On Error Resume Next に変えて下さい。

関連するQ&A

  • ユーザーフォームがシートの裏に隠れてしまう

    ブックを開いた時に、表示されるユーザーフォームが作業シートの裏に隠れて、作業が思うようにできません。なんとかシートの前面に表示させたいです。EXCEL365solo,WINDOWS10使用の超初心者です。ご指導よろしくお願いします。 Private Sub CommandButton96_Click() Dim OpenFileName As String Unload Me ChDir Application.ThisWorkbook.Path & "\2年集計" OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsm") G給与入力.Show vbModeless If OpenFileName <> "False" Then Workbooks.Open OpenFileName Else MsgBox "キャンセルされました" End If End Sub

  • 隠していたユーザーフォームを再び表示したい

    ExcelVBA をExcel2007で苦戦している初心者です。 マクロ記載のAブックとBブックを使っています。 Aブックのユーザーフォーム「表紙」にあるボタンをクリックして Private Sub CommandButton11_Click() 表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\改善案.xlsm" Sheets(1).Select End Sub Bブック(改善案)に飛び、作業後これを閉じ、Aブックに戻したいです。 Aブックは、まだ閉じてはいません。 同時に、ユーザーフォーム「表紙」を再表示したいです。 Private Sub CommandButton2_Click() Unload UserForm1 Application.DisplayAlerts = False ThisWorkbook.Close Application.DisplayAlerts = True 表紙.show End Sub すると次のエラーが表示され 「コンパイルエラー 変数が定義されていません」 表紙.showの表紙が反転表示されます。 Aブックに戻ったときにユーザーフォーム「表紙」を表示するには どうしたらよろしいでしょうか。よろしくお願いします。

  • EXCEL 別シートのコピー(3)

    こんにちは。 こちらで以前こちらで質問をさせていただき、EXCELの別ブックのシートからコピーをしています。 元のブックのコピーを作り、そこに入力してもらい、元のブックにコピーをしています。(同じフォルダに入れて) Private Sub CommandButton1_Click() Dim myBook As Workbook Set myBook = Workbooks.Open(ThisWorkbook.Path & "\コピー元ブック.xls")  with workbooks("コピー元ブック.xls").worksheets("シート名").usedrange workbooks("貼り付け先ブック.xls").worksheets("シート名").range(.address).value = .value end with end sub ここでブックがない場合、そのブックを飛ばしてあるブックだけコピーしたい場合は、どうしたらいいでしょうか。いろいろやってみましたが、コピーできませんでした。 教えてください。

  • VBA 確認メッセージを非表示で保存

    VBA初心者です。 素人質問ですが、どうぞよろしくお願いいたします。 BOOK1のSheet1にwebクエリが設定されています。 Sheet1にはコマンドボタンが二つあり、 CommandButtun1にはクエリを更新するマクロ。 CommandButtun2にはクエリを更新してブックを閉じるマクロがあります。 コマンドボタン2をクリックすると、Webクエリを更新して、 ブックをメッセージなしで上書き保存したいのですが、 下記のマクロではうまく動作しません。 クエリ更新のあとの、ブック保存、クローズするマクロが動作しない状況です。 CommandButtun1のWSH.Popupが原因のようですが、 何か回避方法がありましたら、ご教授いただけませんか? CommandButtun1には下記のマクロ Private Sub CommandButton1_Click() '独自のエラーメッセージを表示する(On Errorステートメント) On Error GoTo Err_Msg 'webクエリ更新 Range("H6").Select Selection.QueryTable.Refresh BackgroundQuery:=False 中略 Exit Sub 'エラーメッセージの指定 Err_Msg: Dim WSH As Object Set WSH = CreateObject("Wscript.Shell") WSH.Popup "完了しました。", 3, "自動的に閉じます", vbYesNo + vbInformation Set WSH = Nothing End End Sub ------------------------------------------------------------------------- CommandButtun2には下記のマクロ Private Sub CommandButton2_Click() CommandButton1.Value = True If ThisWorkbook.Saved = False Then ThisWorkbook.Save End If ActiveWorkbook.Close End Sub

  • 他ブックのセルの値をリンクさせたい

    Excel2007でマクロ作成中の初心者です。 常に同一フォルダの中のブックA(マクロ記入用)とブックB(データ計算用)を開いて、作業しています。 ちなみにこのフォルダはデスクトップ上にあります。 まず、ブックAを開き、出てきたフォームの中のコマンドボタンを押して、 ブックBを開き、セル("D2")に、ブックAのセル("A1")の値がリンクされているようにしたいです。 どのようにしたらリンクできるでしょうか。 Private Sub CommandButton89_Click() ブックBを開く Sheets("管理").Select  Range("D2").select End Sub ------------------------------------- Sub ブックBを開く() ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error GoTo err: Workbooks("25年計算.xlsm").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\25年\25年計算.xlsm" End Sub

  • ExcelVBA ファイルクローズ時にエラーとなる

    次の記述で、コマンドボタン2クリックで、ブックが1つならExcelを、複数なら現在のブックを 閉じる動作をします。 Excelのバージョンが2010なら問題ありませんが、2003や2007だと、複数ブックがある時に 「問題が発生したため・・・Excelを終了します」のメッセージがでます。 Private Sub CommandButton2_Click() If Workbooks.Count > 1 Then ThisWorkbook.Close SaveChanges:=True Else ThisWorkbook.Save Application.Quit End If End Sub これの対処方法を教えてください。

  • 窓からファイルを開くときフォームも表示したい

    Excel365solo,windows10を使っています。VBA超初心者です。 現在以下のコードで作業しています。 マクロ記述ブックAに、ユーザーフォームBをつくりコマンドボタンCを設置しました。 Private Sub 基礎データCボタン_Click() Unload Me Workbooks.Open Filename:=ThisWorkbook.Path & "\2年度\計算5月.xlsm"  ’このブックが開いた時に、自動で開いた複数のコマンドボタンDで処理 End Sub これを窓から選んでブックを選ぶ方式にしたいです。 Private Sub testボタン_Click() Dim OpenFileName As String ChDir Application.ThisWorkbook.Path & "\2年度" OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xlsm") If OpenFileName <> "False" Then Workbooks.Open OpenFileName Else MsgBox "キャンセルされました" End If End Sub でも、ブック\2年度\計算5月.xlsmは開きますが、ブックが開いた時「複数のコマンドボタンD」が表示されず困っています。これを表示させるようにしたいです。ご教示よろしくお願いします

  • 他のブックが開くと同時にユーザーフォームを表したい

    Aブックから他のブックが開いた時、ユーザーフォームを表示したいので 次のコードでやってみたが、なぜか表示されません。ご教示お願いします。 AブックのThisworkbookに入力しました。 (1)Private Sub Workbook_Open() A表紙.Show End Sub A表紙にコマンドボタンをつけました。 (2)Private Sub CommandButton96_Click() A表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\2年施設\計算プログラム.xlsm" Sheets(1).Select End Sub 開いた”改善プログラム”のThisworkbookに入力しました。 Private Sub Workbook_Open() UserForm1.Show End Sub

  • シート名を変更すると、そのシートのデータがリストボックスに表示されない

    Vista SP1 ExcelXPでマクロ作成中の超初心者です。 シートA会社のセルを、右クリックすると、ユーザーフォームが現れ、その中のリストボックスにsheet1の データが表示されます。sheet2 sheet3 も同様に、正常にリストボックスが表示できています。 ところが、シートの名前 「sheet1」を、「関係データ1」に変更すると フォームにリストボックスが表示されますが、中身は表示されません。 シート名を変更しても、右クリックでリストが正常に表示できるようにするにはどうすればよろしいでしょうか。             1)ブックには,13枚のシートがあります。  1)シート名が  A会社からJ会社           sheet1 sheet2 sheet3 2)会社シートにはそれぞれ以下のコードを記入してあります。  Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) Cancel = True 'プロシージャ終了後に表示されるショートカットメニューの非表示 If Target.Row > 14 And Target.Row < 45 And Target.Column > 13 And Target.Column < 15 Then UserForm1.Show End If If Target.Row > 14 And Target.Row < 45 And Target.Column > 19 And Target.Column < 21 Then UserForm2.Show End If ユーザーフォームには、次のコードがあります。 Option Explicit Private Sub CommandButton1_Click() 'With ListBox1 'If .ListIndex = -1 Then 'MsgBox "項目を選択してくだい" 'Else ActiveCell.Value = ListBox1.list(ListBox1.ListIndex) End If End With Unload UserForm1 End Sub ------------------------------------------ Private Sub CommandButton2_Click() Unload UserForm1 End Sub 'Private Sub UserForm_Initialize() 'Me.StartUpPosition = 0 ' Me.Left = 200 ' Me.Top = 100 ' Me.Height = 400 ' Me.Width = 230 'End Sub Private Sub 閉じる_Click() Unload UserForm1 End Sub Private Sub ListBox1_Click() With ListBox1 If .ListIndex = -1 Then MsgBox "項目を選択してくだい" Else ActiveCell.Value = ListBox1.list(ListBox1.ListIndex) ActiveCell.Offset(0, 7).Value = ListBox1.list(ListBox1.ListIndex, 1) Selection.Offset(0, 7).Select End If End With Unload UserForm1 End Sub -------------------------------------------

  • ブックの終了がうまくいきません

    Excel2003 でマクロ作成中の超初心者です。マクロ完成まであと一歩になりました。次から進みません。お願いします。 ブックA ブックB ブックCの3個のブックがあります。 ブックAのコマンドボタン→ ブックBに飛びます。 ブックBには、フォームコントロール(終了するコマンドボタン)と、特定セルにコントロールが張り付けてあります。 ブックA→ブックBの終了ボタン →正常に終了します。 ところが、ブックBのコントロールから、ブックCに移り、 ここからも一度ブックBに戻って終了ボタンを押すとBブックは終了するものの、Cブックが閉じられません。なぜでしょうか? -----Bブックのセルに貼り付けたコントロールのマクロ----- Sub ブックCへ() Application.ScreenUpdating = False Dim wb As Workbook On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("21年計算01.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\21年計算01.xls") End If '開いて作業中の場合。 Workbooks("21年計算01.xls").Activate ActiveWindow.WindowState = xlMaximized - ---最大化 Worksheets(12).Select End Sub -----Bブックのフォームコントロールのマクロ----- Private Sub CommandButton5_Click() Unload Me ActiveWorkbook.Close SaveChanges:=True End Sub -----Cブックのフォームコントロールのマクロ----- Private Sub データ入力_Click() Unload Me Application.ScreenUpdating = False On Error GoTo err: Workbooks("21年計算02.xls").Activate Exit Sub err: Workbooks.Open Filename:=ThisWorkbook.Path & "\21年計算02.xls" '''データ処理.Show Application.ScreenUpdating = True End Sub