excel vba拼接函数名

轮子酱 2020-10-15 11:46:57
Sub aaa()

'
Dim day1, day2, day3 As Integer
day1 = 6
day2 = 8
day3 =10

for i = 1 to 3
MsgBox dayi
Next

End Sub

例如这样子的,循环输出day1-day3,在vba里面要咋实现啊?
...全文
524 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
大叔obnijeh 2020-11-22
  • 打赏
  • 举报
回复
下面贴出代码,方便你复制,

/**
*分析一下: 
*有些编译器写VBA定义变量需要As Integer之类,可以修改,我这里是不需要的,注释有些用逗号',用些用双/你到时修改一下
*MsgBox dayi ,MsgBox后面是接字符串,想用day拼i,输出来的还是字符串,
*即day1,day2,day3,不会是变day1,day2,day3对应的值。
*解决办法:
*办法1:去判断i的值然后直接MsgBox具体的变量.如:getday_1()
*办法2:把变量定义成数组,根据下标来判断。如:getday_2()
*/
Call getday_1()
Call getday_2()
Sub getday_1()
    Dim day1, day2, day3 ,day4
    day1 = 6
    day2 = 8
    day3 = 10
    day4 = 12
    For i = 1 To 3
        If i = 1 Then 
            MsgBox day1
        ElseIf i = 2 Then
            MsgBox day2
        ElseIf i = 3 Then
            MsgBox day3
        Else 
            MsgBox "其它值"
        End If        
    Next
End Sub
Sub getday_2()
    a  = array(6,8,10,12) //定义一个数组。
    For i = 0 To ubound(a) //下标从0开始,所以把你的for i= 1改为 for i = 0
        MsgBox a(i)       
    Next
End Sub
sueyongyan 2020-11-15
  • 打赏
  • 举报
回复
引用数据完成

Sub aaa()
Dim curDay(2) As Integer
curDay(0) = 6
curDay(1) = 8
curDay(2) = 10

For i = 0 To 2
MsgBox curDay(i)
Next

End Sub

另:day是VBA自带函数,不建议直接引用day做参数名

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