0
當VBA代碼執行時,我想停止表單的閃爍,但Application Echo不起作用。訪問 - 應用程序回聲不起作用
我有這樣的代碼在Combobox_After_Update事件:
私人小組Combo11_AfterUpdate()
'Stop flickering Application.Echo False On Error Resume Next 'If User deletes Combo Item, then delete record If IsNull(Combo11) Then DoCmd.SetWarnings False DoCmd.RunCommand acCmdDeleteRecord End If 'Call code for re-positioning controls on form Call MovingAllControls 'Close and reopen form Call ReOpen Application.Echo True End Sub
調用的過程(這可能是閃爍的原因):
Sub MovingAllControls
'Refresh
DoCmd.Requery
Const MaxRecs As Integer = 10
Dim NumRecs As Integer
On Error Resume Next
'find last record in subform and then expand Detail section according to number 'of records
With Forms![MyForm]![MySubform].Form
.Recordset.MoveLast
NumRecs = .RecordsetClone.RecordCount
If NumRecs > MaxRecs Then NumRecs = MaxRecs
.InsideHeight = NumRecs * .Section(0).Height + 350
End With
'Moving all controls under subform - in this example only one, but in reality I 'have plenty controls to move on form
Forms![MyForm]![FieldName].Top = Forms![MyForm]![Myubform].Top + Forms![MyForm]![MySubform].Form.InsideHeight + 1100
End Sub
是從Combobox_After_Update事件調用另一個程序:
小組重新打開()
'I reopen form, because this is only way my subform controls moves as they 'should - dynamically DoCmd.Close acForm, "MyForm" DoCmd.OpenForm "MyForm" End Sub
我也試圖看什麼錯誤在After_Update_event中產生,並且我得到錯誤「424 - 對象需要」,但是我的代碼執行得很好,唯一的問題是控件閃爍。任何其他方式來停止閃爍,或者我的代碼有什麼問題?
感謝您的幫助!
謝謝,我試過了,但代碼仍然有問題。在子窗體控件的第一次移動時,所有東西仍然閃爍,但隨後停止?!?現在你說Form_Open和Form_Close錯誤,我真的相信那裏有什麼不對。我的代碼實際上重新定位了Form_Load上的所有控件,我沒有在這裏發佈。當這個發佈的代碼被執行時,我必須再次執行Form_Load,這是所有控件正確刷新的唯一方法。我還能怎樣做動態刷新? – LuckyLuke82
** 1)**嘗試子窗體,父窗體或兩者中的「繪畫」代碼。 ** 2)**將控制位置代碼從「Form_Load」中移出,並放入其自己的子程序中,以便在需要時調用。 – kismert
對不起,我已經有了Form_Load的控件定位代碼,我只是叫它。也許從Form_Current事件調用這個子例程會更好? – LuckyLuke82