vba excel编程三日谈(1)

VBA Excel实战 为了帮朋友实现Excel中的一个功能,接触了VBA Excel。历经两天的时间,现将最终结果存档。 参考资料 vba excel编程三日谈 实现功能 在Excel文档中,当第一列为“是”,则右边6个单元格不可编辑且背景色改变;当第一列为“否”,则右边6个单元格可编辑且背景色恢复白色。 准备工作 新建一个Excel文档,选中第一列,按照下图设置数据有效性: 代码 Private 阅读详情

最近由于要修改一个excel report,见识了vba的强大。 这个report是一个大牛3年前写的,每天只需打开该文件, 就会自动连接oracle的dev和uat数据库读取最新的市场数据, 生成6个透视图,并比较dev和uat的数据的异同。vba操作数据之方便,生成的report之复杂,深深的吸引了我, 于是乎觉得不学点vba真的对不起老本行。花了3天时间学习, 目前觉得基本可以满足大多数需求,即便是有不懂的地方, 也知道在哪里查资料,该怎么查资料。为了防止自己很快忘记, 于是有了vba excel编程3日谈, 内容涵盖对象模型, 基本语法,excel表格基本操作,事件,ADODB连接数据库读取数据, 生成透视图。本人没有学过vb,写出来的东西在过来人看来未免太简单, 但只求对新手有帮助。

vba excel编程三日谈(1)

vba excel编程三日谈(2)

vba excel编程三日谈(3)  

准备工作

vba是一种寄宿语言,像javascript生存在浏览器中一样,vba生存在office应用程序中。所以请确保你安装了office,本人学习的时候采用的office2007, 版本差异会引起一些问题, 但是office2003和office2007的差异不是很大。

新建一个excel文档test.xls, 按alt+F11进入vba编程界面。双击左面的thisWorkbook,在右边输入:

Private Sub Workbook_Open()
    MsgBox "Hello, world"
End Sub

保存并退出excel,然后重新打开该excel,则会看到弹出的消息Hello,world。 如果遇到macro安全警告,请enable。这就是第一个vba程序,Workbook_Open是对事件open的响应函数(关于事件在后面会有更多介绍)。

当然你可以把代码写在任何一个sheet里面,也可以就地运行,调试。双击sheet1,在右边输入:

Sub test()
    MsgBox "Hello, world"
End Sub

然后把光标移到函数名test上,点击工具栏上的绿色的箭头即可运行测试该函数。

我们还可以在excel的工作表上添加一个控件(比如按钮),通过点击控件来执行函数。把菜单切换到Developer标签,如下图点击Insert即可选择插入的控件(如果是office2003则在菜单试图->工具栏->控件工具箱)

点击按钮,在工作表的任意位置画一个按钮,同时在选择框中点击你刚编写的函数test,保存。 此时点击按钮即可触发该函数。

当然你还可以录制宏, 这也是学习vba的好方法。在这里不做介绍。

OK, 至此,我们学会在怎么定义一个过程(函数), 然后怎么触发运行它(通过事件,通过vba运行调试,通过按钮),准备工作到此结束。

 

vba excel对象模型

类似javascript中的dom模型, windows编程中的组件对象模型, vba也有自己的对象模型. excel的模型中的对象有很多(自己可以google一下), 但是经常用到的无非这四五个:application -> workbooks -> worksheets -> range ->cells. application处于最顶上,表示正在运行的程序(Excel)本身. workbook工作薄, 即一个excel文件单元, 对应着一个xls文件. worksheet是工作表, 新建一个workbook里面默认包含了3个worksheet; range表示工作表中的一块区域, 比如Range("A1:D10")表示A1:D10之间的那块区域, 一个range包含多个Cell,一个cell即worksheet中的一个小格子. 新建一个文件1.xls,并在sheet1的A1单元格中随便输入内容, 下面的程序将更清楚的表明它们之间的关系. 继续在刚才的test.xls的sheet1的代码区中输入如下代码:

当然每个对象都有很多属性和方法可以使用.如例:

这么多方法和属性记不住怎么办? 没关系,有自动语法提示: 菜单->tools->options 勾选auto list members.

关于对象模型就说这么多, 记不住或不了解的, 可通过录制宏, 自动代码提示, google等渠道获得.

 

基础语法

数据类型和定义变量

vba的基础数据类型有byte boolean integer long single double currency decimal date...长度精度上有所差别.

如下展示基本数据类型的定义和使用, 其中要注意的是Date类型的赋值比较特殊, 要用##包含起来, 常用类型还有更简单的定义方式:

常用类型说明符
% integer
& long
! single
# Double
$ string
@ currency

如果定义的变量是对象类型, 比如WorkSheet, 则要用set来赋值.

定义和使用数组:

过程&函数

通过sub subname(param1, param2 ...) ...... end sub 可定义过程, 也可定义function,function和sub的区别是function有返回值.其他都一样, 在这里就不讨论function了.

一个过程可以调用其他过程.

过程可以带参数, 传参数的方式有两种, 传值和传引用. 凡是有编程基础的人都应该明白这两种方式的区别.

