在VBA中是否有与readline等价的命令?

4
在VBA中,是否有类似Java的readLine命令?我想在立即窗口中使用文本输入,并将其放入变量中。这样做是否可行?

2
"ReadLine"是VBA的一个方法。 - user4039065
3
我很确定答案是否定的——你不能使用即时窗口作为交互式控制台。你想做什么?也许你可以使用用户窗体(UserForm)。 - John Coleman
1
我想使用循环从用户输入数据并将其放入数组中以计算总数(类似于这样的操作)。如果我使用表单,我将不得不创建无限数量的文本框。因此... - Emi
文本框可以清空。输入可以分割。 - John Coleman
我很抱歉,我没有理解。 - Emi
显示剩余4条评论
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

例如:

enter image description here

此外,您可以将输入收集阶段移至以控制台模式运行的VBScript脚本中,在VBA中调用它,并使用文件(脚本写入的)或剪贴板从脚本中获取数据。虽然这应该是可行的,但最好在VBA中找到更符合惯用方式的方法(基于表单的方式)。

3
我不太确定您为什么需要在运行时从“立即窗口”写入变量--这是一些奇怪的调试实践吗?
通常,如果您需要获取输入,则需要一个与用户交互的表单。
但是,如果您确实需要在运行时写入变量,请考虑以下内容:
Sub Main()

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

End Sub

现在,在readImmediate = true这一行设置断点,并将immediateInput添加到监视窗口。打开即时窗口和监视器,运行宏。

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

immediateInput = "hello world"

现在查看监视器;您的immediateInput的值应为"hello world"

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接