4

在 VBA 中是否有等效于 Java 的 readLine 的命令。我想在即时窗口中使用文本输入并将其放入变量中。可能吗?

4

2 回答 2

4

您不能以交互方式使用即时窗口。一方面——当一个子程序运行时,它不会接受任何键盘输入。但是,您可以在调用它时使用它将数据传递给子或函数,因此从某种意义上说,您可以“抓取”已经存在的数据。这些方面的东西:

Sub AddNums(ParamArray nums())
    Dim total As Double
    Dim i As Long
    For i = 0 To UBound(nums)
        total = total + nums(i)
    Next i
    Debug.Print total
End Sub

例如:

在此处输入图像描述

除此之外 - 您可以将输入收集阶段移动到在控制台模式下运行的 VBScript 脚本,从 VBA 调用它,然后使用文件(脚本写入的文件)或剪贴板从脚本中获取数据它已完成运行。这应该是可行的,尽管在 VBA 中找到一种更惯用(基于表单)的方法可能会更好。

于 2015-10-05T10:26:57.307 回答
3

我不太确定为什么需要在运行时从即时窗口写入变量 - 这是一些奇怪的调试实践吗?

通常,如果您需要输入,您最终会得到一个与用户交互的表单。

但是,如果您确实需要在运行时写入变量,请考虑以下事项:

Sub Main()

    Dim immediateInput As String
    Dim readImmediate As Boolean
    Do While (readImmediate = False)
        readImmediate = True
    Loop

End Sub

现在,在该行设置一个断点readImmediate = true并添加immediateInput到 Watch。调出即时窗口和监视并运行宏。

当运行时遇到断点时,在即时窗口中输入以下内容:

immediateInput = "hello world"

现在看看手表;你immediateInput的价值应该是"hello world"

在此处输入图像描述

于 2015-10-05T08:19:40.403 回答