读罢《EXCEL专业开发》,最大的震撼就是著者对VBA技术的追求以及对Excel艺术品般的设计。受到此书著者的启发,也打算把自己在日常开发中一些经验总结出来,一来作为自己的知识储备,二来也能在网络上分享。

Excel公式、函数以及自身单元格的格式化为UI的设计提供了极大的便利性,这方面的内容在《Excel专业开发》中有详述,就不必赘述了。在该书中,也对预定义名称做了论述。其中提到,预定义名称是工作表用户接口设计中的一个重要组成部分,包括预定义的命名常量、命名区域和命名公式。该篇文章将专注于命名区域在UI设计中的作用做一个总结。

1、按照具体数据要求可将不同区域分别进行命名,保证每部分信息的独立性,方便数据验证或区域验证等要求,如可将在销售分析中的客户信息与销量信息分别命名,分别分析两个部分的数据或信息。

采用这种方式后,判断是否选中了相关命名区域可采用与区域相关的一些函数:

Application.Intersect
Application.Union

2、可在已命名的区域内将每列项采用枚举类型设立索引,以便UI变更时统一修改。

3、灵活使用相对引用于绝对引用。

4、使用工作表的Protect方法将UI保护起来,防止用户操作不慎输入坏的数据,破坏一致性。

5、将标题行、数据行设为Public的常数变量以便使用。

6、将使用行数变为工作表的属性,便于调用。

PS几条VBA的特殊TIPS:

1、VBA的IF不支持条件短路;

2、使用不同进程的EXCEL打开文件。

With Application
.DisplayAlerts = False
.IgnoreRemoteRequests = True
.DisplayAlerts = True
End With

VBA开发经验总结之一:利用Range对象设计用户界面的更多相关文章

  1. VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别

    在VB中,属性是可以有参数的,而VBA中属性使用参数非常常见.比如最常用的:Worksheet.Range("A1:A10")  VB的语法,使用参数的不一定是方法,也有可能是属性 ...

  2. 处理Selection对象和Range对象——Word VBA中重要的两个对象

    处理Selection对象和Range对象——Word VBA中重要的两个对象 Word 开发人员参考Selection 对象代表窗口或窗格中的当前所选内容.所选内容代表文档中选定(或突出显示)的区域 ...

  3. Excel VBA Range对象基本操作应用示例

    [示例01] 赋值给某单元格[示例01-01] Sub test1()Worksheets("Sheet1").Range("A5").Value = 22Ms ...

  4. VB默认属性、动态数组、Range对象的默认属性的一点不成熟的想法

    1.默认属性 VB6.0有默认属性的特性.当没有给对象指定具体的属性时,"默认属性"是VB6.0将使用的属性.在某些情形下,省略常用属性名,使代码更为精简. 因为CommandBu ...

  5. Entity Framework 实体框架的形成之旅--利用Unity对象依赖注入优化实体框架(2)

    在本系列的第一篇随笔<Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)>中介绍了Entity Framework 实体框架的一些基础知识,以及构建 ...

  6. 运用 Range 对象处理 Word 文档内容

    运用 Range 对象处理 Word 文档内容   在所有 Office 应用程序中,Microsoft Word 可能是应用最广泛的应用程序,它还经常在自定义 Office 解决方案中扮演重要的角色 ...

  7. Excel VBA入门(五)Excel对象操作

    本章是本系列教程的重点.但我觉得应该不是难点.从第零章开始到学完本章,应该可以把VBA用于实战中了. Excel对象主要有4个: 工作薄 Workbook 工作表 Worksheet 单元格区域 Ra ...

  8. 8 Range 对象

    8.1 引用Range 引用Range的主要方法: Application.ActiveCell Application.Range Application.Selection Worksheet.C ...

  9. Python中的常用内置对象之range对象

    range(start, stop[, step])  可生成满足条件的数.具体来说是返回一个从start开始到小于stop的相邻数的差step的等差数列列表.结果中包含start一直到小于stop的 ...

随机推荐

  1. hdoj 1541 Stars【线段树单点更新+最大值维护】

    Stars Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  2. jni编译non-numeric second argument to `wordlist' function错误

    在jni编译过程中,遇到non-numeric second argument to `wordlist' function错误,个人遇到这个错误的原因,是因为从windows中拷贝了Android. ...

  3. Android应用开发学习之Selector

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来看一个通过selector动态改变ImageButton背景图片的例子,下图是该程序的运行效果: 该程序中 ...

  4. oracle启动

  5. FairScheduler的任务调度机制——assignTasks(续)

    上一篇文章浅析了FairScheduler的assignTasks()方法,介绍了FairScheduler任务调度的原理.略过了最后一步通过JobScheduler获取Task时调用JobInPro ...

  6. .net互转java 转行必备

    .net与java其实是差不多的语言,学习起来只需要弄清楚差异及查库的方法,转起来还是很快的 以下列出几点,希望能给正在转行的你一些帮助 1,java与c#语言超详细对比 http://www.har ...

  7. Day 3 @ RSA Conference Asia Pacific & Japan 2016 (afternoon)

    13.30 hrs Keynote    Security in the World-Sized Web Bruce Schneier,Chief Technology Officer, Resili ...

  8. ubuntu给手机建wifi

    声明 笔者近期意外的发现 笔者的个人站点http://tiankonguse.com/ 的非常多文章被其他站点转载,可是转载时未声明文章来源或參考自 http://tiankonguse.com/ 站 ...

  9. leetcode 题解 || Swap Nodes in Pairs 问题

    problem: Given a linked list, swap every two adjacent nodes and return its head. For example, Given ...

  10. [D3] 7. Quantitative Scales

    # Quantitative Scales var colorScale = d3.scale.quantile() .domain([d3.max(dataset) / 4, d3.max(data ...