アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESSVBAでフォーム内の項目のプロパティを取得したいです。
(その項目はどのテーブルを参照しているかをみたいのです。値集合ソースなどでしょうか?)

テーブルのプロパティを取得するプログラムサンプルはあるのでそれを利用して作成しようとしていますが、フォームの見方がわかりません。

テーブルの場合のサンプルでは
(うろ覚えです。ごめんなさい)

Dim XXXX As tabledef

XXXX.attribute

などを使用していて、このあたりをフォームに当てはめればよいのではと思っていますが、見当違いでしょうか。

初心者なうえにうろ覚えの内容で申し訳ありません。
よろしくお願いいたします。

A 回答 (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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!