画像のようにフォーム上のコントロールがかぶった場合、
vbaでどちらを前面にするかを切り替える事は可能でしょうか?

今コマンド0が最前面ですが
VBAでコマンド3を最前面にする方法を教えてください。

「vbaで「最前面に」とする方法は?」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (1件)

Forms!そのフォーム名!コマンド3.InSelection = True '選択状態にする


DoCmd.RunCommand acCmdBringToFront
'acCmdSendToBack '最背面はこちら

ですかね。
    • good
    • 2
この回答へのお礼

出来るとは思わなかったので嬉しいです!

お礼日時:2013/01/22 23:44

このQ&Aに関連する人気のQ&A

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

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

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

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

QACCESS フォーム、クエリの最前面表示について

ACCESS フォーム、クエリの最前面表示について
ACCESS2007でメインフォーム、サブフォームを作成し、各フォームはポップアップを有効にしているので、実行すると最前面に表示されますが、サブフォームから開くクエリが最背面に表示されてしまい、いちいちフォームを最小化なり、閉じたりしています。

クエリを最前面に表示させるにはどうしたらいいのでしょうか?

Aベストアンサー

クエリ自身を開いて最前に、でなくて、クエリのデータシートビュー結果を表示するフォームを新たに作って最前に、という方法があります。

「ポップアップ」「クエリ」、でネット検索し事例を確認すると出てきます。

Qサブフォームのコントロールの値を取得したい(VBA)

連続投稿失礼します。

ファーム1のなかにサブフォーム(フォーム2)を設置しました。
フォーム2の中にはテキスト1があります。

VBAでテキスト1の値を取得したいのですがうまくいきません。
フォーム2を開いた状態で、
Sub test1()
MsgBox Forms("フォーム2").Controls("テキスト1")
End Sub
を行なうと、
「あああ」
が返ってくるのですが、
フォーム2を閉じて、
フォーム1を開き、上のコードを実行すると、
「マクロの式、またはVisual Basicのコードで参照されている 'フォーム2'フォームが見つかりません。」
となってしまいます。


普段はフォーム2は閉じ、フォーム1を開いて使うため、
この状態でのVBAコードが知りたいです。

ちなみに変数を代入したいので
「Form_フォーム2.テキスト1」の書き方よりカッコでくくる書き方でご回答いただければ助かります。
よろしくお願いします。

Aベストアンサー

こちらを参考に。
http://support.microsoft.com/kb/113352/ja

Qアクセスのサブフォームからメインフォームへキーで切り替えをする

何度もお世話になっております。m(_ _)m

アクセスのフォームで、サブフォームを作成しています。
EnterキーまたはTabキーで、フォームの中を進んでいくと、メインフォームのフィールドからサブフォームのフィールドへ進みます。
この進む順番は、タブオーダーで設定できるので問題ないのですが、
サブフォームの情報を入力し終えて、メインフォームへカーソルを飛ばしたい場合、どうすればいいのでしょうか?
そのままEnterやTabを押しても、サブフォームの中の新規レコードが追加されるだけです。
自分でキーなどを設定できるのであれば、なおさら良いのですが・・・
とりあえず、基本的な操作方法として、サブフォームからメインフォームへ移るキーを教えてほしいです。

よろしくお願いします。

Aベストアンサー

Ctrlキーを押しながらTabキーを押せば、サブフォームからメインフォームに戻れます。

なお、ご質問とは関係ありませんが、フォームヘッダ・フォームフッタと詳細領域を行き来したい場合は、
「F6」キー(単独)で行えます。

QエクセルVBAのユーザーフォーム上のコマンドボタンに「フォントの色」の

エクセルVBAのユーザーフォーム上のコマンドボタンに「フォントの色」の機能を搭載したいのですが、具体的にどういうマクロを書けばいいのかわからずに困っています。

CommandBars.FindControl(ID:=401).Execute

以下のような行をコマンドボタンに登録してみたのですが、実行するとコマンドメニュー上の「フォントの色」ボタンの下に、色の選択肢がポップアップされてしまいます。ユーザーフォーム上のボタンのしたに、色選択のポップアップを表示したいのですが、どなたか方法をご教示いただけますと幸いです。

Aベストアンサー

モジュール冒頭に追加。
Option Explicit
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMillsecounds As Long)

Private Sub CommandButton1_Click()の後半を変更。

  With Application.CommandBars("Font Color")
    .Position = msoBarFloating
    .Left = L * DPI / PPI
    .Top = T * DPI / PPI
    .Visible = True
    While .Visible
      Sleep 1
      DoEvents
    Wend
  End With
  Me.CommandButton1.BackColor = ActiveCell.Font.Color
End Sub

とやるとポップアップを閉じたタイミングで反映します。
...あまり深く考えてないです。&そんなに検証してないのでうまくいかなかったら工夫してみてください。

モジュール冒頭に追加。
Option Explicit
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMillsecounds As Long)

Private Sub CommandButton1_Click()の後半を変更。

  With Application.CommandBars("Font Color")
    .Position = msoBarFloating
    .Left = L * DPI / PPI
    .Top = T * DPI / PPI
    .Visible = True
    While .Visible
      Sleep 1
      DoEvents
    Wend
  End With
  Me.CommandButton1.BackColor = Acti...続きを読む

