Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA对许多常量的干净使用_Vba_Excel - Fatal编程技术网

VBA对许多常量的干净使用

VBA对许多常量的干净使用,vba,excel,Vba,Excel,我的Excel VBA需要约300 XLS文件,并抓取8个单元格存放到它们自己的行中。(Office11)我有几个sub和函数,它们对源数据和目标位置使用位置常量。总计我有23个固定位置,包括列号和单元格位置 问题:关于如何清理这些内容以提高可读性并将常量保存在一个位置,有什么建议吗?我试图避免使用公共变量,但不确定是否有更好的方法。如何处理包含常量值的数组 部分示例,公共PSTRQLocation(1到8)作为字符串 PSTRQ位置(1)=“B7” PSTRQ位置(2)=“B6” PSTRQ位

我的Excel VBA需要约300 XLS文件,并抓取8个单元格存放到它们自己的行中。(Office11)我有几个sub和函数,它们对源数据和目标位置使用位置常量。总计我有23个固定位置,包括列号和单元格位置

问题:关于如何清理这些内容以提高可读性并将常量保存在一个位置,有什么建议吗?我试图避免使用公共变量,但不确定是否有更好的方法。如何处理包含常量值的数组

部分示例,
公共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版本。