• ベストアンサー

vbaで帳票フォームで開きたい アクセス

vbaでフォームを開くときに 既定のビューを指定してるのですが 指定したとおりになりません。 Private Sub Form_Load() Me.DefaultView = 1 '帳票フォーム End Sub としてもデータシートビューで開かれてしまいます。 Private Sub Form_Load() Me.DefaultView = 1 '帳票フォーム MsgBox Me.DefaultView End Sub とすると、1が返るのに やっぱりデータシートビューになってしまいます。 なぜでしょうか? エラーにもなりません。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

質問の場合、以下の中ほどに書いてありますが、 http://accessclub.jp/bbs/0029/beginers12633.html フォームをデザインで開く DoCmd.OpenForm "フォーム名", acDesign, , , , acHidden 既定のビューを変更 Forms!フォーム名.DefaultView = 1 保存して終了 DoCmd.Save acForm, フォーム名 DoCmd.Close acForm, フォーム名 の手順をVBAですることになります。

trfbvmvjqblp
質問者

お礼

回答ありがとうございました。

その他の回答 (2)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

私の環境が変なのかもしれませんが、アクセス2003では このプロパティを指定するには、フォームまたはレポートををデザインビューで開きます とエラーになります それで、 フォームを開くときに DoCmd.OpenForm(FormName, acNormal) と指定して開くといかがですか。

trfbvmvjqblp
質問者

お礼

回答ありがとうございました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

=1と書く理由は? acで始まる定数を利用してみては? (帳票フォームは値[1]でしたっけ?)

trfbvmvjqblp
質問者

お礼

回答ありがとうございました。

