qq_41660047
qq_41660047
采纳率34.2%
2018-02-25 10:35

EXCEL中使用VB语言写程序,调用函数时参数传递的问题

20

Application.Onkey"{Enter}","HanShu",使用这个语句实现当在特定单元格按下回车键时,可以调用模块HanShu,但我现在想要通过这个语句传递参数,比如我想写成Application.Onkey"{Enter}","HanShu(CanShu1,CanShu2)",但程序报错,请教各位大神这个应该靠什么功能实现参数传递?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

5条回答

  • weixin_41599742 weixin_41599742 3年前

    VBA调用子程序时,如果不带参数,

    直接写sub过程名,或者Call sub名称即可。

    如果需要传递参数:

    同样可以使用Call:
    例如:
    Call PicInComment(1, 250)
    参数写在后面,不带括号:
    例如:
    PicInComment 1, 250
    也可以赋值给其他变量:
    例如:
    result = PicInComment(1, 250)

    点赞 1 评论 复制链接分享
  • qq_42709021 qq_42709021 3年前

    你这样肯定不行啊,后面调用宏的参数是字符串,只能指向宏名。
    如果你想实现你那个效果可以套一层sub。比如说

    sub 调用hanshu()
    call HanShu(CanShu1,CanShu2)
    end sub

    点赞 评论 复制链接分享
  • toouoo toouoo 3年前

    通过单元格获取会好一点

    点赞 评论 复制链接分享
  • wzyingqin wzyq 3年前

    为什么一定要直接传参数呢?
    若参数值可通过excel的单元格进行计算获得,可以通过类似这样的代码来获取单元格F6中的值 Range("F6").FormulaR1C1。
    这样是否就能变通的实现你的要求呢?
    查看https://msdn.microsoft.com/zh-cn/library/ff197461(v=office.14).aspx 微软文档,应该是不能实现你提出的直接传参数的问题的。

    点赞 评论 复制链接分享
  • qq_41660047 qq_41660047 3年前

    还是不行,我是EXCEL里,对某个单元格按下回车后调用一个函数,正常都是写的Application.Onkey"{Enter}","函数名",但这种方式传递不了参数,即使按照你说的去掉括号也不行

    点赞 评论 复制链接分享

相关推荐