アクセス小僧:フォームを開き直す(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で訊きます。
OKをクリックした場合、DoCmd.OpenFormでフォームを開きます。
FindFirstで最後に表示していたレコードをテーブルの主キー(この場合はPW_Mng_ID)で検索して表示します。
確認ダイアログボックスで応答が無い場合、5秒でダイアログボックスを閉じます。
応答無く、タイムアウトした場合、myAnsには-1が代入されるので、応答が無かった旨、表示して終わります。
以上。
変になったときに、フォームを一旦閉じて、再度開くマクロを作りました。
前に紹介した気がしますが、投稿した記事が見当たらないので、投稿します。
以下にマクロを示します。フォーム名は「フォーム○×△」です。適宜書き換えて下さい。
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で訊きます。
OKをクリックした場合、DoCmd.OpenFormでフォームを開きます。
FindFirstで最後に表示していたレコードをテーブルの主キー(この場合はPW_Mng_ID)で検索して表示します。
確認ダイアログボックスで応答が無い場合、5秒でダイアログボックスを閉じます。
応答無く、タイムアウトした場合、myAnsには-1が代入されるので、応答が無かった旨、表示して終わります。
以上。
ヤバイぜ! ありがとうございます[__猫]
by cheese999 (2017-11-19 22:12)