使宏将数据输入Excel电子表格

时间:2009-05-29 01:24:46

标签: excel-vba vba excel

我正在使用Excel 2003,我需要创建一个宏,向用户询问5个输入:Date,Project#,Fault,Problem和Solution。我之前从未使用过宏,所以我不知道如何编写代码。一旦用户输入数据,我希望它在适当的列下。完成此操作后,宏将不再提示用户输入另一个输入,直到再次运行宏。

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

启动宏时,请在执行任何操作之前放置此代码:

Dim i As Integer

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

这假设您总是在'A1'中有一些值,并且在您到达输入数据的有效行的末尾之前没有空行。

此时,您的值'i'等于已包含数据的行数。

然后您可以使用上面的Christian Payne代码,但修改

Range("A2").Select

Cells(i + 1, 1).Select

这将允许您的宏将数据放在现有数据下方的下一个空白行中。

答案 2 :(得分:1)

有一种内置的方法可以做到这一点。将列标题放在Excel工作表的第1行,选择单元格A1,然后转到Data菜单并选择Form

这可能是一种限制性解决方案,因为您无法执行诸如基于另一个字段填充一个字段之类的事情(例如,提供依赖于所选故障的问题列表)。如果你只是需要快速而简单的东西,那就完成了工作

答案 3 :(得分:0)

要将活动单元格向下移动到a3(即你问的下面的下一行),请使用:

ActiveCell.Offset(1, -4).Select

答案 4 :(得分: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