Запись входного целого числа в ячейку - PullRequest
7 голосов
/ 02 ноября 2008

Я пишу быстрое приложение самостоятельно - первый проект, однако я пытаюсь найти код VBA для записи результата входной строки в именованную ячейку в Excel.

Например, в поле ввода задается вопрос «Какой номер работы вы хотели бы добавить в список?» ... пользователь затем вводит ссылочный номер, например «FX1234356». Затем макрос должен записать эту информацию в ячейку, которую я затем смогу использовать для завершения макроса (в основном поиск по некоторым данным).

Ответы [ 4 ]

10 голосов
/ 02 ноября 2008

Вы можете использовать объект Range в VBA для установки значения именованной ячейки, как и любой другой ячейки.

Range("C1").Value = Inputbox("Which job number would you like to add to the list?)

Где "C1" - это имя ячейки, которую вы хотите обновить.

Мой Excel VBA немного устарел и хрупок, поэтому может быть лучший способ сделать это в более новых версиях Excel.

4 голосов
/ 03 ноября 2008

Я рекомендую всегда использовать именованный диапазон (как вы и предлагали), потому что, если какие-либо столбцы или строки добавляются или удаляются, ссылка на имя будет обновляться, тогда как если вы жестко закодируете ссылку на ячейку (например, «H1» как предлагается в одном из ответов) в VBA, то он не будет обновляться и будет указывать на неправильную ячейку.

Так

Range("RefNo") = InputBox("....") 

безопаснее

Range("H1") = InputBox("....") 

Вы также можете установить значение нескольких ячеек.

Range("Results").Resize(10,3) = arrResults()

где arrResults - это массив не менее 10 строк и 3 столбцов (и может быть любого типа). Если вы используете это, поместите это

Option Base 1

в верхней части модуля VBA, в противном случае VBA примет массив, начинающийся с 0, и поместит пустую первую строку и столбец в лист. Эта строка заставляет все массивы начинаться с 1 по умолчанию (что может быть ненормально в большинстве языков, но хорошо работает с электронными таблицами).

1 голос
/ 17 февраля 2016

Когда пользователь запрашивает ответ для помещения в ячейку с помощью метода InputBox , обычно возможны три вещи things.

  1. Пользователь что-то вводит и нажимает OK . Это то, что вы ожидаете, и вы получите входные данные, которые могут быть возвращены непосредственно в ячейку или объявленную переменную.
  2. Пользователь нажимает Отмена , нажимает Esc или нажимает × (Закрыть). Возвращаемое значение - логическое значение False . Это следует учитывать.
  3. Пользователь не вводит что-либо, но нажимает OK независимо. Возвращаемое значение - строка нулевой длины.

Если вы помещаете возвращаемое значение в ячейку, ваш собственный логический поток будет диктовать, что вы хотите сделать с последними двумя сценариями. Вы можете очистить ячейку или оставить содержимое ячейки в покое. Вот как обрабатывать различные результаты с помощью переменной типа варианта и оператора Select Case .

    Dim returnVal As Variant

    returnVal = InputBox(Prompt:="Type a value:", Title:="Test Data")

    'if the user clicked Cancel, Close or Esc the False
    'is translated to the variant as a vbNullString
    Select Case True
        Case Len(returnVal) = 0
            'no value but user clicked OK - clear the target cell
            Range("A2").ClearContents
        Case Else
            'returned a value with OK, save it
            Range("A2") = returnVal
    End Select

¹ Существует четвертый сценарий, когда используется определенный тип Метод InputBox . InputBox может возвращать формулу, ошибку диапазона ячеек или массив. Это особые случаи и требуют использования очень специфических синтаксических опций. См. Прилагаемую ссылку для получения дополнительной информации.

0 голосов
/ 02 ноября 2008

Я делал подобные вещи с формой, содержащей TextBox.

Итак, если вы хотите поместить это, скажем, в ячейку H1, используйте:

ActiveSheet.Range("H1").Value = txtBoxName.Text

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...