Excel2000 VBAにて、シート削除後のユーザー応答待ちの
OKボタンメッセージを消したいのですが、どうしたら
いいのでしょう?
消したあと、OKを求められずに、シートを削除したいのです。
どなたか 教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

削除する前に


  Application.DisplayAlerts = False
とします。

削除を終えたら、
  Application.DisplayAlerts = True
とします。
    • good
    • 0

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qシートのボタンからフォーム出した場合、チェックボタンの動作がうまくいきません

フォーム上の2つのチェックボタンをトグルさせたいのですが、シート上に設定したコマンドボタンからフォームを表示させると、トグルがうまくいきません。
尚、メニューからフォームを表示させた場合、正しく動作します。
回避させる手段はあるでしょうか?
これはエクセルの仕様なのでしょうか?
Excel2003です(英語版)。英語版Windows7Proです。

フォームのVBA
Private Sub UserForm_Initialize()
  CheckBox1.Value = True
  CheckBox2.Value = False
End Sub
Private Sub CheckBox1_Click()
  CheckBox1.Value = True
  CheckBox2.Value = False
End Sub
Private Sub CheckBox2_Click()
  CheckBox2.Value = True
  CheckBox1.Value = False
End Sub

シートのVBA
Private Sub CommandButton4_Click()
  sb_UserForm1Show
End Sub

標準モジュール
Sub sb_MenuCreate()
  sb_MenuDelete
  Dim myMnu As Object
  Dim Cap_P As String
  Cap_P = "Prototype"
  Set myMnu = CommandBars("Worksheet menu bar").Controls.Add(Type:=msoControlPopup, Before:=3)
  With myMnu
    .Caption = Cap_P
  End With
  sb_Menu01 Cap_P, "Delete This Menu", "sb_MenuDelete"
  sb_Menu01 Cap_P, "RecoverTest", "RecoverTest"
  sb_Menu01 Cap_P, "Clear DataBase", "sb_ClearDatabaseConf"
  sb_Menu01 Cap_P, "Show All Data", "sb_ShowAllData"
  sb_Menu01 Cap_P, "Remove Autofilter", "sb_RemoveAutofilter"
  sb_Menu01 Cap_P, "Add Autofilter", "sb_AddAutofilter"
  sb_Menu01 Cap_P, "Remove Sub Total", "sb_RemoveSubtotal"
  sb_Menu01 Cap_P, "Add Sub Total", "sb_AddSubtotal"
  sb_Menu01 Cap_P, "Load Form", "sb_UserForm1Show"
  sb_Menu01 Cap_P, "Import to FishDataBase", "sb_Main01"
End Sub

Sub sb_Menu01(Cont_P As String, Cap_P As String, On_Act As String)
'Menu Create submodule
  With CommandBars("Worksheet menu bar").Controls(Cont_P)
    .Controls.Add(Type:=msoControlButton, Before:=1).Caption = Cap_P
    .Controls(Cap_P).OnAction = On_Act
  End With
End Sub

Sub sb_UserForm1Show()
  UserForm1.Show
End Sub

フォーム上の2つのチェックボタンをトグルさせたいのですが、シート上に設定したコマンドボタンからフォームを表示させると、トグルがうまくいきません。
尚、メニューからフォームを表示させた場合、正しく動作します。
回避させる手段はあるでしょうか?
これはエクセルの仕様なのでしょうか?
Excel2003です(英語版)。英語版Windows7Proです。

フォームのVBA
Private Sub UserForm_Initialize()
  CheckBox1.Value = True
  CheckBox2.Value = False
End Sub
Private Sub CheckBox1_Click()...続きを読む

Aベストアンサー

そのような処理に適したオプションボタンがあるにも拘らず
なぜ、チェックボックスを使うのか、ん? という感じではありますが、、、

ま、それは置いといて。。。。

提示のコードではCheckBoxのClickイベントが発生し続けるので
質問の動作は当たり前の動作になります。


 Private Sub UserForm_Initialize()
   CheckBox1.Value = True  ●CheckBox1のClickイベント発生

 Private Sub CheckBox1_Click()
   CheckBox1.Value = True  ●CheckBox1のClickイベント発生


▼~▲のClickイベントが発生し続けるのでストップしているように見えるわけです。

これは、CheckBox1,2のClickイベントの最初に、
MsgBox "box1"など入れてみれば確認できますね。

で、CheckBoxのClickイベントを止めてやればいいわけですが、
UserFormには、Application.EnableEventsなどのメソッドがないので
普通はフラグを使ったりしますが、
今回の場合は、Changeイベントの性質を利用してもできます。

●Changeイベントを使う方法
'--------------------------------------------
Private Sub UserForm_Initialize()
   CheckBox1.Value = True
End Sub
'-------------------------------
Private Sub CheckBox1_Change()
   CheckBox2.Value = Not CheckBox1.Value
End Sub
'-------------------------------
Private Sub CheckBox2_Change()
   CheckBox1.Value = Not CheckBox2.Value
End Sub
'---------------------------------------------

UserForm_Initializeでチェックするのは、CheckBox1だけで十分だと思います。

 
●また、フラグを使う方法は、Clickイベントの部分で
  If Flag = True Then Exit Sub
