อื่ม! จริงๆ ถ้าเป็น Text Box ก็สามารถใส่เงื่อนไข Conditional Format ได้หมดนะครับ ทำไมถึงใช้ไม่ได้บางอัน?
ลองอย่างนี้ดูครับ หากคอนโทรลทุกตัวที่คุณต้องการ Disable เป็น Text Box
เท่าที่ดูรูป ฟอร์มชื่อ frm_ราคากระดาษ, ตัว Check Box ชื่อ Cancel (หากไม่ใช่ให้แก้ให้ถูกในโค้ดด้านล่าง)
ใส่โค้ดนี้ที่ Event > On Load ของฟอร์มเลยครับ แล้วลองเรียกใช้ดูครับ
Dim objFrc As FormatCondition
Dim txtCtrl As Access.Control
For Each txtCtrl In Forms("frm_ราคากระดาษ").Controls 'สำหรับอ้างซับฟอร์ม For Each wCtrl In Forms("ชื่อฟอร์มหลัก")!ชื่อซับฟอร์ม.Form.Controls
If txtCtrl.ControlType = acTextBox Then ' หาคอนโทรลทั้งหมดบนฟอร์ม หากเป็น Text box ก็สร้าง Conditional Formatting
Me(txtCtrl.Name).FormatConditions.Delete ' ลบเงื่อนไขเก่า หากมีการสร้างเงื่อนไขไว้ในตัว Text Box
Set objFrc = Me(txtCtrl.Name).FormatConditions.Add(acExpression, acEqual, "[Cancel]=True") 'หากคอนโทรล checkbox มีค่าเป็น True
Me(txtCtrl.Name).FormatConditions(0).Enabled = False ' ให้ Disable
Set objFrc = Nothing
End If
Next txtCtrl