|
我们写了一段通用的模块 但是由于用户的需求不同
比如一组数据的计算结果不同的用户希望结果输出在不同的位置
由于事先不可能知道用户输出的表名称及单元格位置 我们无法使程序"智能化"
你可以在程序中加入inputbox让用户自由选定
但是用户每次使用都选定一次非常麻烦
能不能一次设定 永远有效?
稍微有编程基础的同学都会想到 那就是常量
常量是在程序运行过程中不可改变的量 这样就可以只设定一次!
我们通常在使用固定不变的参数的时候 运用常量来表示 使程序不但易于理解 更方便日后的修改
但这一切都是程序员"一厢情愿"的在做 用户的意志没有得到体现
问题二就来了,能不能让用户参与常量的设定?
在日常工作中 我会告诉同事 ALT+F11 然后 你把某某模块中的 Const SHNAME = "Sheet1!$A$1" 改成你需要输出的表格的位置就可以了
这就是最简单的用户参数常量的设定
但是我敢打赌 对于不关心程序的人来说 他会连ALT+F11快捷键都会在一周内忘光
更别说某某模块的某某常量了
所以 我们需要一个引导流程来帮助完全不懂VBA的用户来完成这一切
正规软件都会有一个设置选项 用于设定这些常量参数 一般储存在注册表或ini配置文件中
但对于我们EXCEL来讲 就小题大做了
我们需要的只是一个inputbox就足够了
不同于之前提到inputbox那样每次都需要用户来设置一次,因为那时候用户影响的仅仅是变量而已
我们直接用inputbox来操作常量!
这样一切的问题都迎刃而解了
但是!(故弄玄虚一下^^)
常量可接受的数据类型 大概可以分为两种 字符串型和数值型
把参与权交给用户 就代表了不确定性
你希望用户传递一个单元格地址 用户却直接输入了一个数值0
当然 你可以用数不胜数的if嵌套来处理这些用户可能让你程序崩溃的非法参数
好在Excel已经提供了限定型的Inputbox
那就是Application.Inputbox 仅仅多了一个type参数 一切就简单了
走到这一步 已经万事俱备 只欠东风了
下面就是需要实现这一切的代码了
没什么神秘的 操作VBA来写VBA代码必须信任对于 Visual Basic 项目的访问 必须引入 Microsoft Visual Basic Application Extensibility 的引用
然后...
让常量也"变量"起来吧!
给出一个最简单的示例 本示例实现最基本的效果
用户打开工作簿 会参与常量的设定
设定后运行会显示用户的设定值 且设定只需一次 可重设定
常量变量化.rar
(10.51 KB, 下载次数: 212)
|
评分
-
2
查看全部评分
-
|