タブコントロール選択時のモジュール書き換え方法

このQ&Aのポイント
  • タブコントロールの選択に応じて異なるモジュールを実行するための方法を教えてください。
  • フォームAを選択した場合はAction1を実行し、フォームBを選択した場合はAction2を実行するモジュールを作成しましたが、タブにフォームを入れることになったため、isOpen関数が使えなくなりました。
  • タブAを選択している場合はAction1を、タブBを選択している場合はAction2を実行するモジュールに書き換える方法を教えてください。
回答を見る
  • ベストアンサー

access タブコントロールの選択

フォームAを選択したらAction1,フォームBを選択したらAction2, というモジュールをつくったのですが、そのフォームをタブに入れることにしたため isOpenが使えなくなってしまいました。 タブAを選択していたら、Action1,タブBを選択していたら、Action2, というモジュールに書きかえるにはどうしたらいいですか? ----------------------- Function GetValue() If IsOpen("F_C_2_☆新規作成_パターン1") Then GetValue = Forms![F_C_2_☆新規作成_パターン1]![見積番号] ElseIf IsOpen("F_C_3_☆新規作成_パターン2") Then GetValue = Forms![F_C_3_☆新規作成_パターン2]![見積番号] End If End Function

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

GetValue が標準モジュールなら Function GetValue2() select case forms!フォーム名!タブコントロール名.value case 0 '一番左 getvalue2 = forms!フォーム名!タブコントロール名.pages(0).controls![F_C_2_☆新規作成_パターン1]![見積番号] case 1 getvalue2 = forms!フォーム名!タブコントロール名.pages(1).controls![F_C_3_☆新規作成_パターン2]![見積番号] end select End Function ※『フォーム名』はタブコントロールを置いてあるフォームの名前に。 GetValue がフォームモジュールにあるのなら、forms!フォーム名 を me に書き換えても可。

eririn777
質問者

お礼

ありがとうございました!これでばっちりできました! タブの記述難しいです。。。また宜しくお願いします。

