2017-02-20 89 views
-1

我知道一点关于VBA的知识,但似乎无法解决这个编程问题。基于另一个单元格内容插入数据

我有一张工作表,我想要编程在任务结束前需要多少天。每个状态等于若干天,例如,如果文件处于待处理阶段,则需要完成180个总数。但是我想要的是在每个阶段写出它需要的天数。例如

状态被写入范围E3:E160

如果细胞在范围=待定然后 偏移4列以上和写入20,以及5列以上偏移和写35和6列在偏移和写50 ,并且偏移7列并写入25,并将8列写入并写入15和9列偏移并写入15,最后偏移10列并写入20

然而,如果单元格在范围=“规划”中,则偏移5列并写入35,并偏移6列并写入50等等,直到偏移10列结束并写入20

目标是针对每种状态,偏移量的数量基于状态。

希望这个帮助 我假设它会是一个循环或者什么的,但我真的不知道它。

此外,它需要能够捕获在范围内或范围外插入的任何新行。

由于任何人谁就能帮助我

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 

Dim LastRow As Long 
Dim i As Long 
LastRow = Range("E" & Rows.Count).End(xlUp).Row 

For i = 3 To LastRow 

    If Range("E" & i).Value = "Pending" Then 

    Range("I" & i).Value = "20" And Range("J" & i).Value = 35 And Range("K" & i).Value = 50 And Range("L" & i).Value = 25 And Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20 

    ElseIf Range("E" & i).Value = "Planning" Then 
    Range("J" & i).Value = 35 And Range("K" & i).Value = 50 And Range("L" & i).Value = 25 And Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20 

    ElseIf Range("E" & i).Value = "Screening" Then 
    Range("K" & i).Value = 50 And Range("L" & i).Value = 25 And Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20 

    ElseIf Range("E" & i).Value = "Exam" Then 
    Range("L" & i).Value = 25 And Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20 

    ElseIf Range("E" & i).Value = "Interview" Then 
    Range("M" & i).Value = 15 And Range("N" & i).Value = 15 And Range("O" & i).Value = 20 

    ElseIf Range("E" & i).Value = "References" Then 
    Range("N" & i).Value = 15 And Range("O" & i).Value = 20 

    ElseIf Range("E" & i).Value = "Closing" Then 
    Range("O" & i).Value = 20 

    End If 
Next i 

End Sub 
+1

堆栈不是我的服务代码。如果您提供的代码是针对特定问题编写的,那么我们可以排除故障,但是您不会从头开始编写定制解决方案。 – Zerk

+0

当然,对不起,我到目前为止所写的内容存在的问题是它“起作用”,但它唯一的作用是在每个状态的第一个范围内写入0。希望你能帮助:-) –

+0

我已经adred在我的问题代码 –

回答

1
If Range("E" & i).Value = "Pending" Then 

    Range("I" & i).Value = 20 
    Range("J" & i).Value = 35 
    Range("K" & i).Value = 50 
    Range("L" & i).Value = 25 
    Range("M" & i).Value = 15 
    Range("N" & i).Value = 15 
    Range("O" & i).Value = 20 

ElseIf Range("E" & i).Value = "Planning" Then 
    Range("J" & i).Value = 35 
    Range("K" & i).Value = 50 
    Range("L" & i).Value = 25 
    Range("M" & i).Value = 15 
    Range("N" & i).Value = 15 
    Range("O" & i).Value = 20` 

你需要在你的Then条款摆脱所有And语句。这是一个例子。你可以改变其余的。您也可以查看Case Select方法。

+0

真棒,我会尝试它,并会让你知道。谢谢sonmuch的帮助! :-) –

+0

这完美地工作:-)非常感谢你! –

相关问题