• 締切済み

ACCESSVBAにてフォーム内項目のプロパティ取得

ACCESSVBAでフォーム内の項目のプロパティを取得したいです。 (その項目はどのテーブルを参照しているかをみたいのです。値集合ソースなどでしょうか?) テーブルのプロパティを取得するプログラムサンプルはあるのでそれを利用して作成しようとしていますが、フォームの見方がわかりません。 テーブルの場合のサンプルでは (うろ覚えです。ごめんなさい) Dim XXXX As tabledef XXXX.attribute などを使用していて、このあたりをフォームに当てはめればよいのではと思っていますが、見当違いでしょうか。 初心者なうえにうろ覚えの内容で申し訳ありません。 よろしくお願いいたします。

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

やってみました。 何らかの形でフォームを開かないと、プロパティが読めませんでした。 Testで画面名と、開き方を指定してあげたら、デバッグ出力を行います。 Public Sub Test()   Call GetFormProp("フォーム1", acNormal) End Sub Public Function GetFormProp(ByVal inFormName As String, Optional inViewMode As AcFormView = acDesign) As String   Dim frmWk  As Form   Dim objProp As Object      DoCmd.OpenForm inFormName, inViewMode, , , , acHidden   Set frmWk = Forms(inFormName)   For Each objProp In frmWk.Properties     Debug.Print objProp.Name & vbTab & GetFormPropValue(objProp)   Next objProp   DoCmd.Close acForm, inFormName End Function Public Function GetFormPropValue(inObjProp As Object) As String On Error GoTo PGMERR   Dim strRet As String   If IsNull(inObjProp.Value) Then     strRet = "《NULL》"   Else     strRet = "「" & inObjProp.Value & "」"   End If    PGMEND:   GetFormPropValue = strRet   Exit Function PGMERR:   strRet = "《エラー:" & Err.Description & " 》" GoTo PGMEND End Function

