Сделать макрос для ввода данных в таблицу Excel - PullRequest
1 голос
/ 29 мая 2009

Я использую Excel 2003, и мне нужно создать макрос, который запрашивает у пользователя 5 входов: Дата, Номер проекта, Ошибка, Проблема и Решение. Я никогда не использовал макросы раньше, поэтому я не знаю, как это кодировать. Как только данные введены пользователем, я хочу, чтобы они шли под соответствующими столбцами. После этого макрос не будет запрашивать у пользователя другой ввод, пока макрос не будет запущен снова.

Ответы [ 5 ]

2 голосов
/ 10 июня 2009

Когда вы запускаете макрос, поместите этот код, прежде чем делать что-либо:

Dim i As Integer

Range("a1").Select
Range(Selection, Selection.End(xlDown)).Select
i = Selection.Rows.Count

Предполагается, что у вас всегда есть какое-то значение в 'A1' и что нет пустых строк, пока вы не достигнете конца действительных строк введенных данных.

На данный момент у вас есть значение 'i', равное количеству строк, уже содержащих данные.

Тогда вы можете использовать приведенный выше код Кристиана Пейна, но изменить

Range("A2").Select

до

Cells(i + 1, 1).Select

Это позволит вашему макросу поместить данные в следующую пустую строку под уже существующими данными.

2 голосов
/ 29 мая 2009
Sub TestMacro()  
    Range("A2").Select
    ActiveCell.FormulaR1C1 = InputBox("Date")
    Range("B2").Select
    ActiveCell.FormulaR1C1 = InputBox("Project #")
    Range("C2").Select
    ActiveCell.FormulaR1C1 = InputBox("Fault")
    Range("D2").Select
    ActiveCell.FormulaR1C1 = InputBox("Problem")
    Range("E2").Select
    ActiveCell.FormulaR1C1 = InputBox("Solution")
End Sub
1 голос
/ 30 мая 2009

Существует встроенный способ сделать это. Поместите заголовки столбцов в строку 1 листа Excel, выберите ячейку A1, затем перейдите в меню Data и выберите Form

Это может быть ограничительным решением, поскольку вы не можете делать такие вещи, как заполнение одного поля на основе другого (например, дать список проблем, которые зависят от выбранного сбоя). Если вам просто нужно что-то быстрое и простое, тогда оно сделает свою работу

0 голосов
/ 15 июня 2009

Будет ли что-то подобное делать то, что вам нужно?

Sub TestMacro()
Dim dblRow As Double, dtDate As Date, strProject As String
Dim strFalut As String, strProb As String, strSol As String
    dblRow = InputBox("What Row to Enter On")
    dtDate = InputBox("Date", , Date)
    strProject = InputBox("Project #")
    strFalut = InputBox("Fault")
    strProb = InputBox("Problem")
    strSol = InputBox("Solution")
    Range("A" & dblRow).Value = dtDate
    Range("B" & dblRow).Value = strProject
    Range("C" & dblRow).Value = strFalut
    Range("D" & dblRow).Value = strProb
    Range("E" & dblRow).Value = strSol
End Sub
0 голосов
/ 29 мая 2009

Чтобы переместить активную ячейку вниз до a3 (то есть в следующей строке под вашим запросом) используйте это:

ActiveCell.Offset(1, -4).Select
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...