Sizin sorunuzla ilgili bulabildiğim tek kodu aşağıya ekliyorum. Bu kodda formun koordinatları veriliyor. Siz bunu rapora uyarlarsınız. Deneme şansım olmadı, inşallah çalışıyordur.
Formun boyutlarını veren kod:
Kod:
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function InflateRect Lib "user32" (lpRect As RECT, ByVal x As Long, ByVal y As Long) As Long
Private Sub Form_Load()
Dim R As RECT
'initialize the rectangle
R.Right = 100
R.Bottom = 200
R.Top = 20
R.Left = 30
'increase the width and height of the specified rectangle
InflateRect R, 60, 50
'show the result
MsgBox "New rectangle's co-ordinates: (" + CStr(R.Left) + "," + CStr(R.Top) + ")-(" + CStr(R.Right) + "," + CStr(R.Bottom) + ")."
End Sub
Bu arada raporun açık mı kapalı mı olduğunu veren kodlar eminim sizde mevcuttur, bizim online Kod Bankasında da var. Ama yine de hazır bulmuşken yapıştırayım dedim))
Kod:
If SysCmd(acSysCmdGetObjectState, acForm, "Form1") <> 0 Then
MsgBox "Form açık."
Else
MsgBox "Form kapalı."
End If
Örnek, Form1 adlı formun açık olup olmadığını araştırıyor. Raporlar için "acForm" deyimini "acReport" olarak değiştirmelisiniz.
ALTERNATİF YÖNTEM:
Kod:
If CurrentProject.AllForms("AFormu").IsLoaded = True Then
...
End If
If CurrentProject.AllForms("BFormu").IsLoaded = True Then
...
End If
ALTERNATİF 2:
Kod:
Kod:
Private Function isFormLoaded(strFormName As String)
isFormLoaded = SysCmd(SYSCMD_GETOBJECTSTATE, A_FORM, strFormName)
End Function
isimli fonksiyonu ekleyip, kodun çalışmasını istediğin olaya aşağıdakini yaz
Kod:
Const FRM_A = "FORM1"
Const FRM_B = "FORM2"
Dim strArgs As String
If isFormLoaded(FRM_A) Then
'Form1 açık ise yapılacak işlem.
End If
If isFormLoaded(FRM_B) Then
'Form2 açık ise yapılacak işlem.
End If