Excel VBA设计测绘工程电子计算表格从入门到入土(待完结)- 开发方法举例

马上就要毕业了,最近一直做的这个,介绍一下个人的感受与经验,希望以后的大家少走弯路。

我个人使用的电脑是win 10家庭版,office 版本2016。

从第一个宏程序入门

第一步、新建一个xlsx工作簿
第二部、文件-选项-自定义功能区中,把右边一列中的开发工具给勾上,如下图:
在这里插入图片描述
在这里插入图片描述
第三步、点击录制宏(在菜单里面或者窗口左下角)
在这里插入图片描述
在这里插入图片描述
第四步、执行操作
例如移动几下窗口,选几个表格、输入几个字符、输入公式、调一下字体格式等等。
点确认
确定后录制键就会变成停止录制键,结束后点停止运行即可
在这里插入图片描述

第五步、运行宏
新建一个空白工作表(sheet2)
在这里插入图片描述
点宏列表的键
在这里插入图片描述
找到你录的宏
在这里插入图片描述
点执行

在这里插入图片描述
所有操作就会在这里出现

第六步、保存
在这里插入图片描述
得另存为xlsm文件,才能保存使用的宏功能
在这里插入图片描述

第七步、查看代码

在宏界面点编辑,会弹出VBE界面
在这里插入图片描述
在这里插入图片描述

可以看到几步简单的操作,代码却很长 (markdown 中的vb高亮关键词是vbnet)
简单分析一下VB的代码,和

Sub1()  ' 宏的开头 (Sub + 名字 + 括号)
'
' 宏1 宏
' VB中的注释是在句头加个单引号,三个单引号是段落注释
'
    Range("A1:G13").Select   ' range对象
    Selection.EntireColumn.Delete   ' 整列删除
    
    Application.Left = 157.75  
    Application.Top = 178    '移动窗口
    
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "打字1"    ' 打字

    Range("B2").Select
    ActiveCell.FormulaR1C1 = "111"   ' 数字

    Range("C2").Select
    ActiveCell.FormulaR1C1 = "222"


    
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C[1]/R[-1]C[2]"
  ' 输入公式,公式使用双引号括住的整体,如  "= 3/2" 需要引用的时候可以直接用绝对位置,如"=B2/C2", 默认公式是相对位置,格式为R[a][b],a为向下,b为向右,自行体会

    Range("B3:C3").Select
    
    Range("C3").Activate
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge  ' 合并并居中
' 合并后的单元格要再选中的话建议用范围表示,或者用最上最左的一个单元格来运算,其他的会报错

    Range("A3:C4").Select  
    Range("A4").Activate
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
' 给a3:c4范围加表格全部边框,excel共6种边框,上下左右内部垂直内部水平,自行体会


    Range("A5:A6").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge

    Range("B5").Select
    ActiveCell.FormulaR1C1 = "2.22222"
    
    Range("B5").Select
    Selection.Copy
    Range("B6").Select
    ActiveSheet.Paste     ' 复制粘贴,不同大小的合并单元格不能粘贴

    
    Range("D1").Select
    Application.CutCopyMode = False  ' 不知道啥意思
    ActiveCell.FormulaR1C1 = "1"
    Range("D2").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("D3").Select
    ActiveCell.FormulaR1C1 = "3"

    Range("D1:D3").Select
    Selection.AutoFill Destination:=Range("D1:D11"), Type:=xlFillDefault
    Range("D1:D11").Select '  填充柄
    

    Range("A5:A6").Select
    ActiveCell.FormulaR1C1 = "自定义格式"
    
    Range("B6").Select
    Selection.NumberFormatLocal = "000.""  ""00"".  ""00?"
' 自定义格式,显示成度分秒(详见前一篇博客)

    Range("C5").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=R[1]C[-1]"

    Range("C5").Select
    Selection.NumberFormatLocal = "G/通用格式"
   
    
    Range("D11").Select
    
End Sub   ' 结束宏

第八步、运行代码

把鼠标放到宏的代码间点一下,表示目前的宏是 宏1 ,点击f5就可以运行调试了。
在这里插入图片描述
第九步、其他常用语句
由于一般用不到输出对象,但还是说一下把

' 定义变量
' dim 变量名  as  数据类型            '声明一个数据类型为xx的变量
' public  变量名 as  数据类型         '声明一个数据类型为xx的公共变量

' 例如
Public target_num As Integer
Public target_beizhu As String

' private  变量名 as  数据类型       '声明一个数据类型为xx的私有变量
' static  变量名 as  数据类型         '声明一个数据类型为xx的静态变量


' 输出
' 立即窗口:
    Debug.Print "\nHello, World!"
' msgbox:    
	MsgBox "Hello, World!"




' 函数
' 例1
Function d() As Integer
    d = 40
