こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ひとつのコマンドボタンで2つ以上の機能を持たせたい

ひとつのコマンドボタンで2つ以上の機能を持たせることは可能でしょうか。「現状は2つの機能で充分ですが、関連する内容でもあり知りたいと思います」

「使用環境」
 Access2007、Windows10

「やっていること」

Accessの操作の質問で「皆様から頂戴しましたドバイス情報」をデータベース化しております。データベースの検索方法は「絞込検索」「コンボボックス検索」「キーワード検索」「個別項目検索」の4つで行っています。4つの検索方法採用の理由ですが、かなり過去に教えて頂いた情報もあり、理解不足を伴う記載になっていて上手く検索できない事情からです。

「こまっていること」

Access操作検索総合フォーム(コマンドボタンが4つ)あり、その内の1つ「例えばフォームの(絞込検索)」が開いていて、他の「コンボボックス検索」「キーワード検索」「個別項目検索」の何れかに変更して開きたい時、現在開いている「絞込検索」フォームを移動させないと、変更する為のAccess操作検索総合フォームを確認できません(当然ですが)。


「やってみたこと」

1,Access操作検索総合フォームで「絞込検索」「コンボボックス検索」「キーワード検索」「個別項目検索」の何れのフォームが開いても常に最小化させる「組み込みマクロ(最小化)」設定をしました。

2,4つのコマンドボタンに関連付けられたフォーム「絞込検索」「コンボボックス検索」「キーワード検索」「個別項目検索」の全てに、ひとつのコマンドボタンを配し(作成)し、組み込みマクロの「クリック時」の設定にAccess操作検索総合フォームを「元のサイズに戻す」、ダブルクリック時にAccess操作検索総合フォームを「最小化」するの設定を行いましたが上手く行きませんでした。


マクロの操作は全て組み込みマクロで、プロシージャ―ではありません。宜しくお願いします。

投稿日時 - 2017-01-21 09:48:36

QNo.9283902

困ってます

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

VBAをもう一つ
基準日を入力して、基準日の変更イベントで
基準日の月初日を開始検索日に月末日を終了検索日に求めます
メニューのデザインビューで
[テキストボックスを作成]→[デザイン]→[基準日(基準日ラベルの右の非表示ボックス)]
→[データタグの規定値欄右端の…]→[関数の左の+]→[組み込み関数]→[日付/時刻]
→[dateをダブルクリック]→[OK] :フォームを開いたときに今日の日付

次行からVBAの記述に入ります(コーディングと呼ぶ)
エクセルの 月初関数、月末関数有りませのでコーディングします。
→[Private Sub とEnd Sub の間の行に次の2行を追加します]
開始検索日 = 基準日 - Day(基準日) + 1
終了検索日 = 開始検索日 + 35 - Day(開始検索日 + 35)

続いてメニューを開いたときに
開始検索日、終了検索日を計算する処理をします
→[コーディングシート上辺左の入力欄の右端のv]より
同じ命令文を入力して

Private Sub 基準日_Change()
開始検索日 = 基準日 - Day(基準日) + 1
終了検索日 = 開始検索日 + 35 - Day(開始検索日 + 35)
End Sub

とします。

ラベルボックスでもイベントは有効です。
得意先登録フォームをラベルボックスで開いてみます
{メニューをデザインビューで開く}→{デザインリボン}→{ラベル}→{得意先登録と入力}
→{プロパティーシート}→{その他タブ}→{名前入力欄に得意先登録と入力}
→{イベントタグ}→{クリック時欄右端…}→{コードビルダー}→{OK}→{次のコーディング}

Private Sub 得意先登録_Click()
DoCmd.OpenForm "得意先登録"
End Sub

命令文「Docmd」は参考URLに使用例付きの説明があります。

次の得意先のコンボボックスから見積書の検索で一方的な説明を終わります。

参考URL:http://www.geocities.jp/cbc_vbnet/kisuhen/docmd.html

投稿日時 - 2017-01-24 15:46:17

補足

いつもお世話になります。体調不調(風邪)にてご返事が遅れて申し訳ございません。お恥ずかしい限りです。

投稿日時 - 2017-01-27 13:31:07

お礼

chayamati レベル11様へ

「Qのはしごはルール違反」のことを知りませんでした(ご指摘ありがとうございました。)。考えてみれば、自身で課題を発見して於いて研究すらしない姿勢で、全て質問「聞き取り」する姿勢は駄目ですよね。前回(データのコントロール)は課題取り組みでのご返事をいたしました。更に、今回(フォームのコントロール)も同様なご返事になり、敷居の高さを感じるとともに「chayamati レベル11様」との間「Okwave上」で完結出来なくて辛い選択となりました。尚、難易度は別にして自身でやりたいと思ったことであり、なんとしても完結させたいと思っています。私のわがままですいません。

その思いの原点ですが、社会人当時に我流でしたがAccessを仕事「私的」の道具として、職場の移動に併せて作り直し利用してきました。Accessを利用する様になった切っ掛けですが、ベテラン社員が丸一日かかっていた集計や分析の仕事「販売データ」を、若い社員が数分「Accessのツール作成に半日」で出来てしまった場面を見た瞬間でした。

その後、我流でしたがデータを入力しておいて検索するフォームを作成して仕事に役立て「作業時間の短縮」ました。更に、取引販売店への値引き額「キャンペーン等で変更が多く計算機と手作業が一般的でした」のフォームを作成して「作業時間」と「精神的な負担軽減」に利用しました。以上程度の我流利用でしたので、リレーショナルシップは聞いたり質問「あればかなり昔」したことがあったかもしれませんが、「chayamati レベル11様」もご周知の通り現在も全く使えていませんし使っていません。

現役時代「現在はリタイア」に感じていたことですが、今時の新入社員は実に苦労「心的」が多くて気の毒の様に感じておりました。新人と先輩とのスキル差「その会社の社員として」は当然ですが、苦労「肉体だけでなく心的な苦労を伴う」の多さが分野の広さに言えると思います。現役時代の後半では「訪問接客、パソコンの操作(提案書の作成、活動の履歴入力、稟議書)、その他」と覚えることが盛りだくさんです。新人の入れ替「退職に伴う第二新人等」えは凄まじいものでありました。学生の多くは無防備(会社が教えるのが当たり前)で社会人として突入してくるのが原因ですが、学生時代から入社する会社が決まっている優等生は別にして、、一般の学生ならそれは当然とも言えますので仕方がないですが。私、持論ですが社会人になってから教えてくれる塾が必要な感じがしています。chayamati レベル11様へ

若い方がキャリアを積む前に潰れてしまう「育ててきた親御さんからすれば・・・。」。実際に現役時代に年間十数人「新人に限らず全年代含む(現在は?)」の心的病者の長期療養者「入院者も含め」が居たと聞きました。「chayamati レベル11様」の様なスキルのある方なら救える人がいると思います。「事務職の定形作業(大手では個別個人的なものを除き不要なものも)及び非定型作業の自動化、日々作業の対応履歴の活用で対処時間の短縮(営業職や事務職で多いのが書類の探し出しと言われます)」とか、日々の活動の記録に基づく報告書の作成支援、成功事例「分析による項目化が必要ですが」のデータベース化による提案書の作成支援、対応のデータベース化で問合せ対応の即答回答の実現等、かなり多岐な分野での支援「行っている作業を分析し、Accessで可能な方策を探し指導する(ビジネス支援スクールみたいな)」が可能かと思います。貴方ならできそうです。

長くなりましたが、chayamati レベル11様にアドバイスを頂いて感謝しています。今回が切っ掛けで30項目「Accessアドバイス管理、購入品管理、資格かんり、他・・。」の見直しができました。日記などは記載しっぱなしで読み直す切っ掛けになりました。本当にありがとうございました。

本当にありがとうございました。「昔の人は言いました。(”努力に憾みなかりしか。)」。しかし、今回はお恥ずかしい限りです。しかし、ときには質問をお願いすることがあるかと思います。その時は、申し訳ないですが・・・・。宜しくお願いいたします。今回は醜態を晒してゴメンナサイ。

投稿日時 - 2017-01-31 09:52:13

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

VBAをもう一つ
基準日を入力して、基準日の変更イベントで
基準日の月初日を開始検索日に月末日を終了検索日に求めます
メニューのデザインビューで
[テキストボックスを作成]→[デザイン]→[基準日(基準日ラベルの右の非表示ボックス)]
→[データタグの規定値欄右端の…]→[関数の左の+]→[組み込み関数]→[日付/時刻]
→[dateをダブルクリック]→[OK] :フォームを開いたときに今日の日付

次行からVBAの記述に入ります(コーディングと呼ぶ)
エクセルの 月初関数、月末関数有りませのでコーディングします。
→[Private Sub とEnd Sub の間の行に次の2行を追加します]
開始検索日 = 基準日 - Day(基準日) + 1
終了検索日 = 開始検索日 + 35 - Day(開始検索日 + 35)

