计划管理,Excel vba 深入研究制作

文/江觅

工作当中对于各项工作,要首先做一个详细的计划,有目的才有方向。国家还有个五年计划,其目的就是要对行为有一个明确的方向指引,不要漫无目的。

如此,计划管理就显得十分有用了 。

这篇文章就以vba的方式来对"计划管理"做一个解读。存在一些不完善的地方,希望有兴趣的朋友进一步完善。

做一个添加计划表和完成情况的效果浏览。至于进度管理可以在接下来继续完成。

一般情况下,我比较习惯先做计划,然后再做事情,这样心理有所准备,假如出现了偏离计划的事情发生,也可以修改计划。

常做计划,还有一个好处就是,一个周期下来,再回顾过往,可以总结经验,获得一个相对可靠的概率统计,进而对以后的工作有一个正确的数据支撑,用一句话来概括就是,不打无准备的仗。

有时候计划管理也存在一些问题,由于万物变化无常,一些突发情况或不可控因素的原因,有些计划可能流于形式,并不能执行下去。

如此,所谓的计划成了一纸空文,怎么办呢!

系统里设定了取消计划,可以重新制定计划,延后执行。

通过对取消计划的统计,也可以从另一方面观察到在工作当中存在哪些问题,接着就加强哪方面的补齐工作。这里要引用木桶理论,哪里不足补哪里。

有时候也十分讨厌,制定各种工作计划,因为一旦制定了计划,就要被迫去完成和执行,这就是说,要和自己的惰性进行对抗,同时也是从一个自我约束的方面来管理行为。

人并不很自觉,特别是做一些并不热衷的事情,很多人是不情愿而为之。

这就是说,我并不相信每个人都热爱自己所做的工作,因为,在我工作之后,发现自己已经没有了爱好。对我来说,算是很可悲的一件事情。

表中贴出了一些不同颜色,实际上就是对不同的计划状态,用不同颜色来区分一下,看上去五颜六色容易识别。

以前,我也做了同样的表,来对自己的工作进行计划,坚持了一小段时间,后来就变成了回忆。

发现做计划并不适合我的工作,或许是本身工作并没有计划性,对也没有感觉不做计划之后耽误了工作。

如此考虑,这篇文章就显得毫无意义了。

不过,我还是大声地提倡,经常做一些计划,随着数据量增加,一些统计之后的图表就显得十分有趣了。

要不然大数据就不会发展成一个门学科,更不会对当前社会产生巨大影响,不言而喻。

添加计划代码

Private Sub CommandButton1_Click()
On Error Resume Next
Application.ScreenUpdating = False
Dim w As Worksheet
Dim iRow As Integer, iCol As Integer
Dim R As Range, rang As Range
Set w = Worksheets("计划记录")
w.Activate
iRow = 2
iCol = w.Range("A1").End(xlToRight).Column
Dim v(), vi As Integer
ReDim v(0 To iCol)
Dim cObj As Object
For Each cObj In Me.Controls
    If TypeName(cObj) = "ComboBox" Then
        If VBA.Len(VBA.Trim(cObj.Value)) = 0 And cObj.Name <> "T14" Then MsgBox cObj.Name & "不能是空值!": Exit Sub
        Select Case cObj.Name
            Case "T1"
                v(0) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T2"
                v(1) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T3"
                v(2) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T4"
                v(3) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T5"
                v(4) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T6"
                v(5) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T7"
                If Not VBA.IsDate(cObj.Value) Then MsgBox cObj.Value & "_日期错误!", vbInformation, "提示": Exit Sub
                v(6) = VBA.CDate(VBA.UCase(VBA.Trim(cObj.Value)))
            Case "T8"
                If Not VBA.IsDate(cObj.Value) Then MsgBox cObj.Value & "_日期错误!", vbInformation, "提示": Exit Sub
                v(7) = VBA.CDate(VBA.UCase(VBA.Trim(cObj.Value)))
            Case "T9"
                v(8) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T10"
                If Not VBA.IsDate(cObj.Value) Then MsgBox cObj.Value & "_日期错误!", vbInformation, "提示": Exit Sub
                v(9) = VBA.CDate(VBA.UCase(VBA.Trim(cObj.Value)))
            Case "T11"
                v(10) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T12"
                v(11) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T13"
                v(12) = VBA.UCase(VBA.Trim(cObj.Value))
            Case "T14"
                v(13) = VBA.UCase(VBA.Trim(cObj.Value))
        End Select
    End If
Next cObj
w.Rows(iRow).Insert '''插入空行
Set rang = w.Range(Cells(iRow, 1), Cells(iRow, iCol)) '''定义赋值区域
rang = v '''赋值
ThisWorkbook.Save
MsgBox "添加成功", vbInformation, "成功"
Application.ScreenUpdating = True
End Sub
举报
评论 0