関連するQ&A

  • タブコントロールを含んだフォームのスクロール位置

    フォームの中にタブコントロールを入れ、その中にさらにフォームを入れ込んであります。 タブをクリックすると、タブ内のフォームの中のサブフォームにフォーカスが行ってしまうので メインフォームの中にある「見積番号」のフィールドにフォーカスが行くように 下記のVBAを書いてみたのですが、うまくフォーカスが行きません。 何が原因なのでしょうか。 ---------------------------- Private Sub パターン1_Click() Forms!F_C_1_☆新規作成_パターン.SetFocus Forms!F_C_1_☆新規作成_パターン!見積番号.SetFocus End Sub

  • access タブコントロールの使い方。

    宜しくお願いします。 使用環境:WinXP access2002 今、タブを使ったaccessフォームの作成を勉強しています。 初歩的な質問かも知れないですが、 できそうで、できないところがあるのでご指導お願いします。 まずテーブルが3つあります。 会員テーブル 種目テーブル 内訳テーブル これらをフォーム上でタブコントロールを使いタブで 操作したいのですが、手順としてはこういう具合に行いました。 1.フォーム上にタブコントロールを設置してページを3つにする。 2.ツールボックスから「サブフォーム/サブレポート」を選び、それぞれの   タブにテーブルを設置する。 ※ リレーションシップは3つとも組んであります。 そこでいざ、フォームビューを開いてみると、データシート形式で 表示されました。 実際にはタブ内で単票や帳票形式でやりたいので、右クリック→プロパティで 変更ができるかどうか確認したのですが、変更する項目がありません。 今までいくつかaccessデータベースを作ったのですが(VBAは抜きで)、 必ず、「データシート」か「帳票形式」か、など選択するところがあったと思いますが、 今回はなぜかありません。 そこで教えてください。 具体的にはタブを使って、 会員テーブル・・・単票形式 種目テーブル・・・帳票形式 内訳テーブル・・・帳票形式 のフォームを作りたいのですが、どうすればよいのでしょうか? そもそものやり方が違うのでしょうか。 初めの一歩に躓いています、お知恵をお貸しください。 宜しくお願いします。

  • ACCESS97 サブフォームのレコードソースプロパティーを変更したい。

    フォームの中にサブフォーム(データシート)が1つあります。 元のフォームのチェックボックスのオン・オフでサブフォームのレコードソースプロパティーを変更すると、 実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていません。がでます。 サブフォームのビューは変更したくありません。 だれか助けてください。 If Me.未送信のみ = -1 Then Forms!F_処理選択!F_理選択サブ.RecordSource = "F_処理選択サブ_1" Else Forms!F_処理選択!F_処理選択サブ.RecordSource = "F_処理選択サブ_2" End If

  • Access マクロビルダーで使うIF文について

    よろしくお願いします。 Access2010のマクロビルダーを使って以下を作成しています。 ----------------------------------- ●やりたいこと 1.フォーム内にあるリスト(項目は"1"か"2")から選択する。 2.リストを選択した後、マクロ実行ボタンをクリックする。 3.リストで!”1”を選べばクエリ1がExcel出力される。   リストで!”2”を選べばクエリ2がExcel出力される。 ●フォーム フォーム名:フォーム1 リスト名:リスト1 (項目:"1","2") ●マクロビルダー If [Forms]![フォーム1]![リスト1]=1 Then アクション:「書式設定を保持したままエクスポート」 オブジェクト名:クエリ1 出力ファイル形式:*.xlsx 自動起動:いいえ 出力品質:画面 Else If [Forms]![フォーム1]![リスト1]=2 Then アクション:「書式設定を保持したままエクスポート」 オブジェクト名:クエリ2 出力ファイル形式:*.xlsx 自動起動:いいえ 出力品質:画面 If文の最後:メッセージ「リストから選択してください」 ----------------------------------- 以上を実行すると「エラー13 型が一致しません」とエラーが出てしまいます。 If文でつまずいている状況で、 検索してもなかなか有効な解決方法が見つかりません・・・。 どこを間違えているのでしょうか。

  • 20年近く使い続けた請求書システムを変えることに抵抗があり、新しいフォ

    20年近く使い続けた請求書システムを変えることに抵抗があり、新しいフォームを付け加えることなどで対応できないか考えています・・・良い案があったら教えてください! 以下の順序で請求先によって消費税の計算方法を区別しようとしたのですが、中身が大幅に変わることで後々の不具合などに応対できるか心配で、他の案を探しています! 1標準モジュールに以下のコードを作成しました。 Public Function TaxInterPre(iNum As Variant, cVal As Variant) As Currency On Error Resume Next TaxInterPre = 0 If (IsNull(iNum) Or IsNull(cVal)) Then Exit Function Select Case iNum Case 1 TaxInterPre = Int(cVal) Case 2 TaxInterPre = funcSG(cVal) End Select End Function Public Function funcSG(ByVal xCy As Currency) As Currency If xCy > 0 Then xCy = Int(xCy + 0.5) Else xCy = Int(xCy - 0.5) End If funcSG = xCy End Function 2得意先名テーブルに税区分フィールドを追加し、入力規則を1 Or 2としました。 3請新フォーム(請求書新規作成)と請修フォーム(請求書修正)のレコードソースとなっているクエリにそれぞれ税区分フィールドを追加しました。 4以下のマクロを作成しました。 アクション 値の代入 アイテム [Forms]![請新フォーム]![消費税額] 式 TaxInterPre ( [税区分] , Forms![請新フォーム]![税抜金額] *0.05) アクション 値の代入 アイテム [Forms]![請修フォーム]![消費税額] 式 TaxInterPre ( [税区分] , Forms![請修フォーム]![税抜金額] *0.05) 5得意先名登録フォームに税区分フィールドを追加しました。

  • ACCESS マクロでWhere条件式について質問

    マクロについてですが、「アクションを開く」アクションで引数のWhere条件式について質問です。 やりたいことは、フォームA・フォームBがあり、共通のフィールド"顧客ID"があります。この二つのフォームを連動させて並行に表示させたいと思います。 マクロに登録する内容は、 アクション「フォームを開く」 引数(フォーム名)フォームA   (Where条件式)[Forms]![フォームA]![顧客ID]=[Forms]![フォームB]![顧客ID] アクション「オブジェクトの選択」 引数(オブジェクトの種類)フォーム  (オブジェクト名)フォームB 上のように(Where条件式)で[Forms]![フォームA]![顧客ID]]=[Forms]![フォームB]![顧客ID] とすると、レコードは何も表示されませんでした。 しかし、[顧客ID]=[Forms]![フォームB]![顧客ID]とすると正しく表示します。なぜ、[Forms]![フォームA]![顧客ID]]=[Forms]![フォームB]![顧客ID]とすると、ダメなのでしょうか??

  • Access 自作関数

    お世話になります。アクセス2000です。 モジュールで以下のようなものを書きました。 月末日を求める関数を作りたかったのです。 Public Function Gend()   Dim ge As Date   ge = CDate([Forms]![F_Main]![年] & "/" & [Forms]![F_Main]![月] & "/" & "01")   ge = DateAdd("m", 1, ge)   ge = DateAdd("d", -1, ge) End Function 年は西暦4桁(2004)月は2桁(02)が入っています。 このGend()をクエリーの抽出条件欄に「 <=Gend() 」って書きましたが上手く動きません。エラーにはならないのですが、抽出件数が0件でした。(実際に#2004/02/29#ってやるとちゃんと出るのです) 初めて自作関数なるものを作成したのでどこが違うのかさっぱりです。 お助けを・・・・!

  • 税区分によって消費税を区別

    見積請求納品システムというアクセス2000で請求書等を作成しています。 (Windows XP home edition) その中で今回関係するのは 得意先名テーブル 請新フォーム 請修フォーム だと思いますが補足が必要かもしれません。 1.アクセスのモジュールにTax関数を作成しました。 Public Function Tax(Anum As Variant, Bnum As Variant) As Currency On Error Resume Next Tax = 0 If (IsNull(Anum) Or IsNull(Bnum)) Then Exit Function Select Case Anum Case 1 Tax = Int(Bnum) Case 2 Tax = Int(Bnum + 0.9) Case 3 Tax = Format(Bnum, "0") End Select End Function 2.得意先名テーブルに税区分フィールドを作成しました。 3.請求書新規作成フォームと請求書修正フォームのレコードソースとなっているクエリに税区分フィールドを追加しました。 4.請求書新規作成フォームと請求書修正フォームの工数・数量、単価、金額(それぞれ1~10)のテキストボックスのフォーカス喪失時イベントにあるマクロを以下のようにしました。 アイテム [Forms]![請新フォーム]![消費税額] 式     Tax([税区分],[Forms]![請新フォーム]![税抜金額]*0.05) アイテム [Forms]![請修フォーム]![消費税額] 式     Tax([税区分],[Forms]![請修フォーム]![税抜金額]*0.05) 上記のようにしてフォームで工数・数量、単価、金額のいずれかを入力すると 「指定した式に、Microsoft Access が見つけることができない関数名が含まれています。」 となり上記のアイテムと式が表示されます。 モジュールで関数を作成したのにどうしてできないのでしょうか・・・ 教えてください!!!

  • Access2003 マクロ フィルタ

    こんにちは、 Access2003 マクロ フィルタで あ行だけを抽出しなさいという命令を書いたところ、 [顧客名称(読み)] Like "[あ-お]*"と書くと正常にあ行のリストを表示 [Forms]![F_顧客リスト]![顧客名称(読み)] Like "[あ-お]*"というように[Forms]![F_顧客リスト]!を追加して書くと何も表示されなくなり正常な動作をしてくれませんでした。 いったいなぜでしょうか? 何かお分かりの方がいましたら教えてください。 よろしくお願いします。 顧客リストから絞り込むようなフォームを作ろうとしています。 1.[F_顧客リスト]というフォームに[frm_五十音フィルタ]という[オプショングループを作成] 2.[frm_五十音フィルタ]オプショングループ内に[tgl_あ]というトグルボタンと作成 3.[frm_五十音フィルタ]オプショングループ内に[btn_顧客名称(読み)]というコマンドボタンと作成 4.マクロで[条件]に[Forms]![F_顧客リスト]![frm_五十音フィルタ]=2 [アクション]に[フィルタの実行] Where条件式に上記のように、 [顧客名称(読み)] Like "[あ-お]*"あるいは、 [Forms]![F_顧客リスト]![顧客名称(読み)] Like "[あ-お]*"と 書きました。

  • フォームモジュールだとエラーになる理由は?

    http://okwave.jp/qa/q7837097.html でも質問した者ですが別の事がやりたくなってきちゃいました。 と言うのは、 ページのインデックスと同じ番号をページ名とページの表題に設定したいと思いました。 フォームにタブ0を置き、ページを5つくらいにしました。 その際、ページインデックスが0の時にページの名前はページ1になり、 ページインデックスが1の時にページの名前はページ2になり・・・ とひとつずつずれてるのを前回の質問で学習しました。 そしてさらにコマンドボタンを置いてそのコマンドボタンを押下すると ページインデックスの値を ページ名とページの表題に設定するVBAコードを作ったのですがエラーになってしまいます。 フォームモジュールに ********************************************************** Private Sub コマンド_Click() 'SetFocusメソッドはデザインビューでは使えない Dim ctl As Control Dim i As Long DoCmd.OpenForm "フォーム1", acDesign For Each ctl In Forms("フォーム1").Controls If ctl.ControlType = acPage Then Forms("フォーム1").タブ0.Pages(i).Name = "ページ" & i Forms("フォーム1").タブ0.Pages(i).Caption = i i = i + 1 End If Next ctl End Sub ********************************************************** としました。 これを実行すると Forms("フォーム1").タブ0.Pages(i).Name = "ページ" & i の部分で 実行時エラー 29054 「指定のコントロールを追加 名前の変更 または削除することはできません」 となります。 終了(E)しか選択できない状態でデバッグ(D)は選択できないです。 でも、これと全く同じコードを標準モジュールに貼り付けて実行すると問題なく動きます。 なぜフォームモジュールだとエラーになるのでしょうか? 2003でも2007でもエラーになります。 ご回答よろしくお願いします。

専門家に質問してみよう