使用Excel VBA(快捷键)(加菜单)

将excel宏安全性调到中:

 

按alt+f11进入vba编辑器:

记住以下快捷键:

F7 代码窗口

F4 属性窗口

ctrl+R 工程资源窗口

F5 程序运行

TAb 代码缩进

SHIFT+TAB  凸出

 

加菜单:

在excel表中按alt+f11进入代码窗口:


解释:

第一行:vbaproject (测试.xls)   是excel表的文件名。

第二行:microsoft excel对象 表示vba针对的对象是sheet(data),还是thisworkbook(本工作表)

第三行:窗体,是用来设计窗体用的,即,界面容器

第四行:模块。比如设计菜单,就需要用到。(什么叫模块?鼠标能点的都叫模块,比如要做的菜单,要点击的按钮、sheet1等,它也是一种容器,用于存放用户代码)

 什么是类?

Dim tx1 As Textbox

这里我们用到一个类Textbox定义了一个对象tx1

类是一个隐者,上面Textbox是VBA已经给我们准备好的一个类,我们无法知道VBA是怎么准备的(它的真身被隐藏了),但我们可以知道对象tx1怎么用。VBA把对对象的使用划分为三种,属性、方法和事件。

1.窗体模块 
由于VB是面向对象的应用程序开发工具,所以应用程序的代码结构就是该程序在屏幕上表示的对应模型。根据定交,对象包含数据和代码。应用程序中的每个窗体都有一个相对应的窗体模块(文件扩展名为.frm) 
窗体模块是VB应用程序的基础。窗体模块可以包含处理事件的过程、通用过程以及变量、常数、自定义类型和外部过程的窗体级声明。写入窗体模块的代码是该窗体所属的具体应用程序专用的;也可以引用该程序内的其它窗体和对象 
每个窗体模块都包含事件过程,在事件过程中有为响应该事件而执行的程序段。窗体可包含控件。在窗体模块中,对窗体上的每个控件都有一个对应的事件过程集。除了事件过程,窗体模块还可包含通用过程,它对来自该窗体中任何事件过程的调用都作出响应。


2.标准模块 
标准模块是程序中的一个独立容器,包含全局变量、Function(函数)过程和Sub过程(子过程)。 
可将那些与特定窗体或控件无关的代码放入标准模块中。标准模块中包含应用程序内的允许其它模块访问的过程和声明。它们可以包含变量、常数、类型、外部过程和全局声明或模块级声明。


3.类模块 
在VB中类模块是面向对象编程的基础。可以在类模块中编写代码建立新对象。这些新对象可以包含自定义的属性和方法。实际上,窗体正是这样一种类模块,在其上可安放控件,可显示窗体窗口。
用类模块创建对象,这些对象可被应用程序内的过程调用。标准模块只包含代码,而类模块包含代码又包含数据,可视为没有物理表示的控件。


 

 

step 1:双击thisworkbook,打开代码窗口输入:

Private Sub Workbook_Open() '打开文件时自动加载自定义菜单项
    Menu_Create
End Sub
           
Private Sub Workbook_BeforeClose(Cancel As Boolean) '关闭文件时自动卸载自定义菜单项
   Menu_Delete
End Sub

 

step 2:在工程窗口,右键,插入,模块:

在属性里将名称改为:menu

双击menu,输入以下代码:

Sub Menu_Create()
    Dim myMnu As Object
    Set myMnu = CommandBars("Worksheet menu bar").Controls. Add(Type:=msoControlPopup, Before:=10)


    With myMnu
    .Caption = "关于 &(A)"
    End With


    menuItem_Create
End Sub
        
        
Sub menuItem_Create()
    With Application.CommandBars("Worksheet menu bar").Controls("关于 &(A)")
    .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "帮助"
    .Controls("帮助").OnAction = "宏1"
    .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "注册"
    .Controls("注册").OnAction = "宏2"
    End With
