Запись входного целого числа в ячейку

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

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

Название вопроса вводит в заблуждение. Ваш ввод не является целым числом.

Jason Z 02.11.2008 22:37
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
7
1
128 791
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

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

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

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

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

Спасибо за проверку. Я ненавижу публиковать старый код и, возможно, когда кто-то приходит и говорит: «Да, в 1900-х вы могли сделать это таким образом, но теперь ...». :)

Bill the Lizard 02.11.2008 22:38

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

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

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

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

Так

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

безопаснее, чем

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

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

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

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

Option Base 1

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

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

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

Если вы помещаете возвращаемое значение в ячейку, ваш собственный логический поток будет определять, что вы хотите делать с последними двумя сценариями. Вы можете очистить ячейку или оставить ее содержимое в покое. Вот как обрабатывать различные результаты с помощью переменной типа варианта и Выберите оператор 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

¹ There is a fourth scenario when a specific type of InputBox method is used. An InputBox can return a formula, cell range error or array. Those are special cases and requires using very specific syntax options. See the supplied link for more.

Другие вопросы по теме