SSブログ

アクセス小僧:フォームを開き直す(WSH PopUp) [コンピューター]

フォームの動作が

変になったときに、フォームを一旦閉じて、再度開くマクロを作りました。
前に紹介した気がしますが、投稿した記事が見当たらないので、投稿します。

以下にマクロを示します。フォーム名は「フォーム○×△」です。適宜書き換えて下さい。

Private Sub 開き直し_Click()
  '【機能】フォームを閉じて、再度開く
  On Error GoTo ERR1
  '【変数】
  Dim myPWMngID As Long ' PW_Mng_ID
  Dim MyStr1 As String ' 文字列
  Dim myAns As Integer ' 答え
  Dim objWshShell ' WSHオブジェクト
  '【実行コード】
  Set objWshShell = CreateObject("WScript.Shell")
  myPWMngID = [PW_Mng_ID] ' IDを退避
  MyStr1 = "PW_Mng_ID = " & myPWMngID
  DoCmd.Close acForm, "フォーム○×△", acSavePrompt ' フォームを閉じる
  myAns = objWshShell.PopUp("フォームを再度開きますか?" & vbCrLf _
  & "(5秒待ちます)", 5, "確認", vbOKCancel + vbDefaultButton2 + vbQuestion)
  Select Case myAns
  Case -1
    myAns = objWshShell.PopUp("応答がありませんでした" _
    & vbCrLf & "(2秒で消えます)", 2, "応答なし", vbExclamation)
  Case vbOK
    DoCmd.OpenForm "フォーム○×△", acNormal, , , acFormPropertySettings, acWindowNormal ' フォームを開く
    With Forms![フォーム○×△].Recordset
      .FindFirst MyStr1
    End With
  End Select
  Set objWshShell = Nothing
  Exit Sub
ERR1:
  MsgBox ("エラー(開き直し_Click)" & vbCrLf & Err.Description)
  Set objWshShell = Nothing
End Sub

DoCmd.Close acFormでフォームを閉じます。
開き直すか、どうか、WSHのPopUpで訊きます。

WSH_kakunin.jpg

OKをクリックした場合、DoCmd.OpenFormでフォームを開きます。

FindFirstで最後に表示していたレコードをテーブルの主キー(この場合はPW_Mng_ID)で検索して表示します。

確認ダイアログボックスで応答が無い場合、5秒でダイアログボックスを閉じます。
応答無く、タイムアウトした場合、myAnsには-1が代入されるので、応答が無かった旨、表示して終わります。

WSH_OhtoNashi.jpg

以上。
ヤバイぜ!(10)  コメント(1) 
共通テーマ:パソコン・インターネット

ヤバイぜ! 10

コメント 1

cheese999

ヤバイぜ! ありがとうございます[__猫]
by cheese999 (2017-11-19 22:12) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字(英大文字の「オー」、英小文字の「ユー」、アラビア数字の「ハチ」、アラビア数字の「イチ」、アラビア数字の「ニ」)を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。