End Sub
        
        
Sub Menu_Delete()
CommandBars("Worksheet menu bar").Controls("关于 &(A)").Delete
End Sub

其中,宏1,宏2可以进行单独的程序编写。

 

保存,再次打开此文件后,菜单中出现:



 

恢复菜单

如果出现程序错误,而导致菜单固定,可用代码恢复:

在thisworkbook里输入:

Sub RestroeBar()
     Application.CommandBars("Worksheet menu bar").Reset
End Sub

然后运行此代码,即可。

 

还有一种办法恢复:

在Windows XP中,删除“C:\Documents and Settings\用户名\Application Data\Microsoft\Excel”文件夹中的“Excel11.xlb”文件,而在Windows Vista中,该文件在“C:\用户\用户名\AppData\Roaming\Microsoft\Excel”文件夹中。“Excel11.xlb”文件中保存了Excel 2003自定义菜单栏和工具栏设置,删除该文件后Excel将自动恢复默认的菜单栏和工具栏。

呃,很多人会找不到这个文件。Application Data是隐藏的。
 

 

如果要加载菜单到鼠标右键中

则在thisworkbook里加入下面代码:

'*****************************************************************
'时间:2011-4-24
'功能:在Excel2007版右键菜单中生成2003版菜单

'来源:http://hi.baidu.com/winas
'*****************************************************************

Sub addto_rightkey()


With Application.CommandBars("cell")
.Reset


With .Controls.Add(Type:=msoControlButton, before:=1)
.Caption = "新加入的右键菜单"
.BeginGroup = True
.OnAction = "do_right"
End With


End With


End Sub

'---------------------------------
Sub do_right()
Application.CommandBars("Built-in Menus").ShowPopup
End Sub

'*****************************************************************

Sub del_rightkey()
Application.CommandBars("cell").Reset
End Sub


 

 

 菜单的属性

 在 VBA 和 Microsoft Visual Basic 中,按钮和菜单项用 CommandBarButton 对象表示。显示菜单和子菜单的弹出控件用 CommandBarPopup 对象表示。

其他,请参考F1.

commandbarbutton的属性与方法

Add 

添加菜单栏,方法是使用 CommandBars 对象集合的 Add 方法,然后为 Menubar 参数指定 TRUE 值。

Enabled 

如果 Enabled 属性的值为 TRUE,那么用户可以使用 Visual Basic 代码使指定的菜单栏可见。如果 Enabled 属性的值为 FALSE,用户就无法让菜单栏可见。不过,菜单栏将出现在可用命令栏列表中。
Protection 

使您可以通过特定用户操作来保护菜单栏。
Position 

指定新菜单栏相对于程序窗口的位置。菜单栏相对于程序窗口的位置可以是以下 MsoBarPosition 常量属性之一:msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup(用于创建快捷菜单)或 msoBarMenuBar(仅用于 Apple Macintosh)。
Visible 

指定控件是可见的,还是隐藏的。

以下代码示例创建名为 My Command Bar 的自定义命令栏: 
Sub MenuBar_Create() Application.CommandBars.Add Name:="My command bar" End Sub 

以下代码示例返回活动菜单栏的名称:
Sub MenuBars_GetName()   
   MsgBox CommandBars.ActiveMenuBar.Name   
End Sub

 


您还可以通过使用 Temporary:=True 参数来创建自定义命令栏。Temporary:=True 参数允许命令栏在您退出 Excel 时自动重置。以下代码使用 Temporary:=True 参数创建自定义命令栏:
Sub MenuBar_Create()   
Application.CommandBars.Add Name:="My command bar", Temporary:=True  
End Sub

 

在模块中:

针对sheet中的退出按钮

Sub 退出系统()
'
MsgBox "歡迎您下次再使用,如有意見請與我聯系!!"

ActiveWorkbook.Save '自动保存

ActiveWorkbook.Close '关闭表,相当于ctrl+f4
End Sub