QAccess2003でフォームにあるコマンドボタンで更にフォームを開く

Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。


Access2003で社員情報管理のデータベースを作成中です。
社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。

この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、以下のようなVBAを記述しました。

Private Sub コマンドボタン_Click()

DoCmd.OpenForm "詳細情報フォーム"

Forms![詳細情報フォーム![社員番号].DefaultValue = Me![社員番号]

End Sub

【社員番号】は7ケタの半角英数で、社員によって、数字だけの場合と、英数混じっている場合とがあります(データ型はテキスト型にしてあります)。

困っているのは、

1.上記を実行した際に、数字だけの社員番号は問題ないのですが、英数混じりの場合だと"社員番号"テキストボックスが「#Name?」という表示になってしまう

2."基本情報フォーム"のコマンドボタンをクリックして新規の"詳細情報フォーム"を開き(社員番号のみが反映され、他の項目は空欄の状態)、詳細情報を入力→保存したあと、別の社員番号で"基本情報フォーム"を開き、コマンドボタンで"詳細情報フォーム"を開くと、前に入力した社員の情報が出てきてしまう。
(つまり、"詳細情報フォーム"のもととなるテーブルに、1行でもレコードがあると、それが出てきてしまう。)

【詳細情報】は、
1.データを入力する社員としない社員とがいる
2.新規でレコードを作成する場合と、既存のレコードを上書きする場合とがある

ので、もととなる"詳細情報テーブル"にその【社員番号の】レコードがなければ新規入力画面を、レコードがあればそのレコードを呼び出す形にしたいのですが、英数混じりの表示の件も含め、どうすれば、正しく表示されるか教えていただきたいです。
ぜひぜひよろしくお願いします。

Access2003でフォームにあるコマンドボタンで更にフォームを開くときのVBA記述で困っています。


Access2003で社員情報管理のデータベースを作成中です。
社員の情報を入力するにあたり、【基本情報】と【詳細情報】とでフォームを分けてあり、【詳細情報】を入力したい場合は、"基本情報フォーム"にあるコマンドボタンをクリックして"詳細情報フォーム"を開くようになっています。

この際、"基本情報フォーム"で開いている社員の【社員番号】を"詳細情報フォーム"の【社員番号】欄にも自動的に表示させるため、...続きを読む

Aベストアンサー

> "詳細情報フォーム"のもととなるテーブルに、1行でも
> レコードがあると、それが出てきてしまう。

これに関しては、
 a)詳細情報フォームのレコードソースに使用している
  テーブルから、基本情報フォームのデータを絞り込み
  条件とするクエリを作成し、これを詳細情報フォーム
  のレコードソースにする
 b)詳細情報フォームを開くときに、基本情報フォームの
  データでフィルタを掛ける
の、おおまかに2種類の対処方法があります。

使い勝手などからすると「a」の方がよいのですが(→「b」
の方法だと、右クリックメニューなどでフィルタを解除すると
現状と同じになってしまう)、現状からの改変が少ない分、
わかりやすいと思われる、「b」の方法を以下に提示します:
(英数混じりの場合への対処も組み込み済みです)

Private Sub コマンドボタン_Click()

  '変数の宣言
  Dim strCode As String

  '『社員番号』を「"」(ダブルクォート)で囲んだ形で記録
  '(→既定値やフィルタ条件に文字列を指定するには必須)
  strCode = Chr(34) & Me![社員番号] & Chr(34)

  '社員番号をフィルタ条件として指定して詳細情報を表示
  '(詳細情報未登録の社員の場合は、空のレコードが表示されます)
  DoCmd.OpenForm "詳細情報フォーム", , , "社員番号=" & strCode

  '既定値(DefaultValue)を設定
  '(既定値への代入なら、入力済みのデータは変更されません)
  Forms![詳細情報フォーム]![社員番号].DefaultValue = strCode

End Sub


・・・以上です。
コード中のコメントにも書きましたが、文字列を既定値やフィルタ
条件に使用する場合は、ダブルクォート(場合によってはシングル
クォート)を括ってやる必要がある、ということです。
(そうしないと、社員番号が「ABC123」の場合、その文字列では
 なく「ABC123」というフィールドやコントロールの値が参照されます
 (→そして該当するものがないので「#Name?」エラーが発生、と))

なお、日付/時刻型のデータを扱い場合は、今度は「#」で値を
括ってやる必要があります(「#2010/05/06#」など)ので、併せて
今後の参考まで。

> "詳細情報フォーム"のもととなるテーブルに、1行でも
> レコードがあると、それが出てきてしまう。

これに関しては、
 a)詳細情報フォームのレコードソースに使用している
  テーブルから、基本情報フォームのデータを絞り込み
  条件とするクエリを作成し、これを詳細情報フォーム
  のレコードソースにする
 b)詳細情報フォームを開くときに、基本情報フォームの
  データでフィルタを掛ける
の、おおまかに2種類の対処方法があります。

使い勝手などからすると「a」の方がよいのですが(→「b」
の...続きを読む


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

人気Q&Aランキング

おすすめ情報