我对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
答案 0 :(得分: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`
您需要删除And
子句中的所有Then
语句。这是一个例子。你可以改变其余部分。您可能还想查看Case Select
方法。