学习Excel技术,关注微信公众号: excelperfect 写在开头的话:本系列从第133篇开始的22篇文章,都是翻译改编自fastexcel.wordpress.com的Making your VBA...UDFs Efficient系列,可能有点高深晦涩,但确实都是好的VBA用户自定义函数编程细节技巧和经验。...对于大多数人来说,你可以略过这些内容,因为我们只需懂得基础的VBA用户自定义函数知识就足够了。对于想深入研究VBA的人来说,还是值得研究和试验的。...然而,随着自已研究VBA的深入,不由得佩服老外对VBA研究的深入,此时刚好Excel VBA解读系列又写到自定义函数这里,正好拿出来,边研究并翻译分享给大家。...例如,如果所有参数都被定义为Double,那么Excel将在参数传递给用户定义函数之前尝试将参数强制转换为Double,如果参数实际引用了未计算的单元格,则不会调用用户定义函数。
目录 任务介绍 选择文件夹 选择文件保存路径 交互选择一列 交互选择一行 任务介绍 VBA编程中,为了程序的灵活性,有时候需要用到用户交互操作,例如让用户选择一个文件夹,用户选择一个单元格等等。...本文将介绍一些常用的用户交互操作的实现 选择文件夹 St = Application.FileDialog(msoFileDialogFolderPicker).Show '如果选择了文件夹就返回-1,... False Then MsgBox "Save as " & fileSaveName Else Exit Sub '没有选择保存路径,退出程序 End If '创建空白excel
首先选择开发工具选项卡-插入-单选框(窗体控件),在工作表中任意画出几个单选框,Excel会按顺序给单选框命名。...Excel会为三个复选框依次命名,每个复选框是否选中都是相互独立的。 为每个复选框设置单元格链接,事例中设置为每个复选框前面的单元格。...---- 今天下雨 本节主要介绍表单控件中的单选框、分组框和复选框,后续会简单演示些示例,祝大家学习快乐。
大家好,Excel中的控件是放置在窗体的一些图形对象,可以用来显示、输入数据或者执行操作等。包括命令按钮、数值调节钮文本框、列表框、单选框、复选框等。...控件分为两种,分别是表单控件和ActiveX控件。表单控件只能在工作表中通过设置控件格式或者指定宏来使用,而ActiveX控件则有属性和事件,可以在工作表中和用户窗体中使用。...在Excel工作表中主要使用表单控件,它不仅与早期Excel版本更兼容,而且使用相对更简单,下面将分两节介绍常用的表单控件。...先准备了两个简单过程,点击插入--表单控件--按钮控件。 在工作表位置拖动画出一个按钮(窗体控件),松开鼠标后Excel会弹出指定宏的窗口,可以选择按钮绑定的sub过程,确定后即指定宏。...下面通过简单示例来演示下如何使用,首先以几个水果的价格为例,已经设置了函数公式价格=单价*数量,并计算总计。 插入数值调节钮控件,选择设置控件格式--控制选项。
大家好,上节介绍过按钮、数值调节钮和滚动条控件,本节主要演示在工作表中结合函数公式来扩展数值调节钮功能的示例。(滚动条和数值调节钮的使用方法雷同,只使用数值调节...
Private Sub VBAPassword() ‘你要解保护的Excel文件路径 Filename = Application.GetOpenFilename(“Excel文件(*.xls &...*.xla & *.xlt),*.xls;*.xla;*.xlt”, , “VBA激活成功教程”) If Dir(Filename) = “” Then MsgBox “没找到相关文件,清重新设置...CMGs = i If GetData = “[Host” Then DPBo = i – 2: Exit For Next If CMGs = 0 Then MsgBox “请先对VBA
但是在VBA中,数据类型跟Excel不完全相同。...,都应该将最后的计算结果保存在过程名称中,这相当于其他语言中的函数return内容 使用自己定义的函数 在Excel中使用: 如果定义的函数没有被定义为私有过程,那么我们可以通过【插入函数】在Excel...但是VBA中没有Excel的内置函数,使用worksheetfunction可以调用Excel中的内置函数。...可以在excel的【功能区】中找到它们 表单控件 控件名称 控件说明 按钮 用于执行宏命令 组合框 提供可选择的多个选项,用户可以选择其中一个项目 复选框 用于选择的控件,可以多项选择 数值调节按钮 通过单击控件的箭头来选择数值...当在工程中添加一个窗体后,就可以在窗体上自由的添加ActiveX控件,只要通过编写VBA代码为这些控件指定功能,就能利用这些控件与excel互动 在工程中添加一个用户窗体 设置属性,改变窗体的外观 在窗体中添加和设置控件的功能
在Excel里,能发生的事件很多: 打开、关闭工作簿 新建工作簿 新建工作表 激活工作表 选择单元格 单元格改写 ………… 这些都是事件,其实就是平时手动操作Excel的一些动作。...在Excel VBA里提供了接口,在发生这些事件之前或者之后,让使用者可以设置一段运行的程序。 比如双击打开工作簿,可以设置运行一段程序: ?...VBA才能识别它为一个事件,所以为了避免使用者手动输入而造成的错误,Excel VBA提供了下拉选项让使用者直接选择。...Excel文件一旦创建,就已经创建好了几个特殊的模块:ThisWorkbook、Sheet1(有几个工作表就会有几个Sheet#模块)。...而且事件用的不恰当,会影响Excel的运行效率,刚接触事件的可能会觉得比较好玩,建议事件的使用场所是在一些比较简单的表格里,一旦数据运算非常复杂了,尽量不要去使用。
学习一下,记录一下,资料来自于网络 网络代码收集一: Sub test() Dim arr, brr, i&, r&, k Set d ...
EXCEL VBA 取当前登录 用户名的多种实现方法 1....使用环境变量 dim iuser iuser = Environ(“username”) 3.VBA获取excel文件当前用户名的代码 (与windows用户名看看有否区别) Public Sub 获取当前工作表的用户名...() MsgBox “当前用户名是: ” & Application.UserName End Sub 4....使用API 方法获取 用户名 ‘API调用 Private Declare Function GetUserName Lib “advapi32.dll” Alias “GetUserNameA” _...(ByVal lpBuffer As String, nSize As Long) As Long ’转成VBA里常规的字符 Public Function NTDomainUserName() As
文件打开后执行的代码 Workbook_BeforeClose:文件关闭前执行的代码 这两个事件在Office2007版本之前使用应该还是比较多的,那时候还没有Ribbon菜单,菜单是下拉式的,也就是和VBA...'删除菜单 End Sub Private Sub Workbook_Open() '创建菜单 End Sub Workbook_BeforeClose中有个参数Cancel,我们知道VBA...Cancel的意思是取消,把取消设置为True的意思就是要取消某个操作,而在这里,这个操作就是Close工作簿,所以Excel就不会关闭了。...同时,配置信息又是可以修改的,一般会设置在Excel单元格中进行修改,那么这些修改的信息又要存储到外部,为了避免忘记这个操作,就可以把信息存储的过程放到Workbook_BeforeClose中,这样读取...Workbook中还有许多其他的事件,可以多去试试,结合自己使用Excel的情况看看是不是有适合的。
学习Excel技术,关注微信公众号: excelperfect 在前面的几篇文章中,我们自定义的函数使用定义为Range的参数来从Excel工作表中获取数据,例如: Function VINTERPOLATEB..., _ Col_Num As Long) 如果在公式中使用单元格区域作为参数来调用该函数,运转得非常好: =VINTERPOLATEB($H1,$A$1:$C$10000,2) 但是,如果使用计算表达式或者一组常量作为参数...但用户自定义函数现在必须处理Variant可能包含的所有不同类型的数据。...因此,在通用目的的用户自定义函数中,希望使用Variant型参数,并且经常需要确定变体的类型以及上限和下限。...在确定变体的子类型时,VBA还有几种方法: If TypeOf theVariant Is Range Then If TypeName(theVariant) = “Range”Then 尝试使用VarType
Function PinYin2(Hz As String) Dim PinMa As String Dim MyPinMa As Varian...
设置1个自定义名称selectrow=CELL("row"),CELL("row")能够返回当前选中单元格的行号 选中所有单元格,设置条件格式: =ROW()=selectrow 在事件中设置工作表重新计算...,因为CELL("row")在单元格选择变化的时候是不会重新计算的 Private Sub Worksheet_SelectionChange(ByVal Target As Range) ActiveSheet.Calculate...Then '第一行是标题,文件路径从第2行开始 If Target.Column = 2 Then '存放在B列 If VBA.Dir...(Target.Value, vbDirectory) "" Then '文件存在的情况下,打开文件(这里举例打开Excel文件)
image.png 前面的《Excel VBA:办公自动化》和大家分享了VBA常用的基础知识,就有同学留言问我:猴子老师,能不能出一个项目实战案例,可以把前面的知识都应用起来。...下面我们将这个案例的VBA代码展示出来,然后对每一句拆解分析。...然后,我们将这些意思联合起来,用大白话说就是:程序调用工作表的计数函数,首先,计算表格1-基础数据中D列非空单元格个数,然后将计算的这个值「赋值」给左边的变量「totalrow」。...但是需要注意「赋值」语句的右边「"站名:" & zhanhao & Chr(10)& "发票号码:" & zhanming」中的「Chr(10)」表示“换行”的意思,即:当几个内容中间添加换行符之后,实际Excel...VBA录制宏了解下」。利用这个方法,我们录制一下: image.png 看到这里,有同学可能又有疑问了:猴子老师,你确定这俩是一回事?
Excel VBA之Find expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase,...可为字符串或任意 Microsoft Excel 数据类型。 After Variant 类型,可选。表示搜索过程将从其之后开始进行的单元格。此单元格对应于从用户界面搜索时的活动单元格位置。
最近做了一个VBA的小case,用于方便excel数据的处理,主要的功能代码记录如下。 1....根据表单名称从workbook中查找出特定表单: For Each sitem In ThisWorkbook.Worksheets If sitem.Name = sname...复制表单m的特定内容到表单n: Sheets(m).Range("A10:C11").Copy Sheets(n).Cells(1, 1) 3....删除表单特定区域或者是特定区域的数据验证逻辑规则: Sheets(m).Range("A10:C11").Delete Sheets(m).Range("A10:C11").Validation.Delete
1、对象模型 上一讲说了Range对象,这一次我们从总体方面来说一下Excel VBA的对象模型。 你真正想了解Excel VBA里的对象的话,看官方文档是最好的,没有比官方文档更准确的了。...我们前面说过,Excel VBA的对象都是微软已经做好了,让我们来使用的,所以这些对象和我们平时普通操作Excel都是有联系的,每个对象你都可以想象是在手动操作Excel,手动操作说到底就是做好了一个图形界面让我们去操作...如果你看了官方文档,你应该已经发现Excel VBA里有好多对象,这些对象其实都是有层级关系的,就像一棵树一样,树顶上最高级的是Application,然后不停的分叉,衍生里众多的对象。...打开后的东西,也就是Excel VBA对象模型里的最高级的Application。...4、小结 Excel VBA对象模型,和自己平时操作联系到一起,你能操作什么,就能找到对应的VBA对象。 然后就是多去用才能熟悉。
你可以把“对象”理解为 Excel 中具体的实体,比如:一个工作簿(Workbook)一张工作表(Worksheet)某个单元格区域(Range)图表、按钮、形状等控件每个对象都有自己的属性(它的状态)...理解对象、掌握它的属性和方法,就是写好 VBA 宏的第一步。二、VBA编辑器文件→选项,即可打开“Excel选项”对话框。自定义功能区→勾选「开发工具」,如下图所示。...五、VBA语句1、VBA语句概述1)宏语句Sub 按钮1_Click() ' 给名为 "Sheet2" 的工作表 A1 单元格赋值 ' ThisWorkbook.Worksheets("Sheet2...1)创建按钮打开Excel → 顶部菜单栏选择 「开发工具」 选项卡,点击「插入」→ 在「表单控件」中选择「按钮」,在工作表空白处拖动鼠标绘制按钮。松开鼠标自动弹出「指定宏」窗口,如下图所示。...2)编写VBA宏在 「指定宏」 窗口点击 「新建」打开 VBA编辑器,如下图所示。
‘AddOne ‘AddNew ‘FourthOne Worksheets(“Sheet2”).Activate ‘SeveralRows