流程控制

if语句:

select case 语句:

循环控制:

最后说一下vba的with语法和语句换行. with语法是为了减轻程序输入负担, 在with范围类, 默认的当前对象就是with指定的对象, 如下程序 with指定了font, 则下面的.Name .FontStyle等都是指Range("A1").font的成员:

vba程序的基本单元是行, 如果要换行, 需用符号"_"来处理:

ok, 太累了,这篇就写到这儿.

Excel 6种趋势线实战:燃尽图预测项目交付,R²值对比选最优模型 本文详细介绍了Excel中6种趋势线模型在项目管理中的应用,特别是燃尽图的预测功能。通过线性、对数、多项式、指数、幂和移动平均等趋势线,结合R²值对比,帮助项目管理者精准预测交付日期,优化资源分配。文章还提供了数据准备、图表制作和模型选择的实用技巧,是提升项目管理效率的必备指南。 阅读详情

相关推荐

Excel时间序列分析实战:移动平均、ACF与Holt模型

时间序列分析是业务预测与决策的核心基础,其本质在于理解数据的趋势性、周期性与随机性结构。从原理看,移动平均通过滑动窗口平滑噪声以揭示业务节奏;自相关函数(ACF/PACF)量化数据的‘记忆长度’,辅助判断平稳性与建模复杂度;Holt线性趋势法则用双参数解耦水平与斜率变化,适配真实增长的非匀速特性。这类方法的技术价值在于高透明度、低门槛验证和强业务可解释性,特别适用于销售预测、库存优化、运营复盘等高频决策场景。本文聚焦Excel原生能力,将移动平均、ACF计算与Holt模型实现转化为可触摸、可调试、可汇报的落

ciya3282的博客 430

操作工作表

'选中表的三种写法 Sub f1() 'select选中的意思 Sheet1.Select '选中表名字为sheet1的表 Sheets(1).Select '选中第一张表 Sheets("1月").Select End Sub '单元格 Sub f2() [a1] = 6 '对于固定的单元格可以这么写 Range ("a" & i) '对于不固定的 End Sub '添加表 Sub...

积一时之步,臻千里之遥程 606

掌握Excel VBA编程:从入门到实践

对象代表了整个 Excel 应用程序。它是所有其他 Excel 对象的最顶层对象。使用对象,可以控制 Excel 的外观和行为,例如,可以更改 Excel 的标题栏、设置显示选项,或者控制其他应用程序和 Excel 之间的交互。以下是使用对象的一些示例代码:' 设置 Excel 的标题栏文本Application.Caption = "自定义标题"' 显示状态栏信息Application.StatusBar = "正在处理..."' 隐藏工具栏' 设置应用程序的显示更新选项。

weixin_33610780的博客 5524

Excel VBA编程教程(基础一)

VBA介绍 Visual Basic for Applications(VBA)是 VisualBasic 的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展 Windows 的应用程序功能,特别是Microsoft Office软件。 说简单点,VBA 是运行在 Microsoft Office 软件之上,可以用来编写非软件自带的功能的编程语言。Office 软件提供丰富的功能接口,VBA 可以调用它们,实现自定义的需求。基本上,能用鼠标和键盘能做的

O_MMMM_O的博客 6万+

Excel VBA:从入门到精通的完整教程

在本章中,我们将踏入VBA(Visual Basic for Applications)的世界,它是Microsoft Office应用程序的编程语言,用于自动化和扩展软件的功能。我们将介绍VBA的基本环境以及如何在其中工作。内置函数虽然方便,但在实际应用中,我们往往需要根据特定需求编写自定义函数。自定义函数能够使我们的代码更加灵活和可重用。创建自定义函数的第一步是声明函数本身以及任何需要的参数。上述代码定义了一个名为AddNumbers的函数,它接受两个Double。

weixin_35982453的博客 1万+

SAP PPDS启发式排产实战:从零配置到自定义规则开发(附ABAP代码示例)

本文详细介绍了SAP PPDS启发式排产的实战应用,从基础配置到自定义规则开发的全流程。通过ABAP代码示例,展示了如何实现多目标优化、实时响应和约束可视化,帮助企业提升订单交付率、减少设备闲置时间。文章还包含开发环境准备、标准模板解析、自定义开发步骤及性能优化技巧,适合制造业数字化转型的实践参考。

seed的博客 183

VBA(学习笔记)

VBA 学习笔记

m0_65939803的博客 6129

鸿蒙日历组件进阶:教你打造个性化日程管理界面(支持月份切换)

本文深入探讨了鸿蒙应用开发中自定义日历组件的构建方法。通过详解基于Grid的布局设计、核心日期算法、月份切换逻辑以及事件管理集成,指导开发者打造支持个性化日程管理的高性能日历界面,提升应用交互体验。

weixin_29207149的博客 66

vba excel编程三日谈(2)

表格基本操作由于表格操作内容繁多, 本文将以例子为主演示一些常用的操作.下面的例子将演示怎么遍历worksheet,选中worksheet,添加worksheet,删除worksheet.Sub test8() Dim sh As Worksheet For Each sh In ActiveWorkbook If sh.Name = "Sheet1" Then sh.Range("A1").Value = "Haha" En

sunxing007的专栏 1万+

手把手教你解决Keil5安装时xerces-c_3_0.dll缺失和0xc000007b报错(附文件下载与路径设置)

本文详细解析了Keil5安装过程中常见的xerces-c_3_0.dll缺失和0xc000007b报错问题,提供了从文件获取、路径设置到系统配置的完整解决方案。同时,文章还涵盖了STM32开发环境的搭建技巧和最佳实践,帮助开发者快速构建稳定的嵌入式开发环境。

weixin_29164497的博客 599

CLIP-Count代码配置以及踩坑记录

CLIP-Count代码配置以及踩坑记录

学术菜鸡 1011

vba excel编程三日谈(3)

本文将讲解vba连接数据库读取数据,更新数据, vba创建透视图.vba连接数据库读取数据,更新数据使用adodb通过windows系统提供的datasource, 即可连接各类数据库并进行crud操作.通过控制面板->Administrative Tools ->DataSource (ODBC) 即可查看和添加/修改datasource. 下面演示如何为oracle添加一个dataSource, 前提是本地要安装oracle客户端.需要注意的是: TNS Service Name必须是%ORACLE_C

sunxing007的专栏 1万+

SAR图像去斑(Despeckling)研究的主流开源数据集

这些数据集专门用于训练监督学习去斑模型,提供了配对的含斑SAR图像和对应的无噪声参考图像(Ground Truth)。这些数据集主要用于目标检测/识别,但包含原始SAR图像,可用于。由于缺乏真实无噪声SAR图像,许多研究采用。

VectorShift的博客 128

Excel中的vba基础入门

比较浅显的入门知识: vba excel编程三日谈(1) vba excel编程三日谈(2) vba excel编程三日谈(3)

贾亮的专栏 1458

【RT-DETR多模态融合改进】| 自研 多模态大核选择模块:MM_LSK,适配多模态图像信息融合

本文记录的利用改进的多模态大核选择模块(MM-LSK)优化RT-DETR,构建可见光-红外双模态目标检测网络。在遥感等大尺寸图像的可见光-红外双模态小目标检测任务中,单模态检测易受光照、云雾、背景干扰等因素影响,且小目标外观信息匮乏,无法仅基于单模态外观实现较好的识别,因此需要融合双模态互补特性与广泛的跨模态上下文信息进行辅助。

Limiiiing的博客 381

【教程4>第2章>第19节】 GMSK解调系统的FPGA开发与matlab对比验证

MSK(Minimum Shift Keying,最小频移键控)和GMSK(Gaussian Minimum Shift Keying,高斯最小频移键控)都是数字调制技术,主要用于无线通信系统中将数字信号转换为模拟信号进行传输。它们都是连续相位移键控(Continuous Phase Shift Keying, CPK)的一种形式,意味着相邻码元之间没有相位跳变的突变,而是连续过渡,这有助于减少信号带宽和降低邻道干扰。GMSK的解调过程与MSK类似,我们这里还是采用和MSK解调一样的1bit解调方法。

FPGA/MATLAB学习教程/源码/项目合作开发 1219

vba 不等于_你不知道的excel高级玩法—点击单元格弹出一个范闲

试玉要烧三日满,辨材须待七年期。大家好,我是IT探险家,今天给大家带来excel的高级玩法。先给大家看一张动图,点击一个单元格出现了一个范闲!这是什么鬼?什么鬼?鬼?再来看看下面这个,真的让人啼笑皆非啊。看了上面2张动图,大家发现没有,所有的起因都是从点击一个单元格开始的。那为什么会这样呢?首先一点大家需要知道excel中有一个叫做VBA的东西,那什么是VBA呢?VBA(Visual Basic ...

weixin_39576127的博客 1372

智能化教育改革中的教师角色转变:AI应用架构师如何设计“人机协同”系统?

个性化与规模化的矛盾:如何用AI实现规模化的个性化学习,同时保留教师的“人文温度”?自动化与自主性的矛盾:如何用AI自动化流程(如批改),同时避免教师沦为“AI操作工人”?数据驱动与经验驱动的矛盾:如何平衡AI的“数据决策”与教师的“经验决策”,避免“算法偏见”或“经验固化”?在智能化教育改革中,教师始终是教育的核心——AI系统是“辅助工具”,而非“替代者”。

小白菜的博客 1269

VBA和宏

Visual Basic for Applications(VBA)是一种Visual Basic的一种宏语言,是VB的子集,主要能用来扩展Windows的应用程序功能,比如office、Access、Outlook、FrontPage 和 Publisher等。VBA的功能很强大,甚至可以基于它来制作一些程序和游戏,比如excel三国杀。。感觉vba是一个很好玩的东西,初步学习了一下,一些入门资

山已几的Blog 1684

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 说说几种项目构建工具
下一篇: vba excel编程三日谈(2)
sunxing007
博客等级 码龄21年 628粉丝 174原创
评论 12
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值