-
Cách nào để lấy tên Form đưa vào ListBox ?
tuanle570 > 03-10-13, 10:53 AM
Chào ACE !
Mình có những Form trong file hình đính kèm. Cho mình hỏi làm cách nào để khi mình tạo 1 form mới thì tên form sẽ tự động đưa vào trong Listbox.
Vd: mình tạo form có tên frmTEST thì trong listbox tự hiện lên tên form là frmTEST
Cám ơn ACE nhiều nhiều !
-
RE: Cách nào để lấy tên Form đưa vào ListBox ?
paulsteigel > 03-10-13, 11:58 AM
Bạn cần dùng VBA mới được và dùng đoạn code thế này
Hàm để lấy thông tin đâyMã PHP:Sub test
lstObjects.RowSource = SetRowSource(acForm)
' Với báo cáo thì AcReport
end sub
Mình đã sửa lại hàm - vì lười copy từ ứng dụng cũ đưa lên, không chịu sửa!Mã PHP:Function SetRowSource(acObjType As AcObjectType) As String
Dim iObj As Object, iStr As String, iContainer As Object
Set iContainer = IIf(acObjType = acForm, CurrentProject.AllForms, CurrentProject.AllReports)
For Each iObj In iContainer
iStr = iStr & "'" & iObj.Name & "';"
Next
If iStr = "" Then Exit Function
iStr = Left(iStr, Len(iStr) - 1)
SetRowSource = iStr
End Function -
RE: Cách nào để lấy tên Form đưa vào ListBox ?
tuanle570 > 03-10-13, 12:47 PM
Nó báo lỗi dòng này bạn ơi
--> If Not ObjectExist(iObj.Name) Then iStr = iStr & "'" & iObj.Name & "';"
Compile error: Sub or Function not defined -
RE: Cách nào để lấy tên Form đưa vào ListBox ?
paulsteigel > 03-10-13, 02:42 PM
(03-10-13, 12:47 PM)tuanle570 Đã viết: Nó báo lỗi dòng này bạn ơi
Bạn thêm vào một form ví dụ, một listbox tên là list5, thêm vào thủ tục như trong phần form_load và sửa hàm ở dưới như đoạn mã ở đây. Mình xin lỗi vì lúc trước quên không sửa lại!
--> If Not ObjectExist(iObj.Name) Then iStr = iStr & "'" & iObj.Name & "';"
Compile error: Sub or Function not defined
Mã PHP:Private Sub Form_Load()
With List5
.RowSource = SetRowSource(acForm)
.RowSourceType = "Value list"
End With
End Sub
Function SetRowSource(acObjType As AcObjectType) As String
Dim iObj As Object, iStr As String, iContainer As Object
Set iContainer = IIf(acObjType = acForm, CurrentProject.AllForms, CurrentProject.AllReports)
For Each iObj In iContainer
iStr = iStr & "'" & iObj.Name & "';"
Next
If iStr = "" Then Exit Function
iStr = Left(iStr, Len(iStr) - 1)
SetRowSource = iStr
End Function -
RE: Cách nào để lấy tên Form đưa vào ListBox ?
tuanle570 > 03-10-13, 04:02 PM
Cám ơn bạn paulsteigel đã hướng dẫn.
Xin lỗi cho mình xin hỏi thêm một ý nhé: cũng nội dung trên, nhưng làm cách nào không cho hiện tên form mà form đó mình đã để Hidden -
RE: Cách nào để lấy tên Form đưa vào ListBox ?
paulsteigel > 03-10-13, 11:42 PM
Đây bạn có thể sửa lại hàm một chút thành như thế này. Nếu có lỗi, bạn có thể thay Access thành Application nhé!
Mã PHP:Function SetRowSource(acObjType As AcObjectType) As String
Dim iObj As Object, iStr As String, iContainer As Object
Set iContainer = IIf(acObjType = acForm, CurrentProject.AllForms, CurrentProject.AllReports)
For Each iObj In iContainer
If Not Access.GetHiddenAttribute(acForm, iObj.Name) Then
'Ban co the su dung doan code sau de lam cho form bi an di
'Access.SetHiddenAttribute acTable, "Tenform", True
iStr = iStr & "'" & iObj.Name & "';"
End If
Next
If iStr = "" Then Exit Function
iStr = Left(iStr, Len(iStr) - 1)
SetRowSource = iStr
End Function -
RE: Cách nào để lấy tên Form đưa vào ListBox ?
tuanle570 > 04-10-13, 08:52 AM
Cám ơn bạn paulsteigel rất rất nhiều nha......
Nguyên cả chương trình, mình viết toàn macro không nên còn yếu về VBA lắm @.@