【问题标题】:Input box Compile Error输入框编译错误
【发布时间】:2018-11-08 12:40:33
【问题描述】:

当有人使用此宏时,我一直在尝试获取文件名的名称。但由于某种原因,每次我运行宏时都会出现错误: 编译错误: 参数数量错误或属性分配无效

我查看了大量视频和其他回复,但没有一个可以帮助我处理这个错误。

Sub inputbox()
Dim x As Variant
x = inputbox("Please enter your file name:", "File name")    
MsgBox ("Your file name is" & x) 
End Sub

【问题讨论】:

  • Variant 拼写为a 而不是e,并在InputBox 之前添加Application.
  • 我在代码中正确拼写了 Variant,Application.Inputbox 非常好用,谢谢。你知道为什么只使用 InputBox 时它不起作用吗?
  • 这很混乱,因为您将函数命名为与 application.inputbox 相同的名称 - 所以这是绕过它的一种方法。答案的方式更好。

标签: vba compiler-errors inputbox


【解决方案1】:

这是您的程序,已更正:(复制并粘贴到新模块中。)

Option Explicit

Sub MyInputBoxTest()
    Dim x As Variant
    x = inputbox("Please enter your file name:", "File name")
    MsgBox ("Your file name is " & x)
End Sub

说明:

  • 变体拼写错误。请注意,由于Variant 是默认数据类型,因此您实际上不需要指定它。 Dim xDim x as Variant 相同。

  • 您不能使用像 InputBoxMsgBox 这样的名称作为过程的名称。它们是保留字 -- 已被 VBA 内置的另一个过程使用,因此编译器会混淆,因为它不知道您指的是哪个。

  • is 之后添加了一个空格。 (纯化妆品)

MsgBox 和 InputBox 等函数的调用方式可以不同,具体取决于是否使用括号以及是否需要返回值。

InputBox "Hi"
InputBox ("Hi")

...其中任何一个都可以正常运行(但不会返回用户输入的内容。)

Dim x
x = InputBox ("Hi")

...将值返回给变量x,但是:

x = InputBox "Hi"

...会抛出错误。


强烈建议,尤其是在学习时,Option Explicit 行添加到每个模块的最顶部。这将通过在您尝试编译 (F9) 或运行 (F5) 代码时生成编译错误来帮助“强制”您正确声明和引用变量、对象等。

【讨论】:

  • 我尝试了您的代码,但仍然遇到同样的错误。你知道还有什么可能导致错误吗?
  • @James - 我的代码是模块中唯一的代码吗?复制粘贴不做改动?哪一行给出了错误,错误是什么?
  • FWIW 你可以使用inputbox 作为过程/函数的名称,你真的不应该。 Function inputbox() As String inputbox = "Test" End Function 是完全有效的,而不是尝试像 Function Else() 这样的东西。
  • 只是区分真正的保留字和技术上可以“覆盖”的内置函数(inputboxmsgbox)。
  • @BigBen - 认为这只是在学习编码的早期阶段不必要地混淆了问题,你不同意吗?我认为我的善意谎言是一个很好的经验法则。 “不要使用 VBA 想要用于其他内容的词。”称他们为“保留”,就像他们已经有晚餐计划一样......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-10
  • 2012-02-22
  • 2014-10-21
  • 2012-01-20
  • 2014-03-26
  • 1970-01-01
相关资源
最近更新 更多