関連するQ&A

  • サブフォームのビューを切り替えたい

    親フォーム(フォーム1)にサブフォームとして、 テーブルをソースとするサブフォーム(テーブル1のサブフォーム)を配置しました。 親フォームからサブフォームのビューを変更したいのですが どうすればいいか教えてください。 親フォームのコマンドボタンにはそれぞれ Private Sub 単票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 1 '帳票フォーム End Sub Private Sub 帳票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 0 '単票フォーム End Sub としたのですが、 実行すると 実行時エラー 2136 "このプロパティを設定するには、フォームまたはレポートをデザインビューで開きます"。 となってしまいます。 Private Sub 帳票フォームへ切り替え_Click() DoCmd.SelectObject acForm, "テーブル1のサブフォーム" DoCmd.RunCommand acCmdFormView End Sub にしたところ、 実行時エラー 2489 “オブジェクト テーブル1が開いていません、” になります。 サブフォームに埋め込んでいて親フォームを開いていても 開いてない事になるのですね。 フォームビューの時に、切り替える事は不可能なのでしょうか? 帳票ビュー表示用フォーム、 単票ビュー表示用フォーム を作るしかないのでしょうか?

  • フォームのビューの設定をvbaでするには

    今はフォームビューで表示させていて、 フォーム上のコントロールをクリックすると、 Me.Controls("").Form.SetFocus は、 1が返ります。 Private Sub cmd_表示切替_Click() Debug.Print Me.CurrentView DoCmd.RunCommand acCmdDatasheetView End Sub みたいなことをしたいのですが、 これだとエラーになります。 上記コードはテストコードですが、 実はデータシートビューではなく、 単票フォームと帳票フォームをボタン一つで切り替えたいです。 Debug.Print Me.CurrentView で、現在のフォームの状態が取得できるから、 DoCmd.RunCommand acCmdDatasheetView このような方法で設定できれば、 ifステートメントで切り替えられると思うのですが、 設定の仕方がわからないので教えてください。

  • フォームを表示してからメッセージボックスを表示する

    メッセージボックスが表示される前に、フォームを表示させたいです。アクセスです。 ナビゲーションウインドウからフォームをダブルクリックしてフォームを開くのですが、 今のままだとメッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを表示してからメッセージボックスを表示するにはどうすればいいでしょう? Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" End Sub だと、先ほど述べたように、メッセージボックスが表示されてからフォームが表示されてしまいます。 フォームを開いたときのイベントは複数あるようで、 Private Sub Form_Activate() MsgBox "Form_Activate" Debug.Print "Form_Activate" End Sub Private Sub Form_Current() MsgBox "Form_Current" Debug.Print "Form_Current" End Sub Private Sub Form_GotFocus() MsgBox "Form_GotFocus" Debug.Print "Form_GotFocus" End Sub Private Sub Form_Open(Cancel As Integer) MsgBox "Form_Open" Debug.Print "Form_Open" End Sub Private Sub Form_Load() MsgBox "Form_Load" Debug.Print "Form_Load" End Sub をすると、 ・Form_Load ・Form_Activate ・Form_GotFocus ・Form_Open ・Form_Current の順に開きますが、やはりフォームが最後に表示されてしまいます。 どうにかして先にフォームを表示させる方法はないでしょうか? ご回答よろしくお願いします。

  • vbaでフォームを作成しつつ、指定した名前で保存す

    vbaでフォームを作成しつつ、指定した名前で保存するには? Sub フォームを作成する() Dim myBtn As TextBox Dim myForm As Form Set myForm = CreateForm myForm.DefaultView = 1 ' 帳票フォーム DoCmd.Save acForm, "F帳票" End Sub これを実行すると 実行時エラー2489 オブジェクト ’F帳票’が開いていません。 になってしまうのですが、新規でフォームを作り名前を付けて保存する方法はありますか? ご回答よろしくお願いします。

  • フォームのイベントを標準モジュールから呼び出す

    フォームのイベントを標準モジュールから呼び出す事は出来ないのでしょうか? ちなみにアクセスです。 例えば、 Private Sub Form_Load() MsgBox "test" End Sub というのはフォームを開いたときにしか発生しないですよね。 でもフォームを開いている状態でForm_Loadと全く同じ事をしてほしい時は どうすればいいですか? 標準モジュールで Sub a() Call Form_フォーム1.Form_Load End Sub としてみましたが、メソッドまたはデータ メンバが見つかりません。 (Error 461)になりました。 MsgBox "test" だけなら、 Sub a() MsgBox "test" End Sub にすりゃいいじゃん!って思われがちですが、 実際はForm_Loadイベントにはたくさんのコードが書かれています。 標準モジュールからイベントの呼び出しを教えてください。

  • アクセス 帳票ビュー・単票ビューをボタンで切り替え

    帳票ビュー・単票ビューをボタンで切り替えたいのですが、どの定数を指定すればいいのかわかりません。 Private Sub 単票ビュー_Click() Call test End Sub Private Sub 帳票ビュー_Click() Call test End Sub Sub test() If ActiveControl.Caption = "帳票ビュー" Then DoCmd.RunCommand acCmdFormView '単票ビューにする ElseIf ActiveControl.Caption = "単票ビュー" Then DoCmd.RunCommand acCmdFormView '帳票ビューにする End If End Sub こんな感じで作ったのですが、「acCmdFormView」ではダメで、単票ビュー、帳票ビューをそれぞれ指定したのですが、コードを教えていただけますか?

  • アクセスフォームのサイズの調整について

    一つは全画面表示(Maximize)で開きもう一つは普通の表示(Restore)で開くには? フォーム1とフォーム2があります。画像をご覧ください。 フォーム1は Private Sub Form_Load() DoCmd.Maximize End Sub で、 フォーム2は Private Sub Form_Load() DoCmd.Restore End Sub としてます。 フォーム1にコマンドボタンを設置して、 Private Sub フォーム2を開く_Click() DoCmd.OpenForm "フォーム2" End Sub として、フォーム2を開くのですが、 フォーム2が開くとフォーム1まで、元の大きさに戻ってしまいます。 行いたいことは、 フォーム1は全画面表示、フォーム2は、ノーマルな表示(全画面でも最小化でもない) にしたいのですが、不可能なのでしょうか?

  • フォームのデータシートビューにてVBAで直接記述したSQL文を実行した結果を返すことは不可能でしょうか?

    リストボックス、コンボボックスなら Private Sub Form_Open(Cancel As Integer) With Form_フォーム1.リスト2 .RowSourceType = "Table/Query" .RowSource = "SELECT テーブル.フィールド, FROM テーブル" End With End Sub で結果を返すことは可能なのですが フォームをデータシートとして Private Sub Form_Load() Me.RowSourceType = "Table/Query" Me.RowSource = "SELECT テーブル.フィールド, FROM テーブル" End Sub とするのは不可能ですか? これを実行すると 「コンパイルエラー メソッドまたはメンバーが見つかりません」 となり、 「RowSourceType =」が選択されます。 そしてVBAの停止の意の四角ボタンを押すとユーザーフォームが図のようになります。 私のやりたいことは、クエリではなくVBAでSQL文を書き、データシートビューで表示させたいのですがやはり不可能でしょうか? (変数を代入できるため) 何でもいいのでご教授よろしくお願いします。

  • フォームを開いた時にVBAでデザイン変更の許可の設

    フォームを開いた時にVBAでデザイン変更の許可の設定が出来ない(access2003) デザインビューで手作業で操作するのではなく VBAで値を設定したいのですが Private Sub Form_Open(Cancel As Integer) Me.AllowDesignChanges = False End Sub をすると ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・  実行時エラー '2448':  このオブジェクトに値を代入することはできません。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ と言うエラーが出てしまいます。 標準モジュールで Sub test() Form_フォーム1.AllowDesignChanges = False End Sub としても同じエラーが出ます。 フォームのデザイン変更の許可は デザインビューで手作業で操作するしかないのでしょうか?

  • #008000が&H8000に変化する

    vbaで色設定したいのですが、勝手に色コード(?)が変化します。 テストとして、フォームを開いた時にフォームの色を変えようと思うのですが Private Sub Form_Load() Me.詳細.BackColor = &H008000 End Sub これにしてエンターを押すと Private Sub Form_Load() Me.詳細.BackColor = &H8000 End Sub になってしまいます。 もともと#008000は緑なのですが、&H8000に変化すると黒になります。 #008000のコードは使えないのでしょうか?

専門家に質問してみよう