End Function  返回的就是与函数同名的变量d
' 例2
Function LastRow() As Long
' 找出表格最后一行
'
    Dim ix As Long
    ix = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    LastRow = ix
End Function

' 引用
' 定义了一个宏:
Sub 引用()
    Debug.Print "Hello, World!"
    MsgBox "Hello, World!"
End Sub

' 用一个宏来引用它
Sub helloworld2()
    Debug.Print "调用宏 引用()"
    Call 引用
    Debug.Print "调用成功"
    Debug.Print "调用函数 d()"
    Call d
    Debug.Print "调用成功"
End Sub

如何设计电子表格

Excel的xlsx类文件叫做工作簿文件,文件里面的sheet叫工作表。
Excel 有很多类文件,不仅支持本地,也支持在线
在这里插入图片描述

如何使用VBA开发应用实际

应用是将逻辑代码和实际功能操作相整合起来,本人主要是通过将VBA宏函数嵌入到开发界面来实现功能模块化:

主要分为如下几个步骤:

如何编辑VBA代码

本章主要介绍如何从代码层面进行代码的编写。

在开发工具选项页中单击Visual Basic即可到达VBE(editor)界面。
VBE界面
这个界面非常的不友好,下面介绍如何进行代码的编写。

一、了解界面

例如在视图菜单中加入我们所常用的debug窗口
视图选项页
字体和颜色在这里调: VBE - 工具 - 选项:
在这里插入图片描述

二、组织结构

在左侧的project窗口可以了解整个文件的代码层次
工程窗口

三、如何添加代码和窗口

在本工程的范围内任意位置右键即可插入文件:
插入
可以看到一共有窗体、模块、类模块三个选项;窗体即包含了界面设计和响应事件的窗体文件,模块即普通空文本,可以储存函数与变量,类模块本质上也是一个代码文本文件,只是用来写类。
添加代码文件

Excel 工作簿文件是一种集成性文件包,所有的代码都可以存储在同一个xlsm文件内部,第三方的编辑器使用起来不是很方便,后面也会说到,不过是通过导入和导出也是可以用的。将xlsm文件的后缀改成zip,再打开可以看到内部是由多个文件组成的,其中也可以看到我们所创建的代码文件。

四、编辑代码

我们点开一个模块文件,一个文件内理论上是可以写入无数个宏、函数、各种语句的,先从一些简单的语句写起
在这里插入图片描述
1、第一个手写宏
在模块一的文件内部写入如下代码,所有sub开头的都是宏,可以在整个文件内被随时搜索到,调用到。

Sub 第一个宏()
    Debug.Print "第一个宏" '英文单引号是注释,保存后会变绿色
End Sub

点击运行或者f5,即可在立即窗口中看到输出结果
在这里插入图片描述
VBA中的输出通常和表格相关联,即可改写成如下代码,即可发现表格的第一行第一列的内容变了。

Sub 第一个宏()
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "第一个宏"
End Sub

2、第二个宏
紧接上一个宏,我们再写个sub - end sub的结构,保存后,它会自动给我们分隔开。代码如下:

Sub 第二个宏()
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "第二个宏"
End Sub

在这里插入图片描述
在存在多个宏时,系统会默认运行你输入光标所在的那个宏,如果没光标的话,会跳一个弹窗让你选,运行结果如下。
在这里插入图片描述

3、函数

在上一个函数的

五、调用代码

六、编辑窗口

七、调用窗口

八、其他

最后,VBE的次世代界面很不友好,建议大家自己配一个文本编辑器,保护以下眼睛。

写在后面

东西比我想得要多一点,目前就先写到这里了吧,有问题可以留言或者去我的github 留 issue,我会尽力回答的,至于回复时间,就随缘吧

最后祝大家学业有成,事业顺利

Extra

粘点自己作的一些笔记
在这里插入图片描述
在这里插入图片描述

excel 函数
在这里插入图片描述
常用语句

在这里插入图片描述

读物推荐

比较基础一点的是一个老外写的,Excel 宝典 和VBA编程宝典,老多页了,写的很直白,想要实现的功能不知道怎么做可以对着目录查一下,百度云链接如下:

链接:https://pan.baidu.com/s/1FmC0MK1WKwtRnWcJSaxiaA 
提取码:9yr4 

另外更多的学术内容直接去知网上当就行了,这类论文还挺多的

最后推荐几个挺方便的网站,推荐多用用微信的搜一搜,有时候都能搜到资源。

http://www.gb99.cn/(免费规范,不太全)
http://www.bzfxw.com/(有免费的)
http://www.downcc.com/(下文档,不太全)
http://teyilai.cn/(混进了什么奇怪的东西)
http://www.yunsuan.info/(矩阵计算器)
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值