次の方法で共有

終)コントロールのダブルクリックイベントで他のコントロールの値を取得したい。

Anonymous
2018-06-29T14:34:14+00:00

言葉では説明しにくいのですが、久々にアクセスで新たなアプリを作り始めました。

アップした画像はフォームのF_10予定表示に配置してあるタブコントロール(予定タブ)の

今週をクリックした画面です。aという表計算フォームを張り付けています。

そのヘッダーにあるテキストコントロールの名前はD1,D2,D3・・・となってます。

動的になっており例えばテキスト2Dは

=IIf([2_ラベル].[Caption]=2,Format(DateAdd("d",1,FirstDayinWeek()),"mm/dd"),0)

などとなってます。月曜から1週の始まりにしたかったのでFirstWeekInDay()は

少しいじりました。

その下の1,2,3・・・というラベル、は元データが予約テーブルから担当別&週単位で抽出した

クロス集計クエリーでの結果をすべての時間帯テーブルを利用しテーブル作成クエリーで

今週、次週、来週に相当する3つのテーブルを作り更新クエリーの条件式で"-"を記入しています。

予約テーブルには何週の何曜日が保存されており利用してます。

構造についてはだいたいこんな感じです。

ここで知りたいのは、時間IDが2の行のテキストコントロール2(赤丸で囲った部分)を

ダブルクリックした時に時間IDとD2の値を取得し、確認のためget時間IDに"2"と

get年月日に"06/26"とVBAを使い値の代入をしたいということです。

図で言うと赤丸部分のテキストコントロールをダブルクリックすると黄・黒の部分のテキスト

コントロールの値を取得したいということです。

利用目的はダブルクリックしたテキストコントロールに文字列("-"以外)がなければ

新規予約フォームの指定コントロールに取得したデータを代入し人為ミスを減らし、

また文字列があれば取得したデータを基に保存されている該当データを編集(キャンセルなど)

して、そのあと再クエリ、再描画などで反映と考えてます。

わかりにくい説明かと思いますがよろしくお願いします。

**モデレーター注**

この質問は [Office | Access | Windows 10 | Office 365 for business] のカテゴリに投稿されましたが、内容から判断しこちらのカテゴリに移動いたしました。適切なカテゴリに投稿すると、返信や回答が得られやすくなり、同じ質問を持つ他のユーザーの参考にもなります。

Microsoft 365 と Office | アクセス | 家庭向け | Windows

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

6 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2018-06-30T08:36:12+00:00

    すみません、うだうだやってたら自己解決しました。

    あとはサブフォームのコントロールがアクティブな時の

    サブフォーム名の取得方法を探しています。

    Dim ctlCurrentControl As Control

    Dim strControlName As String

    Dim strControlValue As String

    Dim intTimeValue As Intger

    Set ctlCurrentControl = Screen.ActiveControl

    '時間IDの取得

    intTimeValue = [Forms]![F_10予定表示]![F_12次週].[Form]![時間ID].Value

    'アクティブコントロール名の取得

    strControlName = ctlCurrentControl.Name

    'アクティブなコントロールの値を取得

    strControlValue = IIf(IsNull(ctlCurrentControl.Value), 0, ctlCurrentControl)

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2018-06-30T04:15:24+00:00

    ふと思いつきカッコつけずに表形式のコントロールのダブルクリック時を

    以下のように設定しました。get年月日はTD、get時間IDはTIに変更しています。

    Private Sub Ctl1_DblClick(Cancel As Integer)

    T1 = 1      ' T1に1を割り当てる(週の最初の日の曜日1だから)

            ' のちにFirstDayInWeek()と絡めてyyyymmddを取得

    Forms!F_10予定表示!TD = TI

    T2 = Me!時間ID  'フォーカスしているレコードの時間IDの取得

    Forms!F_10予定表示!TI = T2

    End Sub

    同様に

    Private Sub Ctl2_DblClick(Cancel As Integer)は

    T1=2に変更し、Private Sub Ctl3_DblClick(Cancel As Integer)は

    T1=3と続けて繰り返します。

    https://msdn.microsoft.com/ja-jp/vba/access-vba/articles/form-activecontrol-property-access

    を参考にしたかったのですが・・・引き続き回答をお願いします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2018-06-30T01:02:56+00:00

    ご指摘ありがとうございます。

    方法は先ほど見つけたのですが自分でコメントをつけ自爆したもようです(汗

    編集の仕方もわかりましたので質問内容も編集します。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2018-06-30T00:54:46+00:00

    > 投稿したものを改めて読んだらなんかうろいろと日本語が変なので削除しようと

    思いましたが削除方法がわからないため再度質問します。わかり次第削除します。

    ・こちらのスレッド https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_access-mso_win10-mso_o365b/%e3%82%b3%e3%83%b3%e3%83%88%e3%83%ad%e3%83%bc/134ea008-71f5-4b25-b966-8eda1590a803 ですね。

    以下の手順で削除できます。

    但し、そちらのスレッドにどなたかの返信が付くと スレッドの削除ができなくなります。

    1. そちらのスレッドを開き 質問本文下部の  をクリック、次に [編集] をクリックします・

    1. 「この投稿を移動、編集または削除する」画面が表示されたら 画面下部の [削除] をクリックします。

    1. 確認画面が表示されたら [OK] をクリックします。

    ・尚、先ほど見たら そちらのスレッドに タッカズさんの返信 「削除予定」 があったので 私が削除しました。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  5. 削除済み

    この回答は当社の行動規範に違反したため削除されました。 アクションを実行する前にこの回答を手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。


    コメントはオフになっています。 詳細情報