VBA对许多常量的干净使用
我的Excel VBA需要约300 XLS文件,并抓取8个单元格存放到它们自己的行中。(Office11)我有几个sub和函数,它们对源数据和目标位置使用位置常量。总计我有23个固定位置,包括列号和单元格位置 问题:关于如何清理这些内容以提高可读性并将常量保存在一个位置,有什么建议吗?我试图避免使用公共变量,但不确定是否有更好的方法。如何处理包含常量值的数组 部分示例,VBA对许多常量的干净使用,vba,excel,Vba,Excel,我的Excel VBA需要约300 XLS文件,并抓取8个单元格存放到它们自己的行中。(Office11)我有几个sub和函数,它们对源数据和目标位置使用位置常量。总计我有23个固定位置,包括列号和单元格位置 问题:关于如何清理这些内容以提高可读性并将常量保存在一个位置,有什么建议吗?我试图避免使用公共变量,但不确定是否有更好的方法。如何处理包含常量值的数组 部分示例,公共PSTRQLocation(1到8)作为字符串 PSTRQ位置(1)=“B7” PSTRQ位置(2)=“B6” PSTRQ位
公共PSTRQLocation(1到8)作为字符串
PSTRQ位置(1)=“B7”
PSTRQ位置(2)=“B6”
PSTRQ位置(3)=“B5”
PSTRQ位置(4)=“B8”
PSTRQ位置(5)=“A3”
pstrQLocations(6)=“C8”
您可以将常量存储在集合中。优点是,您可以为元素命名
Option Explicit
Dim pstrQLocations As Collection
Private Sub initializeConstants()
Set pstrQLocations = New Collection
pstrQLocations.Add "B7", "Title"
pstrQLocations.Add "B6", "User"
End Sub
Private Sub showConstants()
initializeConstants
Debug.Print Me.Range(pstrQLocations("Title")).Value
Debug.Print Me.Range(pstrQLocations("User")).Value
End Sub
3D版本:
Option Explicit
Dim pstrQLocations As Collection
Private Sub initializeConstants()
Dim title As New Collection
Set pstrQLocations = New Collection
title.Add "B7", "source"
title.Add "A6", "destination"
pstrQLocations.Add title, "Title"
End Sub
Private Sub showConstants()
Dim y As Collection
initializeConstants
Debug.Print pstrQLocations("Title")("source")
Debug.Print pstrQLocations("Title")("destination")
End Sub
您可以将常量存储在集合中
。优点是,您可以为元素命名
Option Explicit
Dim pstrQLocations As Collection
Private Sub initializeConstants()
Set pstrQLocations = New Collection
pstrQLocations.Add "B7", "Title"
pstrQLocations.Add "B6", "User"
End Sub
Private Sub showConstants()
initializeConstants
Debug.Print Me.Range(pstrQLocations("Title")).Value
Debug.Print Me.Range(pstrQLocations("User")).Value
End Sub
3D版本:
Option Explicit
Dim pstrQLocations As Collection
Private Sub initializeConstants()
Dim title As New Collection
Set pstrQLocations = New Collection
title.Add "B7", "source"
title.Add "A6", "destination"
pstrQLocations.Add title, "Title"
End Sub
Private Sub showConstants()
Dim y As Collection
initializeConstants
Debug.Print pstrQLocations("Title")("source")
Debug.Print pstrQLocations("Title")("destination")
End Sub
这不是命名范围的用例吗?命名范围如何同时适用于(多个源)和单个目标工作簿?目标工作簿是包含VBA代码的地方。这对于使用以下代码的此工作簿(带有VBA代码)是有意义的。但是,为300个外部文件使用命名范围是不合逻辑的。ThisWorkbook.Names.Add Name:=“SomeName”、\uRefersto:=工作表(“Sheet2”).Range(“A1:A10”)这不是命名范围的用例吗?命名范围如何同时适用于(多个源)和单个目标工作簿?目标工作簿是包含VBA代码的地方。这对于使用以下代码的此工作簿(带有VBA代码)是有意义的。但是,为300个外部文件使用命名范围是不合逻辑的。ThisWorkbook.Names.Add Name:=“SomeName”、\uRefersto:=工作表(“Sheet2”)。范围(“A1:A10”)谢谢,我可以将该集合设置为3D吗?i、 添加“B7”、“标题”、“A6”,这样我可以存储[源位置、名称、目标位置]我添加了一个3D版本并修复了2D版本。谢谢,我可以将该集合设置为3D吗?i、 添加“B7”、“Title”、“A6”,这样我就可以存储[源位置、名称、目标位置]。我添加了一个3D版本,并修复了2D版本。