お世話になります。
仕訳伝票の入力画面を作成しています。
仕訳登録フォームに サブフォームを2つあります。
うまく説明できないのでコーディングを記入しておきます。
これで仕訳登録フォームから仕訳登録サブ借方フォーム
仕訳登録サブ借方フォームから仕訳登録サブ貸方フォームへはカーソルが移動しますが
仕訳登録サブ貸方フォームから仕訳登録フォームへは移動してくれません
マウスを使わずイベントで移動する方法はありますか
メインフォーム 仕訳登録
Private Sub 目的_LostFocus()
DoCmd.GoToControl "仕訳登録サブ借方"
End Sub
サブフォーム1 仕訳登録サブ借方
Private Sub 借方合計_Click()
Forms!仕訳登録!借 = 合計
DoCmd.GoToControl "仕訳登録サブ貸方"
End Sub
サブフォーム2 仕訳登録サブ貸方
Private Sub 貸方合計_Click()
Forms!仕訳登録!貸 = 合計
DoCmd.GoToControl "仕訳登録"
End Sub
「カレントレコードに'仕訳登録'というフィールドはありません」とメッセージにになりますので
Private Sub 貸方合計_Click()
Forms!仕訳登録!貸 = 合計
DoCmd.GoToControl "Forms!仕訳登録!貸"
End Sub
「カレントレコードに'Forms!仕訳登録!貸'というフィールドはありません」
とエラーメッセージになります。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No.2です。
まず、前回の回答の訂正から(汗)
(補足欄の内容にも関わりがあります)
1個目のGotoControlで、「貸」コントロールがあるサブフォームへの移動を
指定してしまうと、メインフォームではなくサブフォーム側の「貸」への
移動になります(汗)
「貸」コントロールがあるサブフォームから、メインフォーム側の「貸」に
移動する場合は、一旦、メインフォーム側にしかないコントロールに移動
させてから、「貸」に移動します。
DoCmd.GotoControl "閉じる"
DoCmd.GotoControl "貸"
'→メイン側の「貸」に移動
※メインフォームにのみ、「閉じる」コマンドボタンがあるという想定です。
逆に、メインフォーム側から、サブフォーム側の「貸」に移動する場合は、
前回間違えて示したように(汗)、一旦サブフォームに移動させたのちに、
「貸」に移動します。
DoCmd.GotoControl "仕訳登録サブ貸方"
DoCmd.GotoControl "貸"
'→「仕訳登録サブ貸方」側の「貸」に移動
> DoCmd.GoToControl "Forms!仕訳登録!伝票No."
GotoControlでは、あくまでコントロール名しか指定できません。
(「Forms!仕訳登録!伝票No.」というような形で、位置を指定することができない)
仮に、メインフォームにしか「伝票No.」テキストボックスがない場合は、
DoCmd.GotoControl "伝票No."
だけで移動できます。
一方、上で訂正させて戴いた件のように、メインとサブの双方に同名のテキスト
ボックスがある状況で、サブフォームからメイン側に移動させたい場合は、
DoCmd.GotoControl "閉じる"
DoCmd.GotoControl "伝票No."
とします。
ご質問のように、「Forms!仕訳登録!伝票No.」として一発で対応したいという
ことでしたら、やはり「SetFocus」の方が目的に沿うと思います。
Forms!仕訳登録![伝票No.].SetFocus
(別のフォームのコントロールも指定可能)
または
Me.Parent![伝票No.].SetFocus
(VBAの記述場所がサブフォーム内で、移動先がメインフォームの場合のみ)
※「伝票No.」の「.」と、「.SetFocus」の「.」を区別して認識させるために、
「伝票No.」は半角の角括弧([ ])で囲む必要があります。
再度のご回答感謝します。
詳細なご説明に長時間掛けていただいたと推察いたします。
色々勉強になりました。
追伸
内容説明のないままにしてすみません。
メインフォームに 借 貸 のテキストボックスがあり、
二つのサブフォームの合計をこのフィールドに送り、メインフォームで合計の比較をやっています。
No.2
- 回答日時:
「DoCmd.GotoControl」は、その名の通り「コントロールの移動」を行うもの
なので、移動先にはコントロール名を指定してやる必要があります。
従って、「貸」コントロールに移動したい場合は、「貸」を指定してやります。
Private Sub 貸方合計_Click()
Forms!仕訳登録!貸 = 合計
DoCmd.GotoControl "貸"
End Sub
ご質問の例では、「仕訳登録」という「フォーム名」を指定しているために、
「該当コントロールがない」というエラーが返されています。
なお、「サブフォームの方はフォーム名を指定しているのに」と思われるかも
しれませんが、サブフォームは
「メインフォーム上のコントロールとしての名前」と、
「表示するのに使用するフォーム名」
という二つの名前を持っています。
ただ、この2つの名前は同じにすることもできますので、この2つが同名だった
場合は、上記のような疑問が発生してしまうこともあります。
(試しに、メインフォームをデザインビューで開いて、サブフォームの外枠を
ダブルクリックするなどしてサブフォームのプロパティシートを開き、
『その他』タブの『名前』を、現在の「仕訳登録サブ借方」から
「サブフォーム1」にすると、データ表示は今まで通りにできますが、
「DoCmd.GotoControl "仕訳登録サブ借方"」のコードは、ご質問のメイン
フォームに移動させようとした場合と同様のエラーになるようになります)
(なお、「表示するのに使用するフォーム名」というのは、『データ』タブの
『ソースオブジェクト』のことです)
※「仕訳登録サブ貸方」サブフォームにも「貸」という名前のコントロールが
ある場合は、以下のようにするとメインフォーム側の「貸」に移動できます。
(一旦、「貸方合計」ボタンがあるサブフォームへのGotoControlを行う、と)
Private Sub 貸方合計_Click()
Forms!仕訳登録!貸 = 合計
DoCmd.GotoControl "仕訳登録サブ貸方"
DoCmd.GotoControl "貸"
End Sub
・・・「マクロをVisual Basicに変換」を使うと『コントロールの移動』は
「DoCmd.GotoControl」に変換されるので、そこでこの方法を覚えられたのかと
推測しますが、VBAで組まれる場合は、No.1の方が回答されている、「SetFocus」
を覚えてしまわれた方が簡単かもしれません(汗)
(実際の構文としては、「Me.Parent!貸.SetFocus」でもOkのはずです:
「Parent」と「SetFocus」の前は「.」、「貸」の前は「!」なので注意)
この回答への補足
詳しいご回答有難うございます。
SetFocusで解決しましたが
仕訳登録フォーム に 伝票No. というテキストボックスがあります。
DoCmd.GoToControl "仕訳登録"
を
DoCmd.GoToControl "Forms!仕訳登録!伝票No."
としましたがエラーになります
参考までにDoCmd.GoToControlを使ってどのようになるのかお教えいただけないでしょうか
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Access(アクセス) Dlookupにエラーがでてしまう 1 2022/10/31 14:35
- 財務・会計・経理 この仕訳おかしいでしょうか? 3 2023/01/15 13:08
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- Excel(エクセル) エクセルマクロで教えてください 2 2022/05/04 09:07
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- その他(パソコン・スマホ・電化製品) ASUSの保証期間が短い 2 2023/05/02 11:53
- Visual Basic(VBA) VBA 登録ボタンを省略してエンターキーで作業 4 2022/07/09 22:29
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- 確定申告 白色申告のetaxは、手書きで仕上げた申告用紙と収支内訳書をアップロードして提出可能? 1 2023/03/14 04:22
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
-
4
サブフォームの新規レコードに移動したい アクセス
Access(アクセス)
-
5
どこにもフォーカスを当てたくない
Access(アクセス)
-
6
アクセスのサブフォームからメインフォームヘEnterキーで移動したい!!
Access(アクセス)
-
7
サブフォームを非表示させる方法を教えて下さい
その他(Microsoft Office)
-
8
Accessのサブフォームから値を参照する方法について
その他(データベース)
-
9
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
10
Access 別フォームへの再クエリ(更新)がしたい。
その他(データベース)
-
11
ACCESS フォームからサブフォームのデータを更新・入力したい
Access(アクセス)
-
12
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
13
Accessで、サブフォームのあるフォーム内をEnterキーで移動したい
Access(アクセス)
-
14
ACCESSフォーム入力後の確定
Access(アクセス)
-
15
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
16
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
17
サブフォームのイベント取得
Visual Basic(VBA)
-
18
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
19
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
20
空白はダメというエラーの表示(アクセス)
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
差し押さえ
-
帳簿についてです。 塗装業の塗...
-
ACCESSのサブフォームからメイ...
-
店の呼び出しベルの購入、仕訳は、
-
Outlook2003で件名が特定の文字...
-
開業前から持っている商品の仕...
-
司法書士への支払いでの仕訳に...
-
見返勘定とは?
-
産休中、マイナスの差引支給額...
-
キャンペーン 成約特典の仕訳
-
機械リース屋から作動油を買い...
-
マイナスの請求書 仕訳
-
棚卸差異の振替伝票処理について
-
普通預金に振込まれた家賃収入...
-
連結決算の開始仕訳について
-
商品が破損していた場合の仕訳...
-
勘定科目教えてください
-
勘定元帳に転記漏れがあった場...
-
来客の宿泊費
-
振替伝票の金額にマイナス表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
帳簿についてです。 塗装業の塗...
-
差し押さえ
-
振替伝票の金額にマイナス表示...
-
商品が破損していた場合の仕訳...
-
普通預金に振込まれた家賃収入...
-
貸し切りバスを借りた場合の仕訳
-
マイナスの請求書 仕訳
-
見返勘定とは?
-
Outlook2003で件名が特定の文字...
-
機械リース屋から作動油を買い...
-
崖っぷちサラリーマンは崖っぷ...
-
来客の宿泊費
-
ACCESSのサブフォームからメイ...
-
小額の店内装飾品について
-
底地を購入した場合の仕訳
-
店の呼び出しベルの購入、仕訳は、
-
勘定元帳に転記漏れがあった場...
-
勘定科目教えてください
-
レンタカー事業での仕訳
-
役員退職慰労引当金の仕訳
おすすめ情報