プログラムについて

このQ&Aのポイント
  • プログラムについての質問
  • 削除ボタンを押したら削除処理が実行されるイベントプロシージャーについて
  • 削除処理の意味とメッセージBOXの表示について
回答を見る
  • ベストアンサー

プログラムについて。

Private Sub btn_削除_Click() Flg_修正削除 = 2 If 整合性チェック処理 = 1 Then Exit Sub If MsgBox(\"削除してもいいですか?\" & vbNewLine & vbNewLine & \"削除したデータは復旧できません\", vbOKCancel) = vbCancel Then Exit Sub DoCmd.OpenQuery \"sp_MST_AAA情報_削除\" Call 更新後処理 Call 画面項目削除 MsgBox \"削除されました\", vbInformation End Sub これは削除ボタンを押したら削除処理がなされるイベントプロシージャーなのですが、見ていて意味が分かるのがメッセージBOXに表示される言葉だけです。他はどのような意味を持っているのでしょうか??

noname#30351
noname#30351

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

  • ベストアンサー
回答No.1

こんにちわ^^ まず Flg_修正削除という(おそらくフラグ)を2にしてます。 その後、 整合性チェック処理 が1であったらここで処理を抜けてお終い。 それ以外だったら OK,Cancelのメッセージボックスを表示 Cancelを選ばれたら処理を抜けてお終い。 OKであったら、sp_MST_AAA情報_削除をいくクエリを開いてます。 その後 更新後処理を呼んでます(おそらく更新後処理を別のところで実行) 画面項目削除を呼んでます(おそらく削除処理を別のところで実行) Information型のメッセージボックスで削除されましたと表示させてお終いです。

その他の回答 (1)

回答No.2

すみません書きそびれが1点 削除というボタンをクリックされたら先ほど記述したとおりに処理が流れるのです。

関連するQ&A

  • セルの入力後の常時自動処理

    どちらかのA1の値を入力しEnterキーを押したあとに下記の処理を自動実行するには どうしたら良いでしょうか? お教え願えませんでしょうか。 Windows7・SP1 Office2010 Option Explicit(標準モジュールに書いてあります。) Private Flg As Boolean Sub 処理() If Flg Then Exit Sub Application.OnTime Now + TimeValue("00:00:05"), "処理" If Flg Then Exit Sub If Worksheets("メイン・1").Range("A1") <> Worksheets("祝祭日").Range("A1") Then MsgBox ("祝祭日の日付を反映させるために年度を同じにしてください。") Else: Exit Sub End If(中断モードで実行することはできません。)ここで止まります。 End Sub Sub ストップ() Flg = True End Sub

  • 効率の良いテキストボックスの検知について

    VB6の初心者です。質問させていただきます。 画面上に5つのテキストボックス(TEXT1、TEXT2、TEXT3、TEXT4、TEXT5)と 1つのコマンドボタン(Cmd_SAVE)があり、 画面上の5つのテキストボックスをすべて記入し、 コマンドボタンを押すと、登録確認のメッセージボックスが表示され、 OKボタンを押すと、サーバへ転送され、 画面上のテキストボックスにひとつでも空欄があると、どのテキストボックスが 空欄であるかを示すメッセージが表示される処理をさせています。 そこで質問なのですが、今、メッセージボックス、登録処理は出来るようになったのですが、 とても処理の効率が悪い、もっと空欄を確認するのにすっきりとしたコードはある、と知り合いに言われました。 おそらく、繰り返し等を用いると思うのですが、メッセージにそれぞれのオブジェクト名を代入するやり方がわかりません。 下記が今のコーディングです。 Private Sub Cmd_SAVE_Click()   If TEXT1.Text = "" Then      MsgBox "TEXT1が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT2.Text = "" Then      MsgBox "TEXT2が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT3.Text = "" Then      MsgBox "TEXT3が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT4.Text = "" Then      MsgBox "TEXT4が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If TEXT5.Text = "" Then       MsgBox "TEXT5が登録されていません", vbOKOnly, "警告"     Exit Sub   End If   If MsgBox("入力データを登録しますか?", vbOKCancel, "登録確認") = vbCancel Then     Exit Sub   End If   End If ~登録処理~ End Sub どのような書き方がきれいで、効率的なコーディングなのでしょうか? ご教示お願いします!

  • [Excel2000]auto_closeを止めさせるには

    Excel2000で、 特定のボタンを押した場合以外の閉じる処理を キャンセルさせたいのですがうまくいきません sub ボタン押() flg = true end sub sub auto_close() if flg <> true then msgbox "AAA" exit sub end if end sub これでは、どーやってもそのまま終了してしまいます。 なにか良い方法はないでしょうか・・・ よろしくおねがいします。

  • エクセルのマクロについて

    行を選択し、関数を数値に変換するために下記のようなマクロを作成しました。 選択する行数が少ないと実行でるのですが、一度にたくさんの行を選択すると下のようなエラーが返されます。 「実行時エラー"424"」オブジェクトが必要です。 どこが間違いなのか教えて頂ければ助かります。 Sub TextValue() '選択された行範囲をデータに変換します。 Dim rc As Integer Dim rngCell As Range Dim sMsg As String rc = MsgBox("データに変換しますか?", vbOKCancel) If rc = vbCancel Then Exit Sub sMsg = "変換する範囲を選択して下さい。" Set rngCell = Application.InputBox(Prompt:=sMsg, Type:=8) rc = MsgBox("選択されている範囲の関数を" & vbCrLf & "データに変換します。" & vbCrLf & _ "選択された行範囲は " & rngCell.Address(0, 0) & vbCrLf, _ vbOKCancel, "処理を確認してください。") If rc = vbCancel Then Exit Sub rngCell.Select Selection.Value = Selection.Value End Sub Excel2002  OSはXPです。 宜しくお願い致します。

  • VBAのDoEventsが上手く動きません

    お世話になります。 ExcelのVBAで印刷処理をしているのですが、印刷枚数が多いのでDoEventsイベントを入れ、印刷中断処理を行いたいのですが、上手くできません。 印刷中ダイアログが表示されるのが原因なのでしょうか?それともコードの書き方が悪いのでしょうか?よろしくお願いします。 コードは以下のとおりです。 ************************************************ Public Can_flg As Boolean ************************************************ Private Sub CommandButton1_Click()   Can_flg = True End Sub ************************************************ Private Sub UserForm_Activate()   Dim ms As String   Dim j As integer   Can_flg = False   For j = 1 To 31    DoEvents    If Can_flg = True Then      ms = MsgBox("印刷を中止します。", vbOKCancel)        If ms = vbOK Then         Exit For        Else         Can_flg = False        End If    End If    Me.Label1.Caption = "印刷中です… (" & j & "/" & i & "ページ)"    Sheets("テスト").PrintOut   Next j   Unload Me End Sub

  • ExcelVBAで、広範囲セルの空白チェックをしたいと思います。

    ExcelVBAで、広範囲セルの空白チェックをしたいと思います。 以下のようなExcelシートがあります。 ・10行目まではタイトル行 ・データ入力可能セル範囲はA11~AF65536 全てのデータ範囲を削除するために、以下のコードを作成しました。 動きとしては問題ないのですが、データが存在しない場合の 処理時間が長くなってしまいます。 Sub 全データ削除() Dim endrow As Long Dim mydelete As Integer Dim myrange As Range endrow = Range("A11").End(xlDown).Row For Each myrange In Range("A11:AF" & endrow) If myrange.Value <> "" Then GoTo 削除処理 End If Next myrange MsgBox "データがありません。" Exit Sub 削除処理: mydelete = MsgBox("全てのデータを削除しますか?", vbOKCancel) Select Case mydelete Case vbOK Rows("11:65536").Delete Range("D4").Formula = "=COUNTA(A11:A65536)" MsgBox "データを削除しました。" Exit Sub Case vbCancel MsgBox "キャンセルされました。" Exit Sub End Select End Sub データ範囲が65536行までになってしまうため時間がかかっているのだと思いますが、 回避方法がわかりません。 ご教授お願いいたします。

  • vbモーダルについて

    VB6.0について質問です。 FormAからFormBをモーダルで開き、さらにFormBからFormDをモーダルで開く という一連の操作を行いたいのですがうまくいきません>< エラー内容は、FromDを開く際にFormB内のデータが存在しなかったら FormDを表示せずにアンロードしたいのに表示されたままになってしまいます。 以下のコードで処理を行ってるのですがエラーのフラグを立ててアンロード処理を 行おうとしてもExitに移った瞬間にプログラムが終了してしまいます。 FormDをモーダレスで開くとアンロード処理まで普通に処理されます。 モーダルでアンロード処理までいくにはどのような処理を加えたらよいでしょうか? If i = 0 Then MsgBox "データありません。" Err_Flg = 1 Exit Sub End If ---------------------------- If Err_Flg = 1 Then Err_Flg = 0 Unload FormD End If

  • vb コンボボックスのイベントについて

    こんばんわ。 コンボボックスで、 指定の値をマウス操作でクリックしたときと、 キーボードの上下で、移動後returnを押したときだけ、 MsgBox "処理実行" を実行したいです。 keystateを使ってみたのですが、前の情報が残っているのかうまくいきません。keystateの情報をクリアさせるか、シンプルに上記を動作させる何かよい方法はありますでしょうか。 Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer Dim flg1 As Boolean Private Sub form_load() Combo1.AddItem (11) Combo1.AddItem (22) Combo1.AddItem (33) Combo1.AddItem (44) End Sub Private Sub Combo1_Keyup(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then 'return flg1 = True Call Combo1_click End If End Sub Private Sub Combo1_click() If (GetKeyState(&H26) <> 0) Or (GetKeyState(&H28) <> 0) Then ' ↑↓ If flg1 = False Then Exit Sub End If End If MsgBox "処理実行" flg1 = False End Sub

  • End If に対応する If ブロックがありませ

    i = MsgBox("終了しますか?", vbOKCancel) If i = vbCancel Then End End If が、 コンパイルエラー End If に対応する If ブロックがありません。 になるのですが、なぜでしょうか? If もEnd If もあるのに・・・

  • エクセルVBA Inputboxについて教えてください。

    InputBoxの使い方について教えてください。 テストで下記のように書いてみました。 Sub input_test2() ans = InputBox("質問!適当に数字を入れてね") MsgBox Application.WorksheetFunction.IsNumber(ans), vbInformation, "入力判定" If Application.WorksheetFunction.IsNumber(ans) Then If ans = 0 Then MsgBox "入力されたのは、 0", vbInformation, "回答" If ans = 1 Then MsgBox "入力されたのは、 1", vbInformation, "回答" If ans = 2 Then MsgBox "入力されたのは、 2", vbInformation, "回答" If ans = 3 Then MsgBox "入力されたのは、 3", vbInformation, "回答" If ans >= 4 Then MsgBox "入力されたのは、 4以上", vbInformation, "回答" Else MsgBox "入力は数字でしてください!", vbExclamation, "お願い" End If End Sub 1.入力が数値ならTRUEがかえると思ったのですが、何を入れてもFALSEしかかえりません。どこがまずいのでしょうか? 2.表示されるInputBoxのサイズが随分横に長いのですが、サイズを変える方法はあるのでしょうか? 3.MsgBoxの"入力判定"や”回答”ようにInputBoxにも最上行に日本語を表示させる方法はないでしょうか? 以上、よろしくお願いいたします。

専門家に質問してみよう