vba创建一个字符串数组,将其作为参数发送给接受字符串的函数

时间:2018-10-14 12:13:40

标签: arrays excel vba string excel-vba

我试图弄清楚如何声明和使用字符串数组。我到处都看到建议是使用类型变量数组。为什么我不能创建仅包含字符串的数组?

我有一个接收字符串作为参数的函数,我需要用6个不同的字符串调用此函数6次。这似乎是一种情况,最好的情况是使用字符串数组并对其进行循环,然后每次使用正确的字符串调用该函数。我如何声明这样的数组并访问它? 如果我声明一个Variant数组,则会收到类型不匹配错误,因为我的函数需要一个字符串。

谢谢

更具体地说,这就是我所做的:

dim strings() as variant
dim i as integer
dim res as integer
strings = Array ("string1", "string2", "string3)

For i = LBound(strings) To UBound(strings)
   res = MyFunction( strings(i))
Next


MyFunctions(str as string) as integer
'do something
end function

这会导致编译器错误:ByRef参数类型不匹配

2 个答案:

答案 0 :(得分:1)

替代以上建议:

调用相同的函数6次不是问题,但是如果您始终在处理字符串数组,则将数组传递进来也不会受到损害。

  @Value("${spring.datasource.driver-class-name}")
    private String driverName;

    @Value("${spring.datasource.url}")
    private String url;

    @Value("${spring.datasource.username}")
    private String userName;

    @Value("${spring.datasource.password}")
    private String password;

    @Bean
    public DataSource datasource() throws PropertyVetoException {
        final DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName(driverName);
        dataSource.setUrl(url);
        dataSource.setUsername(userName);
        dataSource.setPassword(password);
        return dataSource;
    }

答案 1 :(得分:0)

除了一些语法错误之外,您还通过引用需要字符串的函数来传递变量类型。

这可以通过强制VBA将表达式强制转换为字符串来解决:

Sub Button1_Click()
Dim strings() As Variant
Dim i As Integer
Dim res As Integer
strings = Array("string1", "string2", "string3")

For i = LBound(strings) To UBound(strings)
   res = MyFunction((strings(i)))
Next

End Sub

Function MyFunction(str As String) As Integer
Debug.Print str
End Function

通过在要传递的参数周围放置额外的括号。

参考: