我试图弄清楚如何声明和使用字符串数组。我到处都看到建议是使用类型变量数组。为什么我不能创建仅包含字符串的数组?
我有一个接收字符串作为参数的函数,我需要用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参数类型不匹配
答案 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
通过在要传递的参数周围放置额外的括号。
参考: