パスワードを変更する方法について

このQ&Aのポイント
  • 非連結ファイル「テーブル」からコーティングのパスワード部分だけを変更する方法はあるのか
  • パスワードファイルは「F_パスワード ~ F_パスワード9」の全10ファイルで構成されている
  • ご紹介されたサイト「修正あり」には、パスワード変更についての情報があります
回答を見る
  • ベストアンサー

パスワードを変更する方法について

[関心事と希望] 非連結ファイル「テーブル」からコーティングのパスワード部分だけを変更することは可能でしょうか。可能でしたら是非チャレンジしたいと思っています。不十分な質問内容かと思いますが、ご査収いただければ幸いです。宜しくお願いします。 「コーティング内容」 Private Sub LogIn_Click() If Me.PASSWORD = "○○○○" Then DoCmd.OpenForm "○○○○" DoCmd.Close acForm, "F_パスワード" Else MsgBox "パスワードが違います!", vbCritical, "警告" End If End Sub 「対象ファイル数」 パスワードファイルは「F_パスワード ~ F_パスワード9」の全10ファイルです。 ご紹介頂いたサイト「修正あり」 http://www.access-vba-navi.com/post-548/ 宜しくお願いします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.8

> 下記の様なコーティング変更で可能でしょうか 可能ですがEnd IfがIfの数だけいります。 同じ操作をする場合は以下のようにすると変更も楽です。 P修正は適当に付けましたので適切と思われるものに全て変更してください。そのままでも動きます。 もともと大文字小文字は区別していないようです。ABCDとabcdは同じ。ただし日本語入力オンでのABCとオフのABCも区別されなくて変換がおかしくなりコードが壊れるので日本語オンでの入力は禁止(テキストボックスのプロパティその他でIME入力モードを使用不可)にしておいてください。 Private Sub パスワード修正_Click() On Error GoTo パスワード修正_Err If P修正("F_パスワード", "Form_F_パスワード") = False Then Exit Sub ElseIf P修正("F_パスワード1", "Form_F_パスワード1") = False Then Exit Sub ElseIf P修正("F_パスワード2", "Form_F_パスワード2") = False Then Exit Sub End If DoCmd.Echo True MsgBox "パスワードが変更されました。", vbInformation Exit Sub パスワード修正_Err: DoCmd.Echo True MsgBox Error$ End Sub Function P修正(strFormName As String, strModuleName As String) As Boolean On Error GoTo P修正_Err DoCmd.OpenForm strFormName, acDesign DoCmd.Echo False If FindAndReplace(strModuleName, "Password = """ & Me.OldPass & """", "Password = """ & Me.NewPass & """") = True Then P修正 = True DoCmd.Close acForm, strFormName, acSaveYes DoCmd.Echo True Else P修正 = False DoCmd.Close acForm, strFormName, acSaveNo DoCmd.Echo True MsgBox strFormName & "の旧パスワードが違います。", vbCritical End If Exit Function P修正_Err: P修正 = False DoCmd.Echo True MsgBox "P修正内で: " & Error$ End Function

eokwave
質問者

お礼

ご面倒をおかけして申し訳ございませんでした。以前はVBAを見ると腰が引けてしまいましたが、今回は何とか追従しようとする「気」を持つことができました。結果として小出しの質問に終始してしまい、嫌な思いをされたかと思います。申し訳ございませんでした。尚、丁寧に誘導いただきまして感謝致しております。本当に有難うございました。

その他の回答 (7)

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.7

Private Sub Form_Load() が不要です。

eokwave
質問者

補足

ありがとうございます。問題なく動きました。アドバイスを頂いて更に関心事に目覚めました。申し訳ないですが、以下の2点ほどお尋ねしたく思います。宜しくお願いします。 「パスワードに関する最終的な関心事」 1,パスワードフォームが複数「F_パスワード~F_パスワード10」でパスワードは全て同じ場合、下記の様なコーティング変更で可能でしょうか。※(この機会にコーティングルールのごく一端を学習・・・・) 2,パスワードですが「大文字小文字」を判別しない方法はあるのでしょうか。 [コマンドボタンのコーティング] Private Sub パスワード修正_Click() 'On Error GoTo パスワード修正_Err DoCmd.Echo False DoCmd.OpenForm "F_パスワード", acDesign If FindAndReplace("Form_F_パスワード", "Password = """ & Me.OldPass & """", "Password = """ & Me.NewPass & """") = True Then DoCmd.Close acForm, "F_パスワード", acSaveYes DoCmd.Echo True DoCmd.OpenForm "F_パスワード1", acDesign If FindAndReplace("Form_F_パスワード1", "Password = """ & Me.OldPass & """", "Password = """ & Me.NewPass & """") = True Then DoCmd.Close acForm, "F_パスワード1", acSaveYes DoCmd.Echo True MsgBox "パスワードが変更されました。", vbInformation Else DoCmd.Close acForm, "F_パスワード", acSaveNo DoCmd.Echo True MsgBox "旧パスワードが違います。", vbCritical End If DoCmd.Echo True Exit Sub パスワード修正_Err: DoCmd.Echo True MsgBox Error$ End Sub 以上ですが、宜しくお願いします。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.6

> コーティング内容(読み込み時 なぜ読み込み時に入れたのでしょう。 Private Sub Form_Load() と Private Sub パスワード修正_Click() から End Sub までは不要です。 [コマンドボタンのコーティング] はそのままで。 > コマンドボタン「パスワード修正」を押した時、一瞬光る様な状態「VBAウィンドが開いて閉じるみたいな・・・」になりました。 実際にVBAの画面が開いて即閉じています。そのちらつきをなくす方法は見つかりませんでした。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.5

> ALT+F11でVBAの画面を開いてイミディエイト「表示メニュー(イミディエイトウィンドウ)」を選択して、エディターに「DoCmd.Echo True」を入力しますと、以下のダイアログアラートが表示されました。 イミディエイトウィンドウに入力しただけでエラーでしょうか? その処理は、パスワード修正のコマンドボタンを押してエラーで止まった時にその処理をしないと画面が固まったようになっているから困るので、という話なので、何もないときにする必要はありませんし、No3でエラーになったら画面表示をオンにするようにしたので、イミディエイトの操作は必要はありません。 また DoCmd.Minimize は、不要だと思いますので外しておいてください。テスト用につけたのが残ってました。 パスワード修正のコマンドボタンを押してエラーになるのでしたら On Error GoTo パスワード修正_Err を 'On Error GoTo パスワード修正_Err にして実行し、エラーが出て黄色く反転しているところを確認してください。

eokwave
質問者

お礼

すいません。訂正です。 [コーティング内容(読み込み時)] Private Sub Form_Load() Function FindAndReplace(strModuleName As String, _ strSearchText As String, _ strNewText As String) As Boolean Dim mdl As Module Dim lngSLine As Long, lngSCol As Long Dim lngELine As Long, lngECol As Long Dim strLine As String, strNewLine As String Dim intChr As Integer, intBefore As Integer, _ intAfter As Integer Dim strLeft As String, strRight As String ' Open module. DoCmd.OpenModule strModuleName ' Return reference to Module object. Set mdl = Modules(strModuleName) ' Search for string. If mdl.Find(strSearchText, lngSLine, lngSCol, lngELine, _ lngECol) Then ' Store text of line containing string. strLine = mdl.Lines(lngSLine, Abs(lngELine - lngSLine) + 1) ' Determine length of line. intChr = Len(strLine) ' Determine number of characters preceding search text. intBefore = lngSCol - 1 ' Determine number of characters following search text. intAfter = intChr - CInt(lngECol - 1) ' Store characters to left of search text. strLeft = Left$(strLine, intBefore) ' Store characters to right of search text. strRight = Right$(strLine, intAfter) ' Construct string with replacement text. strNewLine = strLeft & strNewText & strRight ' Replace original line. mdl.ReplaceLine lngSLine, strNewLine FindAndReplace = True Else FindAndReplace = False End If Application.VBE.MainWindow.Visible = False Exit_FindAndReplace: Exit Function Error_FindAndReplace: MsgBox Err & ": " & Err.Description FindAndReplace = False Resume Exit_FindAndReplace End Function すいませんでした。

eokwave
質問者

補足

ありがとうございます。何度も申し訳ございません。結果としてパスワードの変更は可能ですが、下記の気になる点が見つかりましたので、ご報告「正確に・・・」させていただきます。 [気になる点のご報告] パスワード変更用フォーム「パスワード変更用」を開くと「VBA」ウィンドと「エラーアラートダイアログ」も一緒に開いて「Private Sub Form_Load()」が黄色のマスキング状態になります。そこで、「エラーアラートダイアログ」を終了させるとVBAウィンドも終了。残ったフォーム「パスワード変更用」でパスワード変更の作業を実行してみると問題なく変更できました。しかし、コマンドボタン「パスワード修正」を押した時、一瞬光る様な状態「VBAウィンドが開いて閉じるみたいな・・・」になりました。  ・VBAウィンド「コーティング(Private Sub Form_Load())にマスキング」  ・エラーアラート「ダイアログ(コンパイル エラー End sub が必要です。)」 [コーティング内容(読み込み時)] Private Sub Form_Load() Function FindAndReplace(strModuleName As String, _ strSearchText As String, _ strNewText As String) As Boolean Dim mdl As Module Dim lngSLine As Long, lngSCol As Long Dim lngELine As Long, lngECol As Long Dim strLine As String, strNewLine As String Dim intChr As Integer, intBefore As Integer, _ intAfter As Integer Dim strLeft As String, strRight As String ' Open module. DoCmd.OpenModule strModuleName ' Return reference to Module object. Set mdl = Modules(strModuleName) ' Search for string. If mdl.Find(strSearchText, lngSLine, lngSCol, lngELine, _ lngECol) Then ' Store text of line containing string. strLine = mdl.Lines(lngSLine, Abs(lngELine - lngSLine) + 1) ' Determine length of line. intChr = Len(strLine) ' Determine number of characters preceding search text. intBefore = lngSCol - 1 ' Determine number of characters following search text. intAfter = intChr - CInt(lngECol - 1) ' Store characters to left of search text. strLeft = Left$(strLine, intBefore) ' Store characters to right of search text. strRight = Right$(strLine, intAfter) ' Construct string with replacement text. strNewLine = strLeft & strNewText & strRight ' Replace original line. mdl.ReplaceLine lngSLine, strNewLine FindAndReplace = True Else FindAndReplace = False End If Application.VBE.MainWindow.Visible = False Exit_FindAndReplace: Exit Function Error_FindAndReplace: MsgBox Err & ": " & Err.Description FindAndReplace = False Resume Exit_FindAndReplace End Function Private Sub パスワード修正_Click() 'On Error GoTo パスワード修正_Err DoCmd.Echo False DoCmd.OpenForm "F_パスワード", acDesign If FindAndReplace("Form_F_パスワード", "Password = """ & Me.OldPass & """", "Password = """ & Me.NewPass & """") = True Then DoCmd.Close acForm, "F_パスワード", acSaveYes DoCmd.Echo True MsgBox "パスワードが変更されました。", vbInformation Else DoCmd.Close acForm, "F_パスワード", acSaveNo DoCmd.Echo True MsgBox "旧パスワードが違います。", vbCritical End If DoCmd.Echo True Exit Sub パスワード修正_Err: DoCmd.Echo True MsgBox Error$ End Sub [コマンドボタンのコーティング] Private Sub パスワード修正_Click() 'On Error GoTo パスワード修正_Err DoCmd.Echo False DoCmd.OpenForm "F_パスワード", acDesign If FindAndReplace("Form_F_パスワード", "Password = """ & Me.OldPass & """", "Password = """ & Me.NewPass & """") = True Then DoCmd.Close acForm, "F_パスワード", acSaveYes DoCmd.Echo True MsgBox "パスワードが変更されました。", vbInformation Else DoCmd.Close acForm, "F_パスワード", acSaveNo DoCmd.Echo True MsgBox "旧パスワードが違います。", vbCritical End If DoCmd.Echo True Exit Sub パスワード修正_Err: DoCmd.Echo True MsgBox Error$ End Sub 以上ですが、宜しくお願いします。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.4

No3にぬけがありました。 パスワード修正_Err: の前に Exit Sub を入れてください。 最後の方が以下のようになります。 DoCmd.Echo True Exit Sub パスワード修正_Err: DoCmd.Echo True MsgBox Error$ End Sub

eokwave
質問者

補足

ありがとうございます。パスワード修正「ファイル」へのVBAが出来ておりません。状況をご報告させて頂きますので、ご指導をお願いします。 身勝手な要望でお手数をおかけしております。貴重なアドバイスを完成させたいと思っていますが、現在「先に進めず」の状況ですのでお伝えします。フォームへのコーティングの経験がなく色んな操作をしてみました。操作が間違っているかと思いますが、アドバイスをお願いできませんでしょうか。 「エラーメッセージ」 ALT+F11でVBAの画面を開いてイミディエイト「表示メニュー(イミディエイトウィンドウ)」を選択して、エディターに「DoCmd.Echo True」を入力しますと、以下のダイアログアラートが表示されました。 パスワード修正ファイルを開いた状態でのエラー ( 実行時エラー 424 オブジェクトが必要です ) パスワード修正ファイルのプロシージャを開いた状態でのエラー ( コンパイルエラー 修正候補;ステートメントの最後) ※このエラーメッセージがでてからは、上記のエラーメッセージは出なくなりました。 [フォームの構成] ・フォーム「非連結」 名前「パスワード変更用」 ・テキストボックス「非連結」 名前「OldPass」 ・テキストボックス「非連結」 名前「NewPass」 ・コマンドボタン  名前「パスワード修正」 「コマンドボタンのコーティング」 Private Sub パスワード修正_Click() On Error GoTo パスワード修正_Err DoCmd.Echo False DoCmd.OpenForm "F_パスワード", acDesign DoCmd.Minimize If FindAndReplace("Form_F_パスワード", "Password = """ & Me.OldPass & """", "Password = """ & Me.NewPass & """") = True Then DoCmd.Close acForm, "F_パスワード", acSaveYes DoCmd.Echo True MsgBox "パスワードが変更されました。", vbInformation Else DoCmd.Close acForm, "F_パスワード", acSaveNo DoCmd.Echo True MsgBox "旧パスワードが違います。", vbCritical End If DoCmd.Echo True Exit Sub パスワード修正_Err: DoCmd.Echo True MsgBox Error$ End Sub 以上ですが、宜しくお願いします。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.3

エラーが出たときに画面描画がオンになるようにしておいた方がいいのでこちらで。 Private Sub パスワード修正_Click() On Error GoTo パスワード修正_Err DoCmd.Echo False DoCmd.OpenForm "F_パスワード", acDesign DoCmd.Minimize If FindAndReplace("Form_F_パスワード", "Password = """ & Me.OldPass & """", "Password = """ & Me.NewPass & """") = True Then DoCmd.Close acForm, "F_パスワード", acSaveYes DoCmd.Echo True MsgBox "パスワードが変更されました。", vbInformation Else DoCmd.Close acForm, "F_パスワード", acSaveNo DoCmd.Echo True MsgBox "旧パスワードが違います。", vbCritical End If DoCmd.Echo True パスワード修正_Err: DoCmd.Echo True MsgBox Error$ End Sub

eokwave
質問者

お礼

最適案をありがとうございます。フォームへのVBAにチャレンジ中です。ありがとうございます。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.2

> フォーム「修正用」等を使ってプログラムの一部を書き換える方法 こちらにあるコードを利用します。 Module. Find メソッド (Access) 標準モジュールまたはクラス モジュール内で、指定されたテキストを検索します。 https://docs.microsoft.com/ja-jp/office/vba/api/access.module.find 変更用のフォームを作成してパスワード修正というボタンとOldPassとNewPassというテキストボックスを作成します。 そのフォームのVBA(もしくは標準モジュール)に上記のコードを貼り付けます。 貼り付けたコードを一部変更します。 MsgBox "Text not found." を削除します。ここでは表示しないため。 実行中にVBAの画面が開きますので最後にVBAの画面を閉じるようにします。 Application.VBE.MainWindow.Visible = False ↓最後の方にこれがあるのでその上に上記を追加 Exit_FindAndReplace: ボタンのクリック時に以下を設定します。 Passwordは実際のコードに書かれている文字列を記載してください(PASSWORDでしょうか)、Passwordを検索置換文字列に入れるのは、検索置換文字列をパスワードの文字列だけにした場合、VBAコードに同じ文字列があった場合にそこまで置換されてしまうのを防ぐためです。 DoCmd.Echo FalseはAccessの画面表示を停止します(デザインモードで開くのでちらちらするのを防ぎます、ただVBAの画面を開く表示は止められなかったので多少ちらつきます)最後にDoCmd.Echo Trueを実行して描画をオンにしています。エラーで止まった場合画面表示がオフになっているので操作不能になります。ALT+F11でVBAの画面を開いてイミディエイトにDoCmd.Echo Trueといれてエンターしてください。 Private Sub パスワード修正_Click() DoCmd.Echo False DoCmd.OpenForm "F_パスワード", acDesign If FindAndReplace("Form_F_パスワード", "Password = """ & Me.OldPass & """", "Password = """ & Me.NewPass & """") = True Then DoCmd.Close acForm, "F_パスワード", acSaveYes DoCmd.Echo True MsgBox "パスワードが変更されました。", vbInformation Else DoCmd.Close acForm, "F_パスワード", acSaveNo DoCmd.Echo True MsgBox "旧パスワードが違います。", vbCritical End If DoCmd.Echo True End Sub

eokwave
質問者

お礼

ありがとうございます。フォームへのVBAは初めての体験です。アドバイスをトレースしてやってみます。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.1

パスワードを変更するというのはコードのどこを書き替える("○○○○" の部分)という話ではないと思うのですが、どのような操作を期待しているのでしょう。 パスワードファイルというのは10個パスワード入力フォームがあるという事でしたらそれぞれのフォームにパスワードを変えたコーティング内容を記載すればいいと思います。

eokwave
質問者

補足

[質問の真意・・・] まず、現状の運用方法に対して何ら問題「不満に類似する事由」は全く有りません。このことを前提とさせていただいた上で、お尋ねさせて頂きました事ご理解頂ければと思います。つまり、当初「希望」のセキュリティー対策は解決しています。私の悪い癖で振り回してしまって申し訳ないと思っています。 [得たかったこと・・・] この機会にプロシージャ「コーティング」に直接接触しないで、フォーム「修正用」等を使ってプログラムの一部を書き換える方法の有無を、自身の知識として習得できればと考えました。もし、可能な事柄であればおご教授お願いしたいと・・・・。”思いました” [最後に・・・] 一つの事柄から多くの疑問が派生していく過程「自分の意識」を率直に表現してしまいました。欲張りで本当に申し訳なく思っております。この機会「パスワード設定の実現」を得られたことに感謝致します。

関連するQ&A

  • PWの入力ミス時のタブオーダー順について

    ご面倒をお掛けしますが、ご指導いただければと思います。 I、PWの入力ミス時のタブオーダー順を以下の「希望」の様に変更することは可能でしょうか。勿論ですが間違えないことを前提として・・・・。 [現状のタブオーダー順」 「password」→(入力ミス)→「Login」 「希望のタブオーダー順」 「password」→(入力ミス)→「Login」→「password」 「現行と希望」 1,テキスト窓「名前:password」にpasswordを間違って入力              ⇓ 2,コマンドボタン「名前:Login」をクリック              ⇓ 3,エラーアラート表示「コマンドボタン(名前:OK)をクリック」              ⇓ 4,フォーム「F_パスワード」のコマンドボタン「名前:Login」でタブストップ              ↓ 5,「希望動作」タブストップ位置をテキスト窓「名前:password」に戻す II、プロシージャのコーティング Private Sub LogIn_Click() If Me.PASSWORD = "○○○○" Then DoCmd.OpenForm "○○○○" DoCmd.Close acForm, "F_パスワード" Else MsgBox "パスワードが違います!", vbCritical, "警告" End If End Sub ご紹介頂いたサイト「修正あり」 http://www.access-vba-navi.com/post-548/ 以上ですが、宜しくお願い致します。

  • パスワード入力の日本語入力をオフにしたい

    いつもお世話になっています。 ボタンにパスワードを入力するイベントを設定しています。 インプットボタンにカーソルが入ると自動的に日本語入力がオンになります。 これを反対にオフにするようにするにはどうしたらよいか教えてください。 よろしくお願いいたします。 Private Sub ログイン_Click() If InputBox("パスワードを入力して下さい。, "認証") = "mainte" Then DoCmd.OpenForm "F_メンテナンスフォーム" Else MsgBox "パスワードが間違っています。", vbOKOnly + vbInformation DoCmd.OpenForm "F_メインフォーム" End If End Sub

  • Accessでのログインについて

    Private Sub txtCountPass_AfterUpdate() Dim TextBoxA As TextBox Dim TextBoxB As TextBox Set TextBoxA = Me.txtNamePass ' Set TextBoxB = Me.txtCountPass Const NamePass = "sample" ' Const CountPass = "1234" If TextBoxA = NamePass Then ' If TextBoxB = CountPass Then ' DoCmd.OpenForm "frm_メニュー" ' DoCmd.Close , "frm_パスワード" Else MsgBox "パスワードが異なります。", vbOKOnly + vbCritical End If Else MsgBox "IDが異なります。", vbOKOnly + vbCritical End If End Sub 上記VBAを使ってログインしようとしているのですが、実行されません。frmの2行が間違っているのでしょうか、それとも他が違うのでしょうか?

  • アクセスの印刷VBAを教えて下さい

    アクセス初心者です。 バージョンは2002を使っています。 ネットで探して詳しく分からないままプログラムしています。 フォームで印刷のコマンドボタンを作ってそのボタンをクリックすると表示されてる 1ページのみ印刷したいのですが全てのレコードが印刷されてしまいます。 どうすればいいのか教えて下さい。 下記が今現在のVBAです。 Private Sub 印刷_Click() Dim varCopies As Variant varCopies = InputBox("部数を数字で入力してください", "印刷部数の指定") If Len(varCopies) = 0 Then Exit Sub End If If IsNumeric(varCopies) = False Then MsgBox "部数は数字で入力してください", vbOKOnly + vbCritical, "入力エラー" Exit Sub ElseIf CLng(varCopies) = 0 Then MsgBox "部数は0以上で入力してください", vbOKOnly + vbCritical, "入力エラー" Exit Sub End If If MsgBox("印刷しますか?" & vbCrLf & "部数=" & varCopies _ , vbYesNo + vbInformation, "印刷の確認") = vbYes Then DoCmd.OpenForm "伝票", acPreview, , , acFormReadOnly DoCmd.PrintOut acPrintAll, , , , CLng(varCopies) DoCmd.Close acForm, "伝票" End If End Sub

  • コマンドボタン名を取得して変数に代入したい。

    OS:windowsXp Access Version:Xp 既出でしたらすみません。 INDEXのフォームにて複数コマンドボタンを作り、それを押すと各登録フォームや集計フォームが開くようにしています。 さて、質問なのですが、コマンドボタンで別のフォームを開く時の処理を(フォーム名が違うだけで後は同じなので)まとめて書きたいのです。 現在は次のようにやっています。 ------------------------------------------------- Private Sub F_メニュー_Click() Call close_form DoCmd.OpenForm "F_メニュー", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub F_売上伝票_Click() Call close_form DoCmd.OpenForm "F_売上伝票", acNormal, , , acFormEdit, acWindowNormal End Sub      (中略) Private Sub 事業所別集計_Click() Call close_form DoCmd.OpenForm "F_事業所別集計", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub 消費税変更_Click() Call close_form DoCmd.OpenForm "F_消費税変更", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub システム終了_Click() Call close_form DoCmd.RunCommand acCmdExit End Sub Private Sub close_form() msgbx = False DoCmd.Close acForm, "index", acSaveYes End Sub ------------------------------------------------- これを  ボタン名_Click() ではなく  frm_open() 押されたボタン名を変数に取得(ボタン名=Form名にします。) DoCmd.OpenForm 押されたボタン名変数 のように共有したいのです。 どうすれば出来ますでしょうか?ご指導よろしくお願いします。

  • クリックイベントなのに、2回クリックしないとフォー

    クリックイベントなのに、2回クリックしないとフォームが閉じないです。 フォームに閉じると言うコマンドボタンがあり、クリックイベントで Private Sub cmd_閉じる_Click() DoCmd.Close acForm, Me.Name End Sub としてるのですが、なぜか1回ボタンを押しただけではフォームが閉じません。 2回目押した時にフォームがとじます。 ダブルクリックでも閉じます。 Private Sub cmd_閉じる_Click() 'DoCmd.Close acForm, Form_Fフォーム.Name End Sub のように、フォーム名を指定すると1回のクリックで閉じます。 しかしMe.Nameだと2回目じゃないと閉じない理由がわかりません。 Fフォームは他フォームから DoCmd.OpenForm Form_Fフォーム.Name, acNormal で開いたから2回クリックしないと閉じないのでしょうか?

  • アクセスのマクロ

    友人がアクセスで作ったマクロです。3行目で止まってしまいます。どこが悪いのでしょうか。(私は全くの素人でわかりません) Private Sub 記載事項入力ボタン_Click() DoCmd.Close acForm, "初期画面", acSaveYes DoCmd.OpenForm "入力フォーム", acNormal ←ここ End Sub

  • チェックボックスを利用してフォームを開く

    帳票フォームでデータを出している画面の一番左にチェックボックスを配置しました。 第一にチェックボックスを1つづつ選択できるように下記を記載しました。 Private Sub 選択_Click() If Me!選択 Then CurrentDb.Execute "UPDATE テーブル名 SET 選択 = False;" Me.Refresh End If End Sub チェックボックスにチェックを入れると一連のデータが新しいフォームに移る様に 下記のように記載しましたが、全く受け付けません。 Private Sub 編集_Click() If 選択 = False Then DoCmd.OpenForm "編集F" DoCmd.Close acForm, "メインフォーム名" End If 何が問題なのかわかりません。 ご助言いただきたく、宜しくお願い致します。

  • Accessでフォームの検索結果をレポートで表示

    いつもお世話になっています。 前回の質問に続いて製品分析表を作成しています。 ベースは出来て、最後は必要な情報を印刷するのみとなりました。 情報の検索は、F_検索フォームから複数の条件から絞込みを行い、 それをボタンから指定したフォームで開いて再編集する操作は上手くいっています。 Private Sub 編集_Update() If Me.編集 Then DoCmd.OpenForm "F_製品分析" Set Forms!F_製品分析.Recordset = Me.Recordset Else DoCmd.Close acForm, "F_検索" End If End Sub ただこれをレポートに置き換えると「変数」がないとエラーが表示されてしまいます。 どうか解決策をご指示ください。 よろしくお願いいたします。

  • 「DoCmd.OpenForm」が実行できない(vbaでフォームを開きたい)

    「フォーム1を開く」vbaで行ないたいのですが エラーになってしまいます。 Sub test1() DoCmd.OpenForm , acNormal, フォーム1 End Sub は「変数が定義されていません」と表示され (「変数の宣言を強制する」にチェックを入れています) Sub test2() DoCmd.OpenForm , acNormal, "フォーム1" End Sub は「引数は省略できません」となります。 Sub test1() DoCmd.OpenForm , フォーム1, acNormal End Sub Sub test2() DoCmd.OpenForm , "フォーム1", acNormal End Sub これにしても同じでした。 「OpenForm」をヘルプで調べてみたところ 「expression 」と「FormName」が「 必ず指定します。」でした。 「expression 」がないからだめなのでしょうか? すいません、助けてください。 よろしくお願いします。

専門家に質問してみよう