【最大10000ポイント】当たる!!質問投稿キャンペーン!

Access2000を使っています。
Accessを指定サイズで開く様にしたのですが、閉じる時に元のサイズに戻せないでしょうか。(次回別のAccessを開いた時に変更したサイズで開いてしまい困っています)
初心者の為、記述内容と記述する場所を教えて頂けると助かります。
開くときは下記の記述をしています。
Declarationsへ
Declare Function MoveWindow Lib "user32" _
(ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, _
ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long

プロシージャへ
Dim lngRet As Long
lngRet = MoveWindow(Application.hWndAccessApp, 0, 0, 800, 600, True)

A 回答 (1件)

簡単な方法は


質問の内容の記述から見てフォームを開く時にモジュールから呼び出してサイズを変更しているようなので、フォームを閉じてAccessを終了する時にフォームの閉じる時のイベントに一度全画面表示するように
して終了させれば、別のAccessを開くときに最大化されて表示されます。
フォームの閉じる時のイベントに
DoCmd.Maximize
で最大化します。
その後でフォームを閉じて終了させる。
またはDoCmd.MoveSizeを使用してサイズを指定して好きなサイズにしてから終了させる。
DoCmd.MoveSize Width:=1280, Height:=1024
とか

または
別のAccessを開くときに起動時の設定などでフォームでも設定されていれば開く時のイベントに同様に記述すれば出来ます。

この回答への補足

開いた時のサイズを取り出す方法が分かりません。

補足日時:2008/07/25 16:19
    • good
    • 1
この回答へのお礼

分かりやすい回答有難う御座いました。
サーバへ保管して各担当者が開いているのですが、
各担当者が、いつも開いているサイズと変わってしまうのが駄目らしく
何とかならないかと言われました。(自分以外のデータベースも有ります)
開いた時のサイズをテキストなどに保管して閉じる時にMoveSizeで元に戻せないでしょうか?
とりあえずは教えて頂いた、Maximizeで閉じる事にします。

お礼日時:2008/07/25 16:02

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

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

関連するカテゴリからQ&Aを探す

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

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

Q起動時のフォームの大きさ?

教えてください。

Access2000です。起動時の設定でフォームを指定しました。画面の4分の1程度の大きさのフォームなのです。起動するとAccess自体のウィンドウが最大化になっていてそのグレーの背景の中にポツンと小さなフォームがあります。かっこよくないんです。

Accessのウィンドウをなんとかこのスタートフォームの大きさに合わせることってできませんか?サイズ変更してピッタリにしたのですが、再度、起動させるとちょっとずれてしまってスクロールバーが表示されてしまいます。これってやっぱり無理なのですかねぇ~。

あと、起動時の設定のなかのすべてのチェックボックスをはずしたのですが、一番上のメニューバーだけは消えません。どうしたら消えるのでしょうか?

見た目にこだわる私としては以前から許せない部分でした。
みなさんのご指導、お待ちしています。
どうしたら、かっこよく出来るでしょうか?

Aベストアンサー

ちょっと状況により異なると思いますが。。。
サイズ変更は工夫次第、メニューバーは必ず消えます。

(1)サイズ変更
・フォーム全体のプロパティシートで、[書式]タブ→[サイズ自動修正]を「いいえ」にしたらどうでしょう。
または
・フォームを開いて、サイズ修正だけ(!)操作してください。直後に上書き保存をします。(Ctrl+Sなど)

どちらかの方法でうまく行くハズです。

(2)メニューバーを消す
ちょっとステップが多いです。
1.ツールバーのユーザー設定画面を出します。
2.[ツールバー]タブで[新規作成]をします。
3.テキトーな名前で[OK]を押します。
4.作成したツールバーが選択されている状態で[プロパティ]ボタンを押します。
5.「種類(E):」の部分を[メニューバー]に変更します。
ここまで行ったら、起動時の設定です。
1.起動時の設定画面を出します。
2.「メニューバー(M):」で、作成したツールバーを選択します。
あとは再起動してみてください。
既定のメニューバーじゃなくって、真っ白なメニューになっています。
さらにもう1つ!
1.真っ白なメニューバーの適当な部分を、Accessウィンドウにドラッグしてください。
2.閉じるボタンを押して、消してください。
もう一度再起動をします。
もうメニューはなくなっているハズです。

Accessというのは、既定メニューバーを消すことができないんです。そこで、今回の操作ではダミーの真っ白なメニューを作成して、それを消してしまうことで、Accessの既定メニューを回避しています。

分かりにくかったら申し訳ないですが、チャレンジしてみてください!

ちょっと状況により異なると思いますが。。。
サイズ変更は工夫次第、メニューバーは必ず消えます。

(1)サイズ変更
・フォーム全体のプロパティシートで、[書式]タブ→[サイズ自動修正]を「いいえ」にしたらどうでしょう。
または
・フォームを開いて、サイズ修正だけ(!)操作してください。直後に上書き保存をします。(Ctrl+Sなど)

どちらかの方法でうまく行くハズです。

(2)メニューバーを消す
ちょっとステップが多いです。
1.ツールバーのユーザー設定画面を出します。
2.[ツールバー]タブで[...続きを読む

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

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

Aベストアンサー

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

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

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

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

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

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初心者です。

サブフォームでテーブルの項目を表示させていますが、
選択された行を取得する方法はありますか?
サボフォームの下の方に現在選択されているレコード数が表示されてますが、その値でかまいません。

調べているのですが、なかなか検討がつきません。
宜しくお願い致します。

Aベストアンサー

フォーム名がフォーム1、サブフォームコントロールの名前がサブフォーム1だとすると、

Forms!フォーム1!サブフォーム1.Form.CurrentRecord

で取得できます。
(「Forms」と「Form」がありますのでご注意下さい)


また、フォーム1にコードを記述する場合であれば

Me!サブフォーム1.Form.CurrentRecord

サブフォーム1へのコード記述であれば

Me.CurrentRecord

という構文によっても、それぞれ取得が可能です。

QAccess2007では、フォームのウィンドウの大きさを変更できないの

Access2007では、フォームのウィンドウの大きさを変更できないのですか?
Access2003からやっと2007に移行したばかりで、基本操作に慣れないのですが、
2007のタブのような画面ではなく、2003のようにフォームウィンドウの大きさを指定したいのですが、
可能でしょうか?

以下は2003でのウィンドウ幅の指定ですが、2007ではこれを実行しても変更しません。

'ウインドウを設定値に戻す
With Forms(strFrmName)
.InsideHeight = 4000
.InsideWidth = 5000
End With

Aベストアンサー

あと考えられるのは、

フォームのプロパティ
(1) サイズ自動修正
(2) ポップアップ
(3) 作業ウィンドウの固定

の各プロパティの設定。
もしくはSPのバージョンを上げる、くらいですが。

Qサブフォームに対してGoToRecordするには?

フォームに対してRequeryすると先頭のレコードへ移動してしまうので
Requeryする前のレコードの番号を取得して
Requery後にそのレコード番号へ移動したいのですが

Sub test()
i = Forms("Form").Controls("SubForm").Form.CurrentRecord
Forms("Form").Controls("SubForm").Requery
DoCmd.GoToRecord acActiveDataObject, Forms("Form").Controls("SubForm"), acGoTo, i
End Sub

これをすると、実行時エラー2498
指定した式は、いずれかの引数とデータ型が対応していません。
になりますが、
どこがおかしいのでしょうか?

Aベストアンサー

【要旨】
サブフォームのレコード移動では、対象サブフォームは引数で指定するのではなく、
SetFocusメソッドで移動後、引数を省略したGotoRecordを使用します:
  Forms("Form").Controls("SubForm").SetFocus
  DoCmd.GotoRecord , , acGoto, i

但し、「Requery前後でのレコード移動の回避」が目的の場合は、Requeryの
対象を「親フォームまたはサブフォームのFormオブジェクト」ではなく「サブフォーム
コントロール」とすればOkです。
 <現状・例1>
  Forms("Form").SetFocus
  DoCmd.Requery
 <現状・例2>
  Forms("Form").Requery
 <現状・例3>
  Forms("Form").Controls("SubForm").Form.Requery
 <代替策>
  Forms("Form").Controls("SubForm").Requery
  ※「現状・例3」との違い(→途中の「.Form」の有無)に注意。


【詳細】
> 実行時エラー2498

このエラーの直接の原因は、GotoRecordメソッドの第2引数に指定している
「Forms("Form").Controls("Subform")」の部分です。

ここに指定するのはオブジェクト名になりますが、そのデータ型は文字列型です。
一方、「~.Controls(~)」の形で指定した場合、取得できるのは
 a)オブジェクトそのもの
 b)そのオブジェクトのデフォルトプロパティ
