VBA窗体控件练习2

作者: 猛犸象和剑齿虎 | 来源:发表于2018-10-20 12:39 被阅读28次
    控件名称标注 效果图仔细看有错误

    (花点心思的时候,excel也可以做的精致。)

    首先声明,这个简易版的职工档案管理系统是根据《别怕,excel vba其实很简单》这本书中的例子做的。

    前几天夜里在听网易公开课app里的TED演讲中,听到有关学习类型方面的描述。

    传统认为,人的记忆类型是不同的,有的人是视觉记忆者,有的人是听觉,有的人是嗅觉,有的是肌肉记忆等等,由此衍生出要针对个人制定出不同的学习方式。而人们也普遍接受这一观点,根据自我经验而认为自我擅长视觉记忆,或者听觉记忆,或者在某些特定的场景有着别人不及的天赋。

    在某些场景,人忽然有一种好似经历过的感觉,比如,心中在想什么人要来的时候,那个人就到了,说曹操曹操就到,就是这个意思,从而感觉自己有着预知的天赋。

    而事实并非如此,大多数人其实都一样,从出生起天赋异禀,甚至是能力偏向都没有本质上的区别,差别在于后天的经历,以及周围环境,他人以及自我心理暗示而产生我善长什么,不擅长什么的认知。

    TED中,举了大量实例与论证来证明这一观点,比如在证明视觉记忆上,一张国际象棋棋盘上放了许多棋子,象棋大师可以一眼就能记忆住所有棋子的位置,而普通人只能记忆其中的三到八个棋子,这并不是说象棋大师都是优秀的视觉天赋者,事实上是象棋大师自我训练过程中不断形成的,棋子在摆放是按照国际象棋的规则摆放的,所以象棋大师才有惊人的记忆能力,当棋子再次随机摆放的时候,象棋大师与普通人没有什么本质的区别。

    这一点说明我们在学习新东西的时候,事实上不存在以往经验中的擅长与不擅长的自我认知与否定,知晓这一点有助于我们在面对自我认为很困难的事情和学习上突破自我的心理障碍。

    当然天赋异禀的人有,毕竟是少数。

    言归正传,书中的这个例子,我初次看的时候直接略过了,因为感觉繁琐,而且难,这两天看的时候依旧看的很困惑,于是我采用了笨办法。

    由于书中的控件名称都做了改动,于是我做了张图,把控件名称一一标注,从而知道各代码部分用的什么控件,然后照着代码,自己运行一边(不懂的就略过),然后把运行错误的地方改一下,点击看过程是怎样执行的,这样再次看代码就有不一样的感觉了。

    代码如下:

    职工档案表

    Option Explicit

    Dim nrow As Long

    Private Sub cmdadd_Click()

    If MsgBox("确定在【职工档案】中添加该员工记录吗?", vbQuestion + vbYesNo, "询问") = vbYes Then

    nrow = Worksheets("职工档案").Range("a1").Range("a1").CurrentRegion.Rows.Count + 1

    Call edit

    End If

    End Sub

    Private Sub cmddel_Click()

    If MsgBox("确定将该员工信息移动到【删除】工作表中吗?", vbQuestion + vbYesNo, "询问") = vbYes Then

    nrow = Worksheets("职工档案").Range("a1:a65536").Find(Range("c7").Value, lookat:=xlWhole).Row

    Worksheets("职工档案").Rows(nrow).Copy Worksheets("删除").Range("a63356").End(xlUp).Offset(1, 0)

    Worksheets("职工档案").Cells(nrow, "a").EntireRow.Delete

    End If

    End Sub

    Private Sub cmdedit_Click()

    If MsgBox("确定修改【职工档案】中该员工的信息吗?", vbQuestion + vbYesNo, "询问") = vbYes Then

    nrow = Worksheets("职工档案").Range("a1:a65536").Find(Range("c7").Value, lookat:=xlWhole).Row

    Call edit

    End If

    End Sub

    Private Sub cmdend_Click()

    nrow = Worksheets("职工档案").Range("a1").CurrentRegion.Rows.Count

    Call findi

    End Sub

    Private Sub cmdfind_Click()

    Dim col As Integer

    If findname.Value = True Then

    col = 7

    Else

    col = 1

    End If

    With Worksheets("职工档案")

    Dim rng As Range

    Set rng = .Columns(col).Find(findtext.Value, lookat:=xlWhole)

    If Not rng Is Nothing Then

    nrow = rng.Row

    Call findi

    Else

    MsgBox "没有记录"

    End If

    findtext.Value = ""

    End With

    End Sub

    Private Sub cmdfirst_Click()

    nrow = 2

    Call findi

    End Sub

    Private Sub cmdformer_Click()

    nrow = Worksheets("职工档案").Range("a2:a65536").Find(Range("c7").Value, lookat:=xlWhole).Row - 1

    Call findi

    End Sub

    Private Sub cmdnext_Click()

    nrow = Worksheets("职工档案").Range("a1:a65536").Find(Range("c7").Value, lookat:=xlWhole).Row + 1

    Call findi

    End Sub

    Sub findi()

    With Worksheets("职工档案")

    Range("c7:e7").Value = .Range(.Cells(nrow, 1), .Cells(nrow, 3)).Value

    Range("c10:e10").Value = .Range(.Cells(nrow, 4), .Cells(nrow, 6)).Value

    Range("c13").Value = .Cells(nrow, 7).Value

    Range("e13").Value = .Cells(nrow, 8).Value

    Range("c16:e16").Value = .Range(.Cells(nrow, 9), .Cells(nrow, 11)).Value

    Range("c19").Value = .Cells(nrow, 12).Value

    End With

    End Sub

    Sub edit()

    With Worksheets("职工档案")

    .Cells(nrow, "a").Resize(1, 3) = Range("c7:e7").Value

    .Cells(nrow, "d").Resize(1, 3) = Range("c10:e10").Value

    .Cells(nrow, 7).Value = Range("c13").Value

    .Cells(nrow, 8).Value = Range("e13").Value

    .Cells(nrow, 9).Resize(1, 3).Value = Range("c16:e16").Value

    .Cells(nrow, 12).Value = Range("c19").Value '

    End With

    End Sub

    相关文章

      网友评论

      • 兰郡子:很棒哦!我可能是听觉记忆类型。视觉记忆就很差。:joy::joy::joy:
        兰郡子:@猛犸象和剑齿虎 :joy::joy::joy:
        猛犸象和剑齿虎:@兰郡子 其实不存在视觉记忆和听觉记忆的差别,而是心里暗示和有意无意的练习。习惯与方法才是记忆力的法门😬
        猛犸象和剑齿虎:@兰郡子 😬

      本文标题:VBA窗体控件练习2

      本文链接:https://www.haomeiwen.com/subject/oywpzftx.html