2009-05-29 3 views
1

Я использую Excel 2003, и мне нужно создать макрос, запрашивающий у пользователя 5 входов: Date, Project #, Fault, Problem and Solution. Я никогда не использовал макросы, поэтому я понятия не имею, как это кодировать. Как только данные будут введены пользователем, я хочу, чтобы он проходил под соответствующими столбцами. После этого макрос не будет запрашивать пользователя для другого ввода до тех пор, пока макрос не будет запущен снова.Сделать макрос для ввода данных в электронную таблицу Excel

ответ

2
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 
+0

Большое спасибо, что работало для ввода значений в текущую строку, но как бы у меня следующий набор значений переместился в следующую строку внизу, поэтому значения не будут перезаписаны. Спасибо – 2009-05-29 11:22:55

0

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

ActiveCell.Offset(1, -4).Select 
+0

, похоже, это не переносит его в следующую строку, в основном я хочу, чтобы макрос работал через 5 входов, а затем вводил данные и останавливался, а когда макрос запускается в следующий раз, чтобы начать с следующего строка вниз. – 2009-05-29 22:25:14

+0

Я забыл знак минус на одном из номеров, но я исправил это сейчас. – paulmorriss

1

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

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

2

При запуске макроса поместите этот код, прежде чем сделать что-нибудь:

Dim i As Integer 

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

Это предполагает, что у вас всегда есть какое-то значение в «A1» и что нет пустых строк, пока вы не дойдете до конца допустимых строк введенных данных.

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

Затем вы можете использовать код Christian Пейна выше, но модифицировать

Range("A2").Select 

в

Cells(i + 1, 1).Select 

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

0

Будет что-то вроде этого делать то, что вам нужно?

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 
Смежные вопросы