見守り電球またはGPS端末が特価中!

フォームのコマンドボタンを押して、ナビゲーションウインドウを非表示にしたいです。

フォームにコマンドを設置して、クリックイベントに

Private Sub コマンド1_Click()
DoCmd.RunCommand acCmdWindowHide
End Sub

として、コマンド1のボタンを押すと、
フォームが非表示になってしまいます。

フォームではなくナビゲーションウインドウを非表示にする方法を教えてください。アドバイスよろしくお願いします。

「ナビゲーションウインドウを非表示にしたい」の質問画像

A 回答 (1件)

こちらを参考に。


access2010 ナビゲーションウィンドウを非表示に
http://mukkumuku.blogspot.com/2010/11/access2010 …

再表示する際に、acCmdWindowHide を acCmdWindowUnHide に
したら、エラーを吐きつつも表示されましたが
F11 キーでも再表示されますね。
    • good
    • 0
この回答へのお礼

ありがとうございました。大変参考になりました。

お礼日時:2012/03/03 22:38

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QAccessでナビゲーションウィンドウを開かないようにする方法はありますか?

Accessで人事評価システムの開発を考えています。
プログラムはAccessのマクロ、VBAを使って開発します。
開発パソコン以外にはランタイムルーチンと開発したプログラムをインストールしますが、ナビゲーションウインドウが開けてしまうので全ての人事情報が見られてしまう恐れがあります。
ナビゲーションウィンドウが開かないようにする方法があるでしょうか。
よろしくお願いします。

Aベストアンサー

Access Runtime ならナビゲーションウィンドウやリボンなどは使えなくなるハズですが?
もちろん、そのAccdb・AccdeファイルをAccessがインストールされているPCで開けば
すべて丸見えになります。
開発PCで、/runtime オプションで開いてみてください。
イミディエイトウィンドウで
shell syscmd(acSysCmdAccessDir) & "msaccess.exe /runtime d:\test.accdb",vbNormalFocus

昔のAccessはユーザーレベルセキュリティが使えましたが、
2013では機能が完全に削除されていますので
フロントエンドとバックエンドに分けてバックエンドにはパスワードの設定、
フロントエンドにはテーブルリンクを設定せずに
フォーム中のVBAから接続するようにするしかなくなっています。
http://hatenachips.blog34.fc2.com/blog-entry-351.html
これならバックエンドファイルを外部に持ち出されても
少しだけ安心です。(解析される可能性は残ります)

Access Runtime ならナビゲーションウィンドウやリボンなどは使えなくなるハズですが?
もちろん、そのAccdb・AccdeファイルをAccessがインストールされているPCで開けば
すべて丸見えになります。
開発PCで、/runtime オプションで開いてみてください。
イミディエイトウィンドウで
shell syscmd(acSysCmdAccessDir) & "msaccess.exe /runtime d:\test.accdb",vbNormalFocus

昔のAccessはユーザーレベルセキュリティが使えましたが、
2013では機能が完全に削除されていますので
フロントエンドとバック...続きを読む

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QAccessのフォームのみ表示させたい

Accessを起動した際、フォームのみ表示するにはどうすればよいのでしょうか?
(Accessを起動すると、オブジェクトメニュー?(テーブルやクエリ等のオブジクトを選択するウィンドウ)を表示させないで、フォームのみを表示させるには?)
また、上記と同じようにして、なおかつAccessを起動させないでフォームで起動や終了といったことが出来るのでしょうか?
やはりこれはVB等プログラミングでないと出来ないのでしょうか?ちなみに私はプログラミングは全く出来ません。
わかる方、教えて下さい。宜しくお願いします。

Aベストアンサー

ツールメニュー
”起動時の設定”を開き

フォーム/ページの表示にて起動時に表示させたいフォームを選択すれば、そのMDBを開いた時に、該当のフォームが表示されます。

メニュー画面等を作り、各処理のフォームを開いたり、アクセスを終了するマクロを呼び出すボタンを作ればフォームからの終了等も可能です。

また、データベースウィンドウの表示のチェックボックスを外せば、質問者様の言われているオブジェクトメニューは表示されなくなります。

メンテナンス等を行いたい時はshiftキーを押下しながら立ち上げればデータベースウィンドウが表示できます。

Q【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには

バージョン:Access2002

フォーム「frm01」にテキストボックス「tb01」が作ってある場合、
Forms.frm01.tb01.Value="あいう"
とすれば、フォームもコントロールも指定できるのですが、
Dim strTxt As String
strTxt = "tb01"
Forms.frm01.strTxt.Value="あいう"
だと、文字列型変数"strTxt"が展開されないのでフォーム「frm01」のコントロール「strTxt」を探してしまいエラーになってしまいます。

