我想使用VBA來格式化一些未綁定的文本框,我已經添加到子窗體上的行設置爲連續視圖。使用VBA在子窗體記錄中格式化字段
VBA查看與子窗體底層RecordSource相關聯的綁定文本框,然後根據數據格式化已添加的未綁定文本框。
下面是一些簡單的代碼:
Public Sub ApplyFormat()
If Forms!tblEnrolments!tblEnrolments_Jobs_sub!Start = 1 Then
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart.BackColor = RGB(65, 138, 179)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart.ForeColor = RGB(255, 255, 255)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart = "Start Forms"
ElseIf Forms!tblEnrolments!tblEnrolments_Jobs_sub!Start = 0 Then
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart.BackColor = RGB(216, 216, 216)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart.ForeColor = RGB(166, 166, 166)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtStart = "None"
End If
If Forms!tblEnrolments!tblEnrolments_Jobs_sub!End = 1 Then
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd.BackColor = RGB(8, 164, 71)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd.ForeColor = RGB(255, 255, 255)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd = "End Forms"
ElseIf Forms!tblEnrolments!tblEnrolments_Jobs_sub!End = 0 Then
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd.BackColor = RGB(216, 216, 216)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd.ForeColor = RGB(166, 166, 166)
Forms!tblEnrolments!tblEnrolments_Jobs_sub!txtEnd = "None"
End If
End Sub
Private Sub Form_Activate()
ApplyFormat
End Sub
Private Sub Form_Current()
ApplyFormat
End Sub
所以我有一個公共子叫applyFormat的,看起來在綁定的文本框的數據,然後應用格式(改變文本框的背景顏色,字體顏色和文本數據) 。然後從Current事件中調用此函數(所以格式在加載記錄時應用)和Activate事件(因爲主表單將在打開時打開其他表單並在其他表單關閉時再次獲得焦點)。
不幸的是,子窗體中記錄1下方的記錄沒有根據其記錄中的數據進行格式化;他們只是簡單地複製第一條記錄中應用的格式。
例如:
這裏EnrolID 「1」 具有兩個連接的作業子窗體表示。第一條記錄按照上面的代碼格式化爲正確的,即綁定的「開始」文本框爲1,因此它旁邊的未綁定文本框被格式化爲藍色,帶有白色文本和字符串「開始表單」。
但是,在第二個記錄中,「開始」文本框爲0,應將其旁邊的未綁定文本框格式化爲灰色並帶有字符串「無」。但正如你所看到的,它只是複製第一條記錄的格式。此外,綁定文本框「結束」的值爲1,這應該使其旁邊的未綁定文本框以白色文本和字符串「結束窗體」呈現綠色。
是否有可能通過VBA達到我要去的效果?我不認爲我可以使用條件格式,因爲我希望未綁定的文本框顯示數據,例如「啓動窗體」和「結束窗體」,具體取決於它們的綁定文本框對應項。