项目计划进度表怎么做(项目计划进度表制作教程)

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

项目计划进度表怎么做(项目计划进度表制作教程)(1)

任何项目首先有个计划,然后做出方案,接着就是进入施工和实施阶段,作为高层,并不需要了解所有的细节部分,但是清楚地知道项目进行到哪一个阶段是必要的一个方面。

如果对进度没有很好掌握,那么一些后续工作可能会受阻,进而影响整个过程顺利进行,最终会导致失败或者经济损失。相信这些结果,没人喜欢看到。

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

项目计划进度表怎么做(项目计划进度表制作教程)(2)

其实,重点内容并不是如何用代码实现的细节,重点是要对整个表是怎样形成的,有一个详细理解,然后结合自己的需求,完成符合自己的进度表,这就是一个很好学习过程。

上图为整个工作表的结果,表的前半部分为进度项目内容,后半部分为图形化显示的进度结果。

本进度表以月为单位,如果实现跨月进度管理,那么就变更表结构,所以,进度管理也不是一个固定的模式,如果是以年或十年为单位,就另一说了。

下图为添加进度对话框,为了输入方便,直接做了窗体录入功能,免得在工作表中出现错误。

项目计划进度表怎么做(项目计划进度表制作教程)(3)

窗体很简单,但背后的代码并不简单,文章后面会附一些代码,以供学习参考。

整个工作表实现过程就是从这里开始,只要录入相应项目内容,会自动添加到工作表中,并进行时间计算和图形化表现,不需要人为干预。

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

项目计划进度表怎么做(项目计划进度表制作教程)(4)

添加按钮代码

Private Sub CommandButton1_Click()Dim xobj As Object, i As IntegerReDim 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 IfNext xobjSet xobj = NothinguArr(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 IntegerDim st1 As Integer, st2 As Integer, xt1 As Integer, xt2 As IntegerSet s = ActiveSheetSet cell = s.Range("B4:AN5")cell.Insert shift:=xlDownWith 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")) - 2End WithEnd Sub

甘特图形的绘制是对表格样式的一个赋值,本示例中样式名为”S1″和”S2″。

一代码是对样式进行设置的,有判断样式是否存在、添加等一些操作。

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页