进度管理是项目管理过程的一个普通应用,很好掌握进度状况,可以对整个项目发展有一个全面掌握,对于任何事情的发展,都要有一个全面了解,特别是很重要的事情。

本节介绍一下,关于如何利用Excel VBA制作进度表。

本进度表以月为单位,如果实现跨月进度管理,那么就变更表结构,所以,进度管理也不是一个固定的模式,如果是以年或十年为单位,就另一说了。
下图为添加进度对话框,为了输入方便,直接做了窗体录入功能,免得在工作表中出现错误。

要做的就是对图表进行分析即可。

Private Sub CommandButton1_Click()
Dim xobj As Object, i As Integer
ReDim uArr(0 To UBound(xArr))
For Each xobj In Me.Controls
If TypeName(xobj) = "TextBox" Then
If VBA.Len(VBA.Trim(xobj.Value)) = 0 Then Exit Sub
For i = 0 To UBound(xArr)
If xobj.Name = xArr(i) Then
If i = 4 Or i = 5 Or i = 6 Or i = 7 Then
If Not VBA.IsDate(xobj.Value) Then Exit Sub
End If
uArr(i) = xobj.Value
Exit For
End If
Next i
End If
Next xobj
Set xobj = Nothing
uArr(0) = "=ROW()/2-1"
AddSheetRange uArr '添加内容
AddNewSheet uArr '添加记录表
End Sub
数组代码
Private Sub getXarr()
xArr = Array("序号", "部门", "类别", "项目名称", _
"计划开始时间", "计划结束时间", "实际开始时间", "实际结束时间", "时长")
End Sub
添加项目过程代码(AddSheetRange())
Private Sub AddSheetRange(uArr)
Dim s As Worksheet, cell As Range, ic As Integer, ix As Integer
Dim st1 As Integer, st2 As Integer, xt1 As Integer, xt2 As Integer
Set s = ActiveSheet
Set cell = s.Range("B4:AN5")
cell.Insert shift:=xlDown
With cell
.ClearFormats
With .Font
.Size = 10
.Name = "仿宋"
End With
For ic = 1 To 4
cell.Cells(1, ic).Value = uArr(ic - 1)
s.Range(cell.Cells(1, ic), cell.Cells(2, ic)).Merge
Next ic
.Interior.Color = RGB(239, 239, 239)
.Borders.LineStyle = 3
.Borders.Color = RGB(112, 121, 211)
cell.Cells(1, 5).Value = "计划"
cell.Cells(2, 5).Value = "实际"
cell.Cells(1, 6).Value = uArr(4) '计划开始时间
cell.Cells(1, 7).Value = uArr(5) '计划结束时间
cell.Cells(2, 6).Value = uArr(6) '实际开始时间
cell.Cells(2, 7).Value = uArr(7) '实际结束时间
cell.Cells(1, 8).Value = "=H4-G4" 'VBA.DateDiff("d", uArr(4), uArr(5)) '计划时长
cell.Cells(2, 8).Value = "=H5-G5" 'VBA.DateDiff("d", uArr(6), uArr(7)) '实际时长
st1 = VBA.Day(uArr(4)) + 8
st2 = VBA.Day(uArr(5)) + 8
xt1 = VBA.Day(uArr(6)) + 8
xt2 = VBA.Day(uArr(7)) + 8
s.Range(cell.Cells(1, st1), cell.Cells(1, st2)).Style = "S1"
s.Range(cell.Cells(2, xt1), cell.Cells(2, xt2)).Style = "S2"
ix = Application.WorksheetFunction.CountA(s.Range("B:B")) - 2
End With
End Sub
甘特图形的绘制是对表格样式的一个赋值,本示例中样式名为”S1″和”S2″。
一代码是对样式进行设置的,有判断样式是否存在、添加等一些操作。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 ivillcn@qq.com 举报,一经查实,本站将立刻删除。文章链接:https://www.shangraobbs.com/n/4639.html