などとしてClickイベントの処理をジャンプする方法です。
これはご自分で考えてみてください。


最初でも言いましたが、
今回のような処理は、オプションボタンを使うべきかと。
ま、いろいろ理由はあるのでしょうが。。。
以上です。

そのような処理に適したオプションボタンがあるにも拘らず
なぜ、チェックボックスを使うのか、ん? という感じではありますが、、、

ま、それは置いといて。。。。

提示のコードではCheckBoxのClickイベントが発生し続けるので
質問の動作は当たり前の動作になります。


 Private Sub UserForm_Initialize()
   CheckBox1.Value = True  ●CheckBox1のClickイベント発生

 Private Sub CheckBox1_Click()
   CheckBox1.Value = True  ●CheckBox1のClickイベント発生


▼~▲のClickイベントが発...続きを読む

QVBAでユーザーフォームのテキスト等に空白欄があった場合に、メッセージボックスが出るようにしたい

今VBAでシミュレーションソフトを作っていますが、
ユーザーフォームのテキスト、リストボックスで入力されたものが、処理されて結果が出るようにしています。

そのなかで、空白のテキスト等があった場合、間違った結果が出力されるので、空白テキストが出ないようにメッセージボックスが出るようにしたいのです。

テキストはTB1~TB6
リストボックスはLB1~LB6

あります。
入力ボタンを押すと
どれかひとつでも空白があればメッセージボックスが出力され、
ユーザーフォームに戻るようにしたいです。

ご回答よろしくお願いします

Aベストアンサー

TextBoxはValue、ListBoxはValueあるいはListIndexで判断してはいかがでしょう?

Dim i As Integer
Dim cnt As Integer
cnt = 0
For i = 1 To 6
UserForm1.Controls("TextBox" & i).Value <> "" Then
cnt = cnt + 1
Next i

などとして、cntの値で判断するとか。
ListBoxの場合もループの仕方は同じです。

Q「メッセージボックスを開いて5秒間「OK」が押されなかったら 次のコードに進む」ことは可能ですか?

Sub test3()
MsgBox "5秒反応がなかったら次へ進みます"
次のコード・・・
End Sub
と言うことは可能でしょうか?

Application.Wait (Now + TimeValue("00:00:05"))
は関係ないですよね。

よろしくお願いします。

Aベストアンサー

Sub Sample()
Dim WSH As Object
Set WSH = CreateObject("WScript.Shell")
WSH.Popup "5秒反応がなかったら次へ進みます", 5, "Title", vbInformation
Set WSH = Nothing
' 次のコード・・・
End Sub

って感じですかね。

Q【VBA】ユーザーフォームから、シート上のテキストボックスを操作

ユーザーフォームで入力した値を、シート上にあるテキストボックスに入力させたいのですが、
どのように記述すればいいのでしょうか?(ボタンで操作)
またおなじくテキストボックスの大きさ、フォントの大きさ、などを操作するにはどのようにしたらいいですか?

Aベストアンサー

えーっとそうですねぇ・・・デバック画面でステップインさせながらだとどの行でひっかかったのか分かるのですが。
まぁとりあえずシート名「印刷」の上にあるテキストボックスの名前が本当に「名前Box3」 なのか確認して下さい。
テキストボックスのプロパティで確認できますし。下のコードを走らせて確認しても良いかなと。
For Each hogehoge In Worksheets("印刷").Shapes
 MsgBox (hogehoge.Name)
Next hogehoge


で訂正です。
フォントの種類ではなく、フォントのサイズでしたね。
こっちに修正
 .Font.Name = "MS P明朝" 'フォント名

 .Font.Size = 15 ' フォントサイズ

QAccess テーブルをデータシートビューで開くことが出来ませんというメッセージが出ます

Accessで単純な入力をさせていたところ、「急に『レコードが削除されました』というメッセージが出たんですけど・・」と担当者が言ってきました。確認したところ、マスターのテーブルも『レコードが削除されました』『テーブルをデータシートビューで開くことが出来ません』とメッセージがでて、関連するクエリなどすべて『レコードが削除されました』とエラーが出ます。入力していた担当者は「変なことはしてません」と言っていますが。入力していた作業内容はもともとあるデータから該当のデータを検索して追記するだけの単純な作業です。Access2000でWinXPを使っています。本当にデータは削除されているのでしょうか?また削除された場合、なんとかデータを復活させる方法はあるのでしょうか?私が操作していないので、どういう経過でこうなったかわからず、ほとほと困っています。考えられる方法があれば教えて下さいませ。よろしくお願いいたします。

Aベストアンサー

先に、あわてず破損したMDBのバックアップを取ってください

ツール-修復を、かけてみてください
(と、言う私は、それで直ったためしがありませんが・・・
 修復で、読み取れないテーブルなどを、すべて削除する事があるの
 で、駄目な場合は、バックアップで戻してください)

で、どうするの?となると

新規MDBファイルを作成し、テーブル等のインポートをかけて見てください
インポートをかけて、インポートできないテーブル等が破損して、他のテーブル、クエリー、フォーム、レポート等が、一切開けなくなったことがあります

これで、直ればいいのですけどね


人気Q&Aランキング

おすすめ情報