VBA功能不起作用,返回错误

时间:2011-10-11 14:07:16

标签: ms-access vba

我遇到了一个问题,我一直试图用MS Access和VBA功能解决这几天。

首先,我有一个表格如下

名称=团队

除非另有说明,

字段主要是文本库 ID(自动编号主键) 非 Prenom 地点 TeamID(通过连接Nom,Prenom和Location字段创建)

在我的表单上,我想提取输入Nom,Prenom和Location字段的部分详细信息。然后将其传递回数据库以进入个人的TeamID字段。

提取应采取的形式 TeamID = mid(Location,0,4) & mid(Prenom,0,2) & mid(Nom,0,2à)

但是我意识到我不能把它放到任何领域的属性的'controle source'部分。

所以在经过多次搜索之后,我决定在一个单独的模块中使用一个函数(为了在我的大量表上创建'合理的'索引值,我经常连接,我发现autonumber主键不是很用户友好或自我解释。

因此,在我的数据库文件中,我使用公共函数

创建了一个模块(名为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

然后我打开eh'执行'窗口并运行该功能。

我似乎只能将值转换为大写或小写,对字符串的任何搜索或操作只会给我一个消息弓,并出现以下错误

执行错误'5' 参数或程序调用不正确

(请耐心等待我,我正在法国航站楼工作​​,所以我对这个错误的翻译可能不太准确。)

但是当我输入它们时,所有函数都会正确显示,传递的参数也是如此。当我搜索网络时,信息也是一样的 http://www.techonthenet.com/excel/formulas/index_vba.php

所以我迷失了我的错误。

我想我没有正确宣布变量的值,但我不明白为什么。 这段代码在别处(其他终端)也不起作用,所以我确定它一定是我的错误!

但它是什么。

我觉得这是一个非常基本的问题,但在操作字符串时无法使函数正常工作。

我是否只需要从sub调用此函数,而不是直接调用此函数在我的表单页面上是否相同?

如果需要,我可以使用此代码创建一个小型数据库。

1 个答案:

答案 0 :(得分:6)

您不应该需要VBA.String名称空间前缀,ArgName:=语法是可选的,只要您遵循可选参数的相同顺序规则。

Mid$("TWENTY", 0, 2)失败,因为在VBA字符串中从索引1开始,因此Mid$("TWENTY", 1, 2)将返回TW