当前位置: 首页 > 办公技巧 > 正文

excel狼道办公技巧教学(Excel+ACCESS进销存设计思路及VBA源码分享-02:导航设计)

  • 叁碗诸角 叁碗诸角
  • 办公技巧
  • 2023-08-16 06:20:59
  • 0

由于系统功能较多,我们需要设计一个导航界面,来控制各个模块。

导入设计方法主要有以下几种:


按钮式:指定某个工作表为主控台(就是可以调用各个模块的界面),放置多个按钮,可以是宏按钮,也可以是ActiveX按钮,本帖主要探讨进销存的功能,所以都以按钮方式来操作;指定工作表为导航表,放置图片,然后指定宏,可以使界面更加的美观;更高级的操作是自定义Ribbon功能区,这样做出来的导航功能性更强,也显的更专业,不用定义导航表,直接镶嵌在excel的菜单中,这种方式要excel2007以上版本才支持;利用VSTO制作侧边窗格做导航;

下面我们用按钮来做一个导航界面:


把工作薄第1个工作表命名为“主控台”(名称自己随便起);设计一下界面分区:

我们在每个单元内先写入按钮名称,文字尽量小一些,后面要用按钮把文字完成覆盖,这样就看不到文字,而只看到按钮。


由于按钮较多,如果一个一个手工操作比较麻烦,后续再有新的功能出现时也需要手工增加,我们在界面上增加一个设置按钮的按钮,命名为cmdSetup,该按钮的功能是在此界面中根据单元格中是否有文字来决定是否增加一个按钮。按钮(cmdSetup)中的代码思路为先清除工作表上所有名称以“CommandButton”开头的按钮,然后从C3单元格开始向右向下历遍所有单元格,单元格中有文字的就创建一个新的按钮,位置为当前单元格,名称为单元格中的文字,并设置字体和大小,代码如下:

Private Sub cmdSetup_Click()Dim obj As OLEObjectDim rng As RangeDim r%, c%Application.EnableEvents = FalseApplication.ScreenUpdating = False'删除所有名称为"CommandButton*"的按钮For Each obj In sMain.OLEObjectsIf obj.Name Like "CommandButton*" Thenobj.DeleteEnd IfNext'从C3单元格开始向右向下查找有内容的单元格,并设置按钮,位置置于单元格内For r = 3 To sMain.UsedRange.Rows.CountFor c = 3 To sMain.UsedRange.Columns.CountSet rng = Range("A1").Offset(r - 1, c - 1)If rng.Text <> "" Then'创建一个新的按钮Set obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1")'设置按钮的位置,obj.Left = rng.Left 4obj.Top = rng.Top 6obj.Height = rng.Height - 12obj.Width = rng.Width - 8'设置按钮名称及字体颜色obj.Object.Caption = rng.Textobj.Object.BackColor = RGB(69, 151, 201)obj.Object.ForeColor = vbWhiteobj.Object.Font.Name = "微软雅黑"'防止名称过多显示不出来,当超过6个文字时缩小文字If Len(rng.Text) >= 6 Thenobj.Object.Font.Size = 10Elseobj.Object.Font.Size = 11End IfEnd IfNextNextApplication.ScreenUpdating = TrueApplication.EnableEvents = TrueEnd Sub按上述代码录入后,点击按钮设置,效果如下图:按钮增加后,我们需要为每个按钮增加响应代码,由于按钮较多,我们采取所有代码响应一个事件的处理方法。方法如下:在代码编辑器中增加一个类模块clsObj,代码如下:增加一个模块modButton,代码如下:然后在主控台工作表激活的事件中增加初始化控件操作,当主控台每次被激活时就可以用一个事件来响应所有的按钮操作,区别操作的关键字就是按钮的名称。通过上述代码就可以达到一个事件响应所有的按钮操作,后续只要不断的补充doMenu这个过程的内容就可以了。

最新文章