2015-05-01 45 views
0

我有一個子窗體,它使大量使用條件格式來灰化不包含數據的單元格,並突出顯示已由用戶調整過的單元格。子表單是一個數據表。引用特定記錄的子窗體上的控件

這一切都工作正常,除了應用格式的滯後,有時甚至不會更新,直到用戶鼠標在單元格上。

我想嘗試的是在VBA中應用格式,而不是使用內置的條件格式,因爲我寧願表單需要花費幾秒的時間才能加載,但所有格式化都會應用一次,比我目前得到的延遲要少。

所以,我堅持的是如何將子窗體上的控件綁定到填充它的視圖中的特定記錄。例如,我可以使用下面的代碼:

Dim ctrl As Control 

For Each ctrl In Me.Controls 
    MsgBox ctrl.Name & " : " & ctrl.Value 
Next ctrl 

這可能顯示,例如,「ROWNUMBER:010」,所以我可以找出涉及控制什麼記錄,但是當它說:「TotalUSD:1,234,567.89」 ,我無法知道與哪個記錄有關,因此是否應該應用格式化。

有沒有更好的方法來做到這一點,我想理想的是能夠將每個ctrl鏈接到Form.Recordset中的相應記錄?

UPDATE

下面屏幕截圖顯示了目前實施的條件格式,並且我試圖用的,而不是條件格式VBA來實現。 enter image description here

+0

子窗體是連續窗體嗎? – EliteRaceElephant

+0

不,這是一個數據表格 – CrazyHorse

+0

我不認爲您可以在數據表視圖中格式化單元格。你可以添加你的用戶窗體的圖片和註釋你想要實現的嗎? – EliteRaceElephant

回答

0

我沒有關於您的實現的深入信息,所以這裏是我在實現中使用的一般建議。

您應該在表中添加某種區分列。例如,我曾經有一個表格顯示項目和員工。區別列包含每個項目的布爾值「True」,每個員工都爲「False」。根據這些信息,我可以相應地進行格式化。

我的建議:在您的記錄集表中添加一個整數區分列。值「0」是簡單的列,「1」是灰色的,「2」是用戶輸入。

在Form_Load事件中,您必須迭代所有控件並設置格式。

+0

我實際上有我需要的信息 - 視圖中有一個額外的列(不顯示),每列都有一個布爾值,不管它是否已經過調整,這是如何應用條件格式。另外,沒有完成的單元格的值爲| | NO_DATA |'。所以我的問題是如何遍歷控件,並且每個人都能夠引用該行/記錄中的其他列? – CrazyHorse

+0

我有點出於我的元素,因爲我在連續的表單上工作了extensivley,但從來沒有在數據表格上。連續的形式,你不能做你所描述的。這是不可能的,因爲對於每一列你只有一個控制。如果更改一個控件,則會更改整列。這就是爲什麼你只能使用條件格式。數據表視圖不一樣嗎? – EliteRaceElephant

+0

謝謝 - 我相信你是正確的,不幸的是它不能這樣做,所以將不得不忍受條件格式化的緩慢更新 – CrazyHorse

相關問題