访问VBA - 迭代报表元素/属性

时间:2016-09-02 15:14:23

标签: vba ms-access access-vba

我正在寻找一种迭代Access VBA中所有报表元素和属性的方法。我的主要目标是检查元素(可能是文本框和/或标签)是否包含某个字符串,然后替换该字符串,输出报告等。我知道如何检查并替换字符串并输出报告,但我找不到迭代单个报表元素来检查其属性的方法。反正有没有这样做?谢谢!

1 个答案:

答案 0 :(得分:0)

在Access中 - 您引用的元素称为控件。

您可以遍历报表的所有控件 - 如果要更改其标题(对于标签)或值(未绑定的文本框) - 您可以使用循环根据控件类型有条件地检查属性中的字符串

这样的事情对您有用:

  

编辑 - 将rpt变量更改为AccessObject

Public Sub ChangeReportStrings(oldString as String, newString as String)
   Dim rpt as AccessObject
   Dim ctl as Control

   For Each rpt in currentProject.AllReports
       DoCmd.OpenReport rpt.Name, acViewDesign 
       For Each ctl in rpt.Controls
           Select Case ctl.ControlType
               Case acLabel
                   ' Replace Label Caption old string with new string
                    ctl.Caption = Replace(ctl.Caption, oldString , newString)
               Case acTextBox
                   ' Probably should check to see if ControlSource is filled first
                   ' Replace ctl.Value old String with new String
                   ctl.Value = Replace(ctl.Value, oldString , newString)

           End Select
       Next ctl
       DoCmd.Close acReport, rpt.Name, acSaveYes
   Next rpt

End Sub