为什么在Excel for Mac中使用VBA不会为我的InputBox显示提示文本?

时间:2016-08-31 07:38:39

标签: excel macos vba excel-vba

我一直在使用Excel构建一个能够跟踪学生成绩的系统。我在Windows下编写了它,一切正常,但是当我在Mac版的Excel(最新版​​本,15.24,我相信)上测试它时,InputBox只显示输入数据的标题和文本框;提示文本未显示。 以下是我用来处理InputBoxes的代码示例:

On Error Resume Next
    assessmentName = Application.InputBox("Please enter a name for the new assessment:", "Enter assessment name")
    If assessmentName = "False" Then
        Exit Sub
    End If
Err.Clear

在这种情况下,显示的所有内容都是标题“输入评估名称”和用户输入名称的文本框。 Mac版本的Excel处理VBA代码的方式有什么不同,这会导致这种情况发生吗?这些问题是由于我的编码错误导致的,加上Excel似乎在Mac上支持的VBA较弱吗?

更新:我现在在代码中标记了参数,如下所示:

On Error Resume Next
    assessmentName = Application.InputBox( _
                    Prompt:="Please enter a name for the new assessment:", _
                    Title:="Enter assessment name")
    If assessmentName = "False" Then
        Exit Sub
    End If
Err.Clear

不幸的是,当我在Mac版的Excel上运行宏时,提示仍然缺失。

第二次更新:我找到了解决方案并将其发布在以下答案中。

2 个答案:

答案 0 :(得分:1)

我找到了答案,并将其发布在此处,希望能帮助遇到同样问题的其他人。当我在阅读this page时,我发现了以下评论:

  

微软似乎很喜欢混淆,所以你也可以访问InputBox方法,这是Application对象的一种方法。

事实证明我使用的是Application.InputBox,当时我应该只使用InputBox。

以下代码有效,即显示提示以及输入框和标题:

On Error Resume Next
    assessmentName = InputBox( _
                    Prompt:="Please enter a name for the new assessment:", _
                    Title:="Enter assessment name")
    If assessmentName = "False" Then
        Exit Sub
    End If
Err.Clear

答案 1 :(得分:1)

与VBA版本7.1打包在一起的Excel Mac版本16.20的相同问题。

使用InputBox时单独使用Type:=

无效

显示:

Compile error:
Named argument Type not found

很遗憾,Type:=仅适用于Application.InputBox

作为一种变通方法,您可以在下面的示例代码中看到,我使用Title:=Default:=的组合来“提示”需要输入的内容。

这是另一个选择,直到MS为Mac用户解决此问题为止。

顺便说一下,这是一个方便的小代码段。

Sub ClearErrorsFromInputRange()
    ' Clear all cells containing errors
    Dim rRange As String
    On Error Resume Next
    rRange = Application.InputBox(Prompt:="Not Working On Mac", _
        Title:="Clear Errors From Range", Default:="J2:J4000", Type:=2)
    With Range(rRange)
        .SpecialCells(xlCellTypeConstants, xlErrors).Value2 = ""
    End With
End Sub