のどちらかです(→状況によって変化します)。
(例えばテキストボックスなら、TextBoxオブジェクトまたはValueプロパティの値)

サブフォームのデフォルトプロパティは調べていませんが(汗)、少なくとも文字列
型のプロパティではないため、「型が一致しない」とのエラーとなります。
サブフォームのコントロール名を取得する場合は、
  Forms("Form").Controls("SubForm").Name
というように、Nameプロパティを明示的に指定する必要があります。

ただ、「サブフォームのレコード移動」の場合、明示的に「Name」プロパティを
指定しても解決には至りません(汗)
これは、GotoRecordメソッドの第2引数には、直接開いているオブジェクトの
名前のみが有効なためで、サブフォームを直接的に指定することはできない、
ということです。
(注:Microsoftの資料を探したわけではなく、経験則から記述していますので、
 私の勘違いでしたらご容赦願います(汗))

サブフォームのレコード移動には、冒頭に記述したとおり、「フォーカスの移動」と
「一部の引数を省略したGotoRecord」を使用します:
  Forms("Form").Controls("SubForm").SetFocus
  DoCmd.GotoRecord , , acGoto, i

なお、これも冒頭に書きましたが、サブフォームのRequeryの仕方には幾つか
方法がありますが、Requeryの対象を「コントロールとしてのサブフォーム」にすれば、
レコード移動が発生しませんので、GotoRecord自体が不要になります。
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmHowToRequeryAndReturn.html

【要旨】
サブフォームのレコード移動では、対象サブフォームは引数で指定するのではなく、
SetFocusメソッドで移動後、引数を省略したGotoRecordを使用します:
  Forms("Form").Controls("SubForm").SetFocus
  DoCmd.GotoRecord , , acGoto, i

但し、「Requery前後でのレコード移動の回避」が目的の場合は、Requeryの
対象を「親フォームまたはサブフォームのFormオブジェクト」ではなく「サブフォーム
コントロール」とすればOkです。
 <現状・例1>
  Forms("Form").SetFocus
  DoCmd.Requery
 <現...続きを読む

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のフォームを使用して、簡易的なメニューフォームを作成しています。コマンドボタンを配置して、アプリケーション終了ボタンを配置したり、フォームを呼び出すボタンを配置したり・・・・
最終的には小さなメニューフォームを表示させたいと思います。
そのためにデザイン画面で作業領域(方眼状のもの)を小さくしてデザインしたのですが、保存して確認してみると、ある大きさから小さくなりません。
作業領域を小さくしてデザインしても、ビューで確認する画面は一定の大きさから小さくなりません。
どこかに設定があるのでしょうか?
よろしければご指導いただくようお願いいたします。

Aベストアンサー

境界線スタイル=サイズ調節可

この設定になっていませんか?

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む

Qアクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。

それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。

元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか?

よろしくお願いします。

Aベストアンサー

No1 です。
今回の場合には
Docmd.RunCommand acCmdSaveRecord の方が良かったですね
文字通りレコードを保存します。
Requery に引きづられてしまいました (^_^;)

Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか?
http://www.nurs.or.jp/~ppoy/access/access/acF007.html


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

人気Q&Aランキング