2011-10-11 47 views
2

我有一個問題,我一直試圖用MS Access和VBA功能解決幾天。VBA功能不能正常工作,返回錯誤

要開始我有一個表如下

名稱=隊

領域主要是文本基礎,除非另有說明 ID(自動編號主鍵) 非 Prenom 位置 TeamID(創建人連接Nom,Prenom和位置字段)

在我的表單中,我想提取輸入到Nom,Prenom和Location字段的部分詳細信息。然後將其傳回給數據庫以進入個人的TeamID字段。

提取應採取的 TeamID = mid(Location,0,4) & mid(Prenom,0,2) & mid(Nom,0,2à)

形式。然而我知道我不能把這個變成任何字段屬性的「CONTROLE源」部分。

因此,經過多次搜索,我決定我應該在一個單獨的模塊中使用一個函數(我經常在大量的表上創建'合理的'索引值,我發現自動編號主鍵不是非常人性化,或言自明。

所以在我的數據庫文件我創建了一個模塊(稱爲的getInfo)與公共職能

Public Function getID() As String 
Dim r As String 
Dim i As String 
i = "Twenty" 

下面是一些我曾嘗試選項....

'r = VBA.Strings.UCase$(String:=i) 'turning the value of i to uppercase 

getID = r 'returns "TWENTY" as expected 

'r = VBA.Strings.Mid$("TWENTY", 0, 2) 
getID = r 'error and highlights above line? 

'r = StrReverse(i) 
getID= r 'again error and highlights above line 

getID = VBA.Strings.Mid$(String:="TWENTY", Start:=0, Length:=2) 
End Function 

我再opent嗯 '執行' 窗口,並運行的功能。

我似乎只能值轉換爲大寫或小寫,繩子的搜索或操作只是給了我下面的錯誤

執行錯誤「5」 參數或程序的消息弓呼叫不正確

(請與我聯繫我正在法國終端工作,所以我的這個錯誤的翻譯可能不是非常acurate)。

但是,當我鍵入它們時,所有功能都正確顯示,正如傳遞的參數一樣。當我搜索網絡的信息也是一樣的 http://www.techonthenet.com/excel/formulas/index_vba.php

所以我失去了我要去哪裏錯了。

我想我沒有正確地聲明我的變量的值,但我不明白爲什麼。 此代碼在其他地方(其他終端)無法使用,所以我確定它一定是我的錯誤!

但是它是什麼。

我覺得這是一個非常基本的問題,但是在操縱字符串時卻無法讓這個函數工作。

我是否需要僅從一個子集調用此函數,而不是直接調用,這與我的表單頁面是否相同?

如果需要,我可以使用此代碼創建一個小型數據庫。

+1

這是什麼'VBA.Strings'東西。授予我的VBA已經在Word和Excel中,但你只是在'getID = mid(i,1,2)'這樣的東西。 – paxdiablo

+1

你有一個傻笑的權利,字符串不是零索引!我知道這將是愚蠢的。而VBA.Strings的東西是我試圖調試,爲什麼它不工作,所以使用完全合格的命名空間(以防萬一!) – DaveM

回答

6

您不應該需要VBA.String命名空間前綴,並且ArgName:=語法是可選的,只要您遵循可選參數的相同順序規則即可。

Mid$("TWENTY", 0, 2)失敗,因爲在VBA字符串索引1處開始,所以Mid$("TWENTY", 1, 2)將返回TW

+0

我怎麼錯過了,爲什麼我沒有更快找到它! – DaveM