関連するQ&A

  • AccessVBAでオブジェクトの説明欄を取得したい

    ACCESS97のVBAにて開発をしています。 データベースウィンドウに表示される、各オブジェクトの説明欄の値を取得しようとしています。先日同様の質問内容に対していただいたアドバイスをもとに、DB内の全データベースオブジェクト(「テーブル」や「フォーム」の全てのテーブルやフォーム)を一括して取得しようとしているのですが、テーブル名は取得(デバックウィンドウに出力)できるのですが、説明欄の取得ができませんでした。 テーブルの場合のソースを以下に示しますが、どこがまずいのかご指摘願えないでしょうか? また、フォームの場合はどうすればよいか、あわせて教えていただけると大変助かります。 Dim myCont As Container Dim myDoc As Document Dim i As Integer Dim tds As DAO.TableDefs Dim td As DAO.TableDef Set tds = CurrentDb.TableDefs i = 0 For Each myCont In CurrentDb.Containers For Each myDoc In myCont.Documents If myCont.NAME = "Tables" Then If TableAndQuery(myDoc.NAME) = "Table" Then Set td = tds(i) Debug.Print td.NAME Debug.Print td.Properties("Discription").Value i = i + 1 End If End If Next Next Set td = Nothing Set tds = Nothing 初歩的な質問で大変申し訳ありませんが、よろしくお願いいたします。

  • AccessVBA コンボボックスでの指定

    いつもお世話になっています。 Access、AccessVBAともに超初心者ですが、よろしくお願いします。 フォームのコンボボックスに商品テーブルを設置し、商品名1を選んだら、 同じレコードの商品名2、商品名3の値を取り出すようにしたいのですがうまくいきません。 商品名2はよいのですが、商品名3が取り出せないのです。 エラーも表示されず、ただ商品名3が空白として取り出されているような・・・ フォームのプロパティ、値集合ソースで記入したフィールド順に Column(0),(1),(2)・・・としたら取り出せるとおもったのですが、ちがっているのでしょうか? 詳しい方に原因など教えていただけたらと思います。よろしくお願いします。 ---------------------------------------------------------------------------------------- MsgBox 商品名1.Value & "---" & 商品名1.Column(1) & "---" 商品名1.Column(2) ---------------------------------------------------------------------------------------- プロパティシートの値集合ソース: SELECT 商品テーブル.商品名1, 商品テーブル.商品名2, 商品テーブル.商品名3 FROM 商品テーブル ORDER BY 商品テーブル.商品名3; 連結列:1 

  • AccessVBAでの変数の使い方

    下記のような変数の使い方がAccessVBAでできれば 教えていただきたいと思います。 やりたい事は、変数を利用して、フォームやテーブ ル等を利用することです。 例.フォーム「名前1」の「ラベル1」のバリューを 「あいうえお」に変更 --------------------- Dim Class As String '変数に「名前1」を代入 Class = 名前1 'フォーム「名前1」の「ラベル1」の値を変更 Form_Class!ラベル1="あいうえお" --------------------- というように、変数を利用してフォームやテーブル を利用したいのです。 実際このようにすると、Form_Class がそのまま フォーム名ととらえられ、変数として機能しません でした。 宜しくお願いいたします。

  • プロパティを表示させるにはどうすればいいですか

    テーブルやクエリでピボットテーブルを作った時は、右クリックでプロパティが表示できますが フォームでピボットテーブルを作った時にプロパティを表示させるにはどうすればいいですか? 右クリックをしてもプロパティという項目がありません。

  • AccessVBA コンボボックスで選択フィールド

    いつもお世話になっています。 Access、AccessVBAともに超初心者ですが、よろしくお願いします。 フォームのコンボボックスに商品テーブルを設置し、商品名1を選んだら、 同じレコードの商品名2、商品名3の値を取り出すようにしたいのですがうまくいきません。 商品名2はよいのですが、商品名3が取り出せないのです。 エラーも表示されず、ただ商品名3が空白として取り出されているような・・・ 詳しい方に原因など教えていただけたらと思います。よろしくお願いします。 ----------------------------------------------------------------------------------- プロパティシートの値集合ソース: SELECT 商品テーブル.商品名1, 商品テーブル.商品名2, 商品テーブル.商品名3 FROM 商品テーブル ORDER BY 商品テーブル.商品名3; 連結列:1 

  • アクセスのフォームのデザインビューで新しい項目が、フィールドリストに表示されない。

    テーブルに新しい項目を追加しました。(チェックボックス)。 クリエの方にも追加しました。 しかし、フォームに追加しようと、フィールドリストを参照したところ、新しい項目が表示されてません。 どのようにしたら新しい項目が表示されますでしょうか? よろしくお願いします。

  • VBA ユーザーフォーム

    初心者ですが、宜しくお願いいたします。 EXCEL2007使用 1 / 名無し太郎 / 090-xxxx-xxx 2 / 名無し一郎 / 080-xxxx-xxx 3 / 名無し次郎 / 070-xxxx-xxx のように項目があるのですが、 ユーザーフォームのリストビューに表示する際に行ごとに区切り線を入れることは可能でしょうか? または、VBAでテーブルレイアウトのようなものをフォーム上に作ることはできないでしょうか? 参考サイトなどでもかまいませんので、 宜しくお願いいたします。

  • アクセス フォームが存在するかを一発で取得したい

    フォームが50個くらいあるのですが 該当のフォームが存在するかvbaで取得したいのですが If CurrentProject.AllForms("フォーム1").IsLoaded Then のように、一発で取得する方法はありますか? 今は Sub Sample1() Dim DB As DAO.Database Dim f As DAO.Document Set DB = CurrentDb Dim strForm As String Dim flg As Boolean strForm = "Fメインメニュー" For Each f In DB.Containers!Forms.Documents If strForm = f.Name Then flg = True Exit For End If Next If flg = False Then MsgBox strForm & "は存在しません" End If End Sub のような感じで、すべてのフォームをループしているのですが 無駄が多い気がします。 改善策があればお願いします。

  • アクセスフォームで別テーブルの呼びだし。。。

    よろしくお願いします。 アクセスで区分と連番というテーブルがあります。 フォーム連番を使い入力していますがフォームから手入力するのが大変なので区分というテーブルをつくり、入力するときに区分テーブルから参照できるようにしたいのです、リレーションショップはしてみましたが考えているような参照はできませんでした。 フォーム連番は下記4項目入力しています。 管理区分: 連番: 機器番号: 機器名称: テーブル区分は下記の2項目です 管理区分: 機器名称: このときフォームの機器名称のところで区分の機器名称を参照してほしいのですが。 教えてください、お願いします。

  • AccessVBAにおけるOpenArgsの使用について

    AccessVBAを最近はじめた初心者です。 ~~~フォーム1~~~ Private Sub コマンド0_Click() DoCmd.OpenForm "フォーム2", , , , , , "コマンド0" End Sub Private Sub コマンド1_Click() DoCmd.OpenForm "フォーム2", , , , , , "コマンド1" End Sub ~~~フォーム2~~~ Private Sub Form_Load() Dim strFormName As String strFormName = Forms.フォーム1.OpenArgs DoCmd.PrintOut strFormName End Sub 上のプログラムのようにフォーム1でクリックしたボタンによってフォーム2を読み込んだ時の動作を変えるプログラムを作成しようとしています。 しかし、実際に起動させると、『strFormName = Forms.フォーム1.OpenArgs』の辺りで 「Null の使い方が不正です。」 というエラーメッセージが表示されます。 Accessのヘルプを参照に組んでみたのですが、どの箇所が間違っているのでしょうか? 回答、よろしくお願いします。

専門家に質問してみよう