进度管理是项目管理过程的一个常见应用。把握进度状态是很好的,可以对整个项目发展有一个全面的把握,对任何事情的发展都要有一个全面的了解,尤其是非常重要的事情。
任何项目都是先有计划,再制定计划,然后进入建设实施阶段。作为高层,不一定要知道所有的细节,但是要清楚的知道项目要进行到哪个阶段。
如果进度把握不好,后续的一些工作可能会受阻,影响整个过程的顺利进行,最终导致失败或经济损失。相信这些结果,没有人愿意看到。
本节介绍如何使用Excel VBA制作一个日程表。
其实关键内容并不是如何用代码实现的细节。重点是要详细了解整个表是怎么形成的,然后根据自己的需求完成计划表。这是一个很好的学习过程。
上图是整个工作表的结果。表格的前半部分是进度项目的内容,后半部分是图形化显示的进度结果。
这个计划是以月为单位的。如果实现了月进度管理,表格结构将会改变。因此,进度管理不是一个固定的模式。如果是以年或者十年为单位,那就另当别论了。
下图显示了添加进度的对话框。为了输入方便,直接做了表单输入功能,避免工作表出错。
表单很简单,但其背后的代码却不简单。文章会附上一些代码供参考。
整个工作表实现过程就是从这里开始的。只要输入相应的项目内容,就会自动添加到工作表中,计算时间并图形化表示,无需人工干预。
你要做的就是分析图表。
添加按钮代码
private Sub command button 1 _ Click() Dim xobj As Object,i As Integer ReDim uArr(0到UBound(xArr)) For Me中的每个xobj。如果TypeName(xobj) = "TextBox ",则控制 ,如果VBA,则控制。莱恩(VBA。Trim(xobj。Value)) = 0,然后退出Sub For i = 0到UBound(xArr) If xobj。Name = xArr(i) Then 如果i = 4或i = 5或i = 6或i = 7,那么 如果不是VBA。IsDate(xobj。Value)然后退出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 ' Add content。
private subgetxarr() xarr = array("序号"、"部门"、"类别"、"项目名称"、"计划开始时间"、"计划结束时间"、"实际开始时间"、"实际结束时间"、"持续时间")[/
private Sub AddSheetRange(uArr) Dim s As工作表,cell As Range,ic As Integer,IX As Integer Dim st1 As Integer,st2 As Integer,xt1 As Integer,xt2 As Integer Set s = active sheet Set cell = s . Range(" B4:AN5 ") cell。用单元格 插入shift:= XL down 。ClearFormats 。字体 。size = 10 。name = "仿宋体" 结尾为 为IC = 1to4 单元格。细胞(1,ic)。Value = uArr(ic - 1) s.Range(单元。细胞(1,ic),细胞。细胞(2,ic))。合并 下一个ic .Interior.Color = RGB(239,239,239) 。borders.linestyle = 3 。borders.color = RGB (112,121,211) cell.cells (1,5)。value = "plan" 单元格。5).Value = "actual" 单元格。细胞(1,6)。value = uarr (4)'计划开始时间 单元格。单元格(1,7)。value = uarr (5)'计划结束时间 单元格。6).Value = uArr(6)'实际开始时间 单元。细胞(2,7)。value = uarr (7)'实际结束时间 单元。单元格(1,8)。价值= "= H4-G4"' VBA。datediff。UArr(5)'计划持续时间 单元。细胞(2,8)。价值= "= 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))。s范围(单元格。单元格(1,st1),单元格。细胞(1,st2))。Style = "S1" s .范围(单元格。单元格(2,xt1),单元格。单元格(2,Xt2))。Style = "S2" IX =应用。工作表函数。counta(s . Range(" b:b "))-2 END WITH END SUGANT是对表格样式的赋值。在本例中,样式名为 #。S1 # 8243;还有 # 8221;S2 # 8243;。
一个代码就是设置样式,有判断样式是否存在,添加等一些操作。