2015-10-05 1 views
4

Есть ли команда, эквивалентная readLine Java в VBA. Я хочу использовать ввод текста в непосредственном окне и поместить его в переменную. Возможно ли это?есть ли какая-либо команда, эквивалентная readline в vba?

+1

[ReadLine] (https://msdn.microsoft.com/en-us/library/office/gg278803.aspx) - это метод VBA. – Jeeped

+3

Я уверен, что ответ отрицательный: вы не можете использовать непосредственное окно в качестве интерактивной консоли. Что ты пытаешься сделать? Возможно, вы можете использовать пользовательскую форму. –

+1

Я хочу использовать цикл для ввода данных от пользователя и поместить его в массив для вычисления общего (что-то вроде этого). Если я использую форму, мне придется создать бесконечное число. текстовых полей. Итак .. – Emi

ответ

3

Я не совсем уверен, почему вам нужно писать из Immediate Window в переменную во время выполнения - это некоторые странные методы отладки?

Обычно, если вам нужно взять ввод, вы получите форму для взаимодействия с пользователем.

Однако, если вам нужно записать в переменную на время выполнения необходимо учитывать следующее:

Sub Main() 

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

End Sub 

теперь установить контрольную точку на линии readImmediate = true и добавить immediateInput в Дозоре. Поднимите оба окна и часы и запустите макрос.

Когда среда попадает в точку останова, введите ниже в окне Immediate:

immediateInput = "hello world"

Теперь посмотрим в часы; ваше значение immediateInput должно быть "hello world".

enter image description here

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.

 Смежные вопросы

  • Нет связанных вопросов^_^