我需要一个代码,该代码根据项目中某些特定单元格的不同值给出消息,我已经在Excel中使用了VBA,但从未在Project中使用过VBA,所以我不知道该怎么做
[我在VBA Excel中编写了代码,该代码执行了与Project中相同的操作,但是我需要代码,但带有Project的信息,但是我在Excel中使用的功能未在Project中定义,所以我不知道如何添加代码
Option Explicit
Private Sub Avance()
Dim PtjR As Double
Dim PtjP As Double
Dim FechaRI As Date
Dim FechaRF As Date
Dim FechaPI As Date
Dim FechaPF As Date
Dim ListaT As String
Dim i As Integer
Dim ListaTT As String
For i = 3 To 40
FechaPI = Round(Cells(i, 2).Value, 2)
FechaPF = Cells(i, 3).Value
FechaRI = Cells(i, 4).Value
FechaRF = Cells(i, 5).Value
PtjR = Round(Cells(i, 6).Value, 2)
PtjP = Round(Cells(i, 7).Value, 2)
If PtjR < PtjP Then
ListaT = ListaT & vbNewLine & Chr(13) & "La tarea" & " " & Cells(i, 1).Value & " " & "se encuentra en DELATE, lleva" & " " & PtjR * 100 & "% y debería llevar" & " " & PtjP * 100 & "%"
If FechaPF - DateValue(Now) < 0 Then
ListaT = ListaT & ". Esta tarea debió terminar hace " & -(FechaPF - DateValue(Now)) & " días."
ElseIf FechaPF - DateValue(Now) <= 7 Then
ListaT = ListaT & ". Esta tarea termina en " & FechaPF - DateValue(Now) & " días."
End If
End If
Next i
MsgBox ListaT, vbCritical, "Advertencia"
End Sub
我不确定代码的唯一改变方式是如何获取单元格的值,但是知道如何做将对您有很大帮助
要获取任务的值,请使用Task对象。在这种情况下,您需要使用Tasks对象(所有任务的集合)循环浏览所有任务。尚不清楚您需要哪些任务字段,但这应该可以帮助您入门:
Private Sub Avance()
Dim PtjR As Double
Dim PtjP As Double
Dim FechaRI As Date
Dim FechaRF As Date
Dim FechaPI As Date
Dim FechaPF As Date
Dim ListaT As String
Dim t As Task
For Each t In ActiveProject.Tasks
FechaPI = t.Start
FechaPF = t.Finish
FechaRI = IIf(t.BaselineStart = "NA", 0, t.BaselineStart)
FechaRF = IIf(t.BaselineFinish = "NA", 0, t.BaselineFinish)
PtjR = t.PercentComplete
PtjP = t.PhysicalPercentComplete
If PtjR < PtjP Then
ListaT = ListaT & vbNewLine & Chr(13) & "La tarea" & " " & t.Name & " " & "se encuentra en DELATE, lleva" & " " & PtjR * 100 & "% y debería llevar" & " " & PtjP * 100 & "%"
If FechaPF - DateValue(Now) < 0 Then
ListaT = ListaT & ". Esta tarea debió terminar hace " & -(FechaPF - DateValue(Now)) & " días."
ElseIf FechaPF - DateValue(Now) <= 7 Then
ListaT = ListaT & ". Esta tarea termina en " & FechaPF - DateValue(Now) & " días."
End If
End If
Next t
MsgBox ListaT, vbCritical, "Advertencia"
End Sub
请注意,Percent Complete和Physical Percent Complete属性返回的值为0到100,所以以后不要乘以100。