2009-12-06 4 views
1

Мой Excel VBA занимает ~ 300 файлов XLS и захватывает 8 ячеек для внесения в их собственную строку. (Office11) У меня есть несколько подписок и функций, которые используют константы местоположения для исходных данных и мест назначения. Grand Total У меня 23 постоянных местоположения с номерами столбцов, ячейками.VBA Чистое использование многих констант

Вопрос: Есть ли какие-либо предложения по очистке для чтения и сохранения констант в одном месте? Я пытался избежать публичных переменных, но не уверен в лучшем методе. Как вы массивы, содержащие постоянные значения?

частичный пример,
Public pstrQLocations(1 To 8) As String
pstrQLocations(1) = "B7"
pstrQLocations(2) = "B6"
pstrQLocations(3) = "B5"
pstrQLocations(4) = "B8"
pstrQLocations(5) = "A3"
pstrQLocations(6) = "C8"

+3

не будет ли это случай использования именованных диапазонов? –

+0

Как названные диапазоны работают как для (многих источников), так и для отдельных целевых книг? В книге назначения есть код VBA. – ExcelCyclist

+0

Это имеет смысл для этой книги (с кодом VBA), используя следующее. Однако эти швы нелогичны, чтобы использовать именованные диапазоны для 300 внешних файлов. ThisWorkbook.Names.Add Name: = «SomeName», _ RefresTo: = Рабочие листы («Лист2»). Диапазон («A1: A10») – ExcelCyclist

ответ

1

Вы можете хранить константы в Collection. Преимущество состоит в том, что вы можете указать имена ваших элементов.

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 
+0

Спасибо, могу ли я сделать эту коллекцию 3D? т. е. * .Добавить «B7», «Заголовок», «A6», чтобы он мог хранить [местоположение источника, имя, место назначения] – ExcelCyclist

+0

Я добавил 3D-версию и зафиксировал двумерный. – marg

Смежные вопросы