文字列型変数でフォームやコントロールを指定するには、どのようにすればよいのでしょうか?

Aベストアンサー

フォームの場合
 Forms(strFrm)

フォームのコントロールの場合
 Forms(strFrm).Controls(strTxt)


これでも参照できますが、普通ここまで省略しませんね。
 Forms(strFrm)(strTxt)

あとで見たとき、訳がわからなくなりそう。

QACCESSで作成したアプリケーションがACCESSランタイムで動かない?

ACCESSで作成したアプリケーションがあるのですが、顧客の要望でランタイムで運用したいと思っています。

ところが動作確認をすると、あるフォームを開く際に「実行時エラーが発生したため、このアプリケーションの実行は中断しました。
アプリケーションを続行できません。システムはシャットダウンされます。」

というダイアログを表示して、OKボタンを押すとアプリケーションが落ちてしまいます。

ランタイムではないACCESSでは問題なく動作するのですが、ランタイムでは何が違うのかわかりません。

動作環境
OS:WindowsXP
ACCESSランタイムは2003と2000 SR-1、ランタイムでないACCESSでも2003と2000 SR-1を試していますが、いずれの場合でもランタイムで上記の症状が発生し、ランタイムでない場合は発生しません。
Microsoft Jetは4.0にしてあります。

断片的なヒントでも結構です。また参考になるサイトでも結構ですのでご教示をお願いいたします。

Aベストアンサー

Accessの内部エラーが発生しているのですぐ落ちてしまう。
ランタイム条件によってフォームが実行される時に有効なコードが誤っているとか。(フォーム中のコードが削除したテーブルを開こうとしている。実行時のコードで誤ったロジックが含まれる。みたいな誤り)
エラーがコード内で発生しているがエラー処理を実装していないので落ちてしまうとか。

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

Qアクセス:フォームビューからデザインビューへの切替えをロックしたい

お世話になります。
アクセス初心者ですよろしくお願いします。

《アクセス:フォーム》
◆フォームビューから、デザインビューに他者が自由に切替えをできないようにすることは簡単にできますか?

◆(目的)私が作成したものを入力担当者が勝手にさわれないようにするためです。

以上よろしくお願いいたします。

Aベストアンサー

配布はMDE形式とする。

と、言うのも使えそうですが・・・。

QACCESS フォームをそのまま印刷について

お世話になります。
ACCESSのフォームを印刷する方法ってどうすればいいのでしょうか?レポートは使いたくなくて・・・・
ボタンをクリックしたらボタンを非表示にして印刷させたいのですが、やり方がわかりません。
また、印刷プレビューを表示させるボタンも作りたいのですが・・・

よろしくお願いいたします。

Aベストアンサー

>ACCESSのフォームを印刷する方法ってどうすればいいのでしょうか?
普通に[ファイル][印刷]とすれば印刷できます
どのような形で印刷されるかは印刷プレビューで確認できます

>ボタンをクリックしたらボタンを非表示にして印刷させたいのですが
VBAなら印刷はPrintformメソッドです
印刷時非表示はDisplayWhenプロパティーで設定できます

>印刷プレビューを表示させるボタンも作りたいのですが・・・
プレビューはレポートにしかないようですね
フォームは表示されているんですよね、だったら要らないのでは

>レポートは使いたくなくて・・・・
フォームと同じフォーマットのレポートなら
右クリック、名前をつけて保存でレポートを選ぶだけで簡単に作れますよ

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

QAccessでテーブルの値をテキストボックスに代入するには?

[ID][文字列]の2つのフィールドからなる単純なテーブルがあり、削除クエリを併用して常に最新のデータしか格納されていない状態に工夫できました。(データは常に1つ)
そこでフォーム上にあるテキストボックスにこのテーブルの[文字列]フィールドのデータを表示させたいのですが、
どうしたらよいでしょうか?

また、このテーブルの[文字列]フィールドのデータを直接変数として使いたい場合はVBAでどのように記述すればよいのでしょうか?

Aベストアンサー

テーブルに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名")」
IDごとに"データは常に1つ"ならコントロールソースに
「=DLOOKUP("文字列のフィールド名","テーブル名","[ID]='" & Me.ID & "'")」

Dlookup関数のヘルプ
http://office.microsoft.com/ja-jp/assistance/HP010496551041.aspx


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング