我在數據表視圖中有一個表單。我希望vba模擬相同的步驟,就好像用戶在表單中添加了一個新的寄存器(行)一樣。用戶添加新寄存器的步驟如下:訪問VBA:如何模擬用戶行添加
- 單擊最後一個(空白)行(左邊有一個帶星號的行)的一個字段。
- 鍵入一些字符。重要提示:該步驟將左側的星號轉換爲筆,並在正在編輯的行下方出現一個新行(帶星號)。
- 單擊其他行以保存新行。
我曾嘗試這些步驟轉化爲VBA:
1.
If Not my_form.NewRecord Then
RunCommand acCmdRecordsGoToNew
End If
2.
my_form.field_1 = value_1
my_form.field_2 = value_2
...
3.
my_form.Requery
其結果是:
最後(新)行被選中。那沒問題。
將值添加到字段中,但不將星號轉換爲筆,並且不添加新行(帶星號)。壞!
行被重新排序,所以新行(剛剛輸入值的行)不會顯示爲最後一行。壞!
我希望新的行(帶值)顯示爲最後一個(只是有一個星號empy前行),因爲如果用戶已輸入的值。換句話說,我想完全模擬用戶對新行的追求。
更新:我發現了原因:如果我們ASIGN值的複選框第一(asigning值文本框之前),則新行不會出現:
If Not my_form.NewRecord Then ' go to new (empty) row (if not already on it)
RunCommand acCmdRecordsGoToNew
End If
my_form.my_checkbox.Value = 1 ' if we first asign a value to a checkbox, then no new row appears under our row
my_form.my_textbox_1 = "aa" ' no new row appears
my_form.my_textbox_2 = "bb" ' no new row appears
...
但,如果我們先將一個值賦給一個文本框,那麼會出現一個新行:
If Not my_form.NewRecord Then ' go to new (empty) row (if not already on it)
RunCommand acCmdRecordsGoToNew
End If
my_form.my_textbox_1 = "aa" ' if we first asign a value to a textbox, then a new row appears under our row
my_form.my_checkbox.Value = 1
my_form.my_textbox_2 = "bb"
...
不可思議,但是是真的。
似乎是MS Access中的一個錯誤 - 我碰到了完全相同的問題。 –