2017-02-27 34 views
0

我已經建立了一個Excel VBA形式,它能夠基於生成一個唯一的ID號:「記錄數」(即有多少非空細胞的範圍內),一封或多封信函,財政年度(即17財政年度2016/17)和另一封信。創建基於關閉一個ID號表單字段 - 訪問

的代碼,財政年度,和其他字母都是基於來自用戶的輸入,而且數量顯然是自動產生的,導致以下格式的代碼:001-A17S

以下

是Excel中代碼產生上述結果:

Application.ScreenUpdating = False 


Worksheets("Project Tracking").Activate 

DeliveryPartnerCode = lbl_DeliveryPartnerCode 
FinancialyearString = txt_FinancialYear.Text 
Financialyear = Right(FinancialyearString, 2) 

nonfilledCells = WorksheetFunction.CountA(Range("A5:A100")) 
AWRNumber = nonfilledCells + 1 
AWRNumberstring = CStr(AWRNumber) 

If (AWRNumber < 9) Then 
    AWRPrefix = "00" 
ElseIf (AWRNumber < 99) Then 
    AWRPrefix = "0" 
Else 
    AWRPrefix = "" 
End If 


If cmb_State.ListIndex = 0 Then 
    State = "S" 
ElseIf cmb_State.ListIndex = 1 Then 
    State = "N" 
ElseIf cmb_State.ListIndex = 2 Then 
    State = "Q" 
ElseIf cmb_State.ListIndex = 3 Then 
    State = "V" 
ElseIf cmb_State.ListIndex = 4 Then 
    State = "A" 
End If 



lbl_AWRReference = AWRPrefix & AWRNumberstring & "-" & DeliveryPartnerCode & Financialyear & State 
Application.ScreenUpdating = True 

這bastardised Excel電子表格不再適合爲我所用,我已經決定在Access中創建一個適當的數據庫。

我已經設置了相應列的表(自動編號爲000面罩),財政年度一個文本框和下拉框的代碼和最後一個字母。但我現在還不知道如何將所有這些連接在一起以提供正確的格式,將結果放置到窗體上的文本框中。我不能使用表達式構建器(不允許我選擇自動編號),並且我找不到用於編寫VBA代碼來執行類似上述Excel VBA代碼的計算的語法或邏輯。

什麼是要達到什麼我正在尋找最好的方式?我承認它已經超過5年,因爲我已經與Access發揮,所以我有點模糊:P

感謝。

+0

您不應該使用自動編號來執行此類任務。搜索SO for _Custom Autonumber_ - 大量命中。 – Gustav

+1

你想存儲這個或只是顯示它(你不應該存儲它,如果它可以簡單地計算)?要在表單上顯示它,我會在底層表單查詢中創建它。最後也是最重要的 - 你嘗試過什麼? – Minty

+0

@Gustav我現在認識到,不過,我仍然不知道如何讓一個DMAX計算出的數字,以及用戶提供成需要的格式其它數據 - 你有什麼建議 – scb998

回答

1
lbl_AWRReference = AWRPrefix & AWRNumberstring & "-" & DeliveryPartnerCode & Financialyear & State . 

很高興你有它的工作。