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