2011-10-11 68 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