続いてメニューを開いたときに
開始検索日、終了検索日を計算する処理をします
→[コーディングシート上辺左の入力欄の右端のv]より
同じ命令文を入力して

Private Sub 基準日_Change()
開始検索日 = 基準日 - Day(基準日) + 1
終了検索日 = 開始検索日 + 35 - Day(開始検索日 + 35)
End Sub

とします。

ラベルボックスでもイベントは有効です。
得意先登録フォームをラベルボックスで開いてみます
{メニューをデザインビューで開く}→{デザインリボン}→{ラベル}→{得意先登録と入力}
→{プロパティーシート}→{その他タブ}→{名前入力欄に得意先登録と入力}
→{イベントタグ}→{クリック時欄右端…}→{コードビルダー}→{OK}→{次のコーディング}

Private Sub 得意先登録_Click()
DoCmd.OpenForm "得意先登録"
End Sub

命令文「Docmd」は参考URLに使用例付きの説明があります。

次の得意先コンボボックスから見積書検索で一方的な説明は終了したいと思います。
記述漏れ、誤変換等のミスがあったかと思いますが、ご不明の点はあきらめず補足質問、新規Qで解決してください。自分もAccessのQには気を配ります。

参考URL:http://www.geocities.jp/cbc_vbnet/kisuhen/docmd.html#gotocontorol

投稿日時 - 2017-01-24 15:31:12

ANo.2

専用の「メニュー」フォームを作成して、そのフォームにコンボボックスを作成。
コンボボックス作成時にフォーム名を登録してコンボボックスで検索する。
フォームにコマンドボタンを配して、クリック時のイベントにご指導のVBAを記入すればいいでしょうか。
---------------------------------------------------------------------------------------------------------------------
少し違います。
専用の「メニュー」フォームを作成して、そのフォームに開始検索日と終了検索日配置して
これらのテキストボックスの書式タブの書式を日付にします。この処理で日付はこのフィールドの右端よりカレンダー入力が可能になります
[空のフォーム]
→[テキストボックス]→[フォームの配置位置]→[次へ]→[次へ]
→[ボックス名欄に開始検索日と入力]→[プロパティーシート]→[書式タブ]
→[書式欄の右端のv]→[日付(s)]
→[テキストボックス]→[開始検索日の次の位置]→[次へ]→[次へ]
→[ボックス名欄にかいし終了検索日と入力]→[プロパティーシート]→[書式タブ]
→[書式欄の右端のv]→[日付(s)]→[イベントタブ]→[終了検索日]
→[フォーカス喪失時欄の右端…]→[コードビルダ]
ここまぜで
Private Sub 終了検索日_Exit(Cancel As Integer)

End Sub
とVBAの編集画面になるので間間行に
DoCmd.OpenForm "見積書登録", , , "forms!メニュー!開始検索日<=日付 and forms!メニュー終了検索日>=日付"
と入力します。

コンボボックスによる検索は得意先マスタ、商品マスタ等をデータ元にしたコンボボックスの変更時イベントより行います。

投稿日時 - 2017-01-23 22:58:07

ANo.1

今日はchayamatiです。
Qのはしごはルール違反のようですね
画像添付の図を添付します

>「皆様から頂戴しましたドバイス情報」をデータベース化しております。
これのURL,テーブル内容等提示願います

>マクロの操作は全て組み込みマクロで、プロシージャ―ではありません。宜しくお願いします。
VBAが必要です。
次は検索項目はフォーム「メニュー」に検索項目のテキストボックスまたはコンボボックスを配置してこのボックスのイベントで検索フォームを開く例です
Private Sub 検索終了日_Exit(Cancel As Integer)
DoCmd.OpenForm "検索結果", , , "forms!メニュー![検索開始日]<=日付 and 日付 <= forms!メニュー![検索終了日]"
End Sub

投稿日時 - 2017-01-22 15:46:31

補足

本当にご面倒をお掛けしております。専用の「メニュー」フォームを作成して、そのフォームにコンボボックスを作成。コンボボックス作成時にフォーム名を登録してコンボボックスで検索する。フォームにコマンドボタンを配して、クリック時のイベントにご指導のVBAを記入すればいいでしょうか。宜しくお願いします。

投稿日時 - 2017-01-23 10:39:33

あなたにオススメの質問