excelvba问题 麻烦标下变量和变量的意思

excelvba问题 麻烦标下变量和变量的意思,第1张

大概就这样的
Sub 按A列筛选顺序连续打印()
Sheet1Activate 'sheet1表被激活,选择
Dim d, arr, i&, r&, y& '定义变量
Set d = CreateObject("ScriptingDictionary") '建立字典
r = Cells(RowsCount, 1)End(3)Row '变量r表示A列有数据的最后1行
arr = Range("A4:A" & r - 1) '数组区域,从A4开始直到A列有数据的最后倒数1行
y = UBound(arr)
For i = 1 To y '变量i 从1开始循环
d(arr(i, 1)) = ""

Sub test()
a = "AA"
MsgBox Replace(Cells(, Range(a & 1)Column + 1)Address(0, 0), 1, "")
End Sub
btw: 用cells代替range可以直接用int变量作为行号列标

最近在Excel论坛中的帖子中包含一些VBA代码,并询问为什么代码不断失败。前几行代码如下所示:

Dim Count

Dim List

Dim Address

我没有研究他的代码,因为他声明变量的方式使他的代码难以理解。实际上,他的问题可能是由他处理变量的方式引起的。

那么,让我们看看他应该怎么做

明确使用选项

默认情况下,Excel不会强制您声明变量。但是,您应该立即更改该设置。

在任何版本的Excel中,按Alt + F11启动Visual Basic编辑器(VBE)。选择工具,选项。在“选项”对话框的“编辑器”选项卡中,确保“要求变量声明”前面有一个复选标记。

选择确定后,插入一个新的模块。这样做时,您将看到Option Explicit作为模块的第一行。此行告诉Excel必须声明所有变量。

指定变量类型

要声明变量,请输入Dim,变量名称和变量类型……有点像……

子Foo()

昏暗计数为整数

昏暗列表作为范围

昏暗的地址作为字符串

结束子

…或这个…

子Foo()

昏暗计数为整数,列表为范围,地址为字符串

结束子

如果不指定变量类型,如本文顶部的第一个示例所示,则VBA会将变量声明为Variant类型。Variant可以接受任何类型的变量。

在极少数情况下,您有充分的理由使用Variant。但是大约95%的时间,您应该使用显式变量类型。这样做的原因之一是您的代码将运行得更快。但是主要的原因是,至少出于两个原因,您将减少编码错误。

减少编码错误的第一个原因是Excel会强制执行您指定的变量类型。为了说明,如果您运行此宏…

子Foo()

昏暗计数为整数,列表为范围,地址为字符串

Count =“ Smith”

结束子

…Excel启动错误对话框,因为Integer数据类型不能包含文本。(但是,Excel 会接受类似……的声明

Address=99

…因为“ 99”可以表示为文本。)

明确声明变量类型始终是一个好主意的第二个原因是,它有助于在编写代码时记录您的意图。如果经过数周后再看代码,此文档至关重要。知道变量是要包含数字还是文本,可以使您更轻松地阅读旧代码,查找错误并继续编码。

因此,当您确实需要将变量声明为Variant时,请像下面这样显式地进行 *** 作:

Dim MyVariable as Variant

通过始终明确声明变量,您将始终知道您打算使用变量,而不是出于疏忽的目的。

使用匈牙利表示法

查尔斯·西蒙尼(Charles Simonyi)是1970年代Xerox PARC的匈牙利语程序员,后来成为Microsoft的首席架构师。他提出,变量名使用前缀来告诉变量。根据Wikipedia的介绍,匈牙利记法有两种版本。

最容易使用且我认为最有用的版本是使用前缀指定变量的数据类型。例如,在这里,我使用“ n”指定一个整数,使用“ rng”指定一个范围,使用“ s”指定一个字符串。

昏暗nCount为整数

昏暗列表作为范围

昏暗的地址作为字符串

许多程序员将“ int”或“ i”用于整数,将“ str”用于字符串。没关系。只要您的符号一致且易于他人理解,则使用什么符号都没关系。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13363615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-22
下一篇 2023-07-22

发表评论

登录后才能评论

评论列表(0条)

保存