引用链接:http://hi.baidu.com/winas/item/5fdb2b267dd9e84646996280

转载于:https://www.cnblogs.com/wenxiangchen/p/3237835.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

赛迪研究院发布《2018年中国自动驾驶产业发展及投资价值白皮书》!

来源:中国电子信息产业发展研究院10月19日,由北京市人民政府、工业和信息化部主办,工业和信息化部装备工业发展中心、中国电子信息产业发展研究院(以下简称“赛迪研究院”)等机构共同承办的“世界智能网联汽车大会”进…

瓦片地图与geoserver发布

本文主要包括以下内容 TileMill生成Tile影像金字塔(.mbtiles压缩文件)Mbutil(https://github.com/mapbox/mbutil)解压缩Apache HTTP Server(或tomcat) 建立web瓦片服务客户端调用( http://www.arcgis.com/home)测试 首先将数据…

AI手机报告 | 揭秘手机行业未来AI之路

来源:网易智能在10月19日上午举办的IDC中国数字化转型年度盛典的“人工智能与大数据”分论坛上,IDC(国际数据公司,International Data Corporation)联合旷视科技发布“AI手机”行业白皮书报告——《IDC手机行业白皮书&…

Flex 学习笔记------FLACC Crossbridge

FLACC & Crossbridge 前段时间在研究如何在Flex项目中处理图片的一些信息,比如获取图片的颜色通道,DPI信息等,搜索了半天还是一无所获。图像处理是一个比较复杂的过程,不过想来前端处理图像也是一个必然的趋势。 看看这个腾讯…

IOS之计算器实现

本文利用ios实现计算器app,后期将用mvc结构重构 import UIKitclass CalculViewController: UIViewController {IBOutlet weak var display: UILabel!var userIsInTheMiddleOFTypingANumber:BoolfalseIBAction func appendDigit(sender: UIButton) {let digitsender…

AI进军新药发现研究?这99页slides了解一下

来源:专知摘要:近些年,深度学习对许多研究领域产生了深远的影响,应用场景也十分宽泛。我们都知道在医疗领域,新药发现研究是高成本,低产出的,但是对推进医疗领域的发展起到至关重要的作用。今天…

HDU 4651 数论 partition 求自然数的拆分数

别人的解题报告&#xff1a; http://blog.csdn.net/zstu_zlj/article/details/9796087 我的代码&#xff1a; 1 #include <cstdio>2 #define N 1000203 const int mod 1e97;4 int p[N];5 void Partition()6 {7 p[0] 1;8 for(int n1; n < 1e5; n)9 { 10 …

IOS之笑脸app

ios笑脸app实现 import UIKitIBDesignable class FaceView: UIView {IBInspectablevar lineWidth:CGFloat3{didSet{setNeedsLayout()}}IBInspectablevar color:UIColor UIColor.blueColor(){didSet{setNeedsLayout()}}IBInspectablevar scale:CGFloat0.9{didSet{setNeedsLay…

15年来,自然语言处理发展史上的8大里程碑

来源&#xff1a;Deep Tech深科技自然语言是人类独有的智慧结晶。自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是计算机科学领域与人工智能领域中的一个重要方向&#xff0c;旨在研究能实现人与计算机之间用自然语言进行有效通信的各种理…

最短路径实现

主要工具 QGIS建立拓扑关系 Postgres存储数据表 Geoserver发布相关服务 QGIS建立拓扑关系 使用v.clean运行&#xff0c;并用DBManager即可以建立拓扑关系并导入数据库。 注意 QGIS2.16有数据溢出问题&#xff0c;使用QGIS2.14可以解决这个问题 Postgres存储数据表 导…

2019将成机器学习关键年:中美AI或有一战

作者 | Hussain Fakhruddin译者 | 大小非编辑 | Vincent 来源 | AI前线(ID&#xff1a;ai-front)导读&#xff1a;2019 年将是机器学习关键的一年。ML 已经成为全球数字转型的关键要素之一——到 2021 年底&#xff0c;累计投资预计将达到 580 亿美元。在企业应用领域&#xff…

深度 | IBM长文解读人工智能、机器学习和认知计算

来源&#xff1a;人工智能产业链联盟人工智能的发展曾经经历过几次起起伏伏&#xff0c;近来在深度学习技术的推动下又迎来了一波新的前所未有的高潮。近日&#xff0c;IBM 官网发表了一篇概述文章&#xff0c;对人工智能技术的发展过程进行了简单梳理&#xff0c;同时还图文并…

多变量线性回归

目前为止,我们探讨了单变量/特征的回归模型,现在我们对房价模型增加更多的特征, 例如房间数楼层等,构成一个含有多个变量的模型,模型中的特征为(x1,x2,…,xn) 增添更多特征后,我们引入一系列新的注释: n 代表特征的数量 x(i)代表第 i 个训练实例,是特征矩阵中的第 i 行,是一…

人工智能乌托邦 迪拜认为2071年人类应该这样生活!

来源&#xff1a;网易智能不同于硅谷老牌的科技力量&#xff0c;迪拜一直是独特的存在。他们日益崛起的科技实力正在被验证&#xff0c;无论是全面AI化的基础建设和城市治安力量&#xff0c;还是频频登上全球科技头条的机器人警察和空中出租车&#xff0c;迪拜试图摆脱很多人眼…

逻辑回归与正则化

在分类问题中,你要预测的变量 y 是离散的值,我们将学习一种叫做逻辑回归 (Logistic Regression) 的算法,这是目前最流行使用最广泛的一种学习算法。 在分类问题中,我们尝试预测的是结果是否属于某一个类(例如正确或错误)。分类问 题的例子有:判断一封电子邮件是否是垃圾邮件;判…

万字报告!一文看懂全球车厂的技术家底模块化平台

来源&#xff1a;智东西摘要&#xff1a;介绍模块化平台以及该平台对车企的重要意义&#xff0c;详解车企模块化平台布局。汽车的研发制造方式经历了手工作坊式到标准化流水线再到平台化&#xff0c;目前主流车企纷纷采取模块化平台方式。汽车模块化平台研发制造是指车企基于通…

西湖大学全披露:68位顶级科学家加盟,已获捐资35亿,最小捐赠者12岁

来源&#xff1a;量子位最终&#xff0c;2018年10月20日&#xff0c;成为了西湖大学的成立日。在刚结束的成立大会上&#xff0c;5名诺贝尔奖得主、70余位国内外校长及代表、近百位捐赠人齐聚。可谓少长咸集&#xff0c;高朋满座&#xff0c;生而备受期待。而且就在创立大会上&…

字体大宝库:设计师必备的专业免费英文字体

字体绝对是每一个设计非常重要的部分&#xff0c;设计者总是希望有最好的免费字体&#xff0c;以保持他们字体库的更新。所以今天我要向设计师们分享一个专业的免费英文字体集合。这些免费的字体是适用于任何类型的图形设计&#xff1a;Web&#xff0c;打印&#xff0c;动态图形…

神经网络学习

代价函数 首先引入一些便于稍后讨论的新标记方法: 假设神经网络的训练样本有 m 个,每个包含一组输入 x 和一组输出信号 y,L 表示神经 网络层数,Sl表示每层的 neuron 个数(SL表示输出层神经元个数),SL代表最后一层中处理 单元的个数。 将神经网络的分类定义为两种情况:二类分…

干货|深度!“人工智能+制造”产业发展研究报告

来源&#xff1a;&#xff1a;腾讯研究院工业革命以后的“自动化”概念追求的是机器自动生产&#xff0c;本质是“机器替人”&#xff0c;强调在完全不需要人的情况下进行不间断的大规模机器生产&#xff1b;而“智能化”追求的是机器的柔性生产&#xff0c;本质是“人机协同”…