Я, вероятно, делаю это очень запутанным и слишком сложным способом, как это должно быть. Но в основном я пытаюсь ссылаться на имя переменной в моем коде, а не на значение переменной.
В основном файл, который загружается в этот файл, может измениться, независимо от того, добавлены ли столбцы или удалены, или просто переименованы . Я сделал таблицу сопоставления для некоторых столбцов, и должны ли они выводиться или нет, вместе с сокращенным именем столбца (это имя не изменится). Идея состоит в том, что если имена столбцов должны были изменить остальную часть кода, не нужно изменять, поскольку сокращенная версия будет переименовывать то же самое, мне просто нужно обновить длинную версию в таблице сопоставления.
Код, который я пытаюсь сделать, это: - Объявить общую переменную - Затем должна быть запущена процедура, которая затем будет l oop через переменные, которые я перечислил в массиве - Если в столбце спецификаций c содержит это имя переменной, тогда код установит значение переменной как другой столбец в той же строке.
Я приложил пример кода, с которым у меня возникли проблемы.
'' '
Public Col_ColTitle As String
Public Col_KeepRemove As String
Public Col_HiPort As String
Public Col_FundName As String
Public Col_Status As String
Public Col_CompBD As String
Public Col_IMA As String
Public Col_Deadline As String
Public Col_ClientRep As String
Public Col_ClientRepSO As String
Public Col_InvDir As String
Public Col_InvDirSO As String
Public Col_Comments As String
Public Col_CManager As String
Public Col_CDirector As String
Sub GetDataValues()
Dim r As Integer
Dim vCols As Variant
Set tbl_ColNames = ws_Settings.ListObjects("tbl_ColNames")
vCols = Array(Col_ColTitle, _
Col_KeepRemove, _
Col_HiPort, _
Col_FundName, _
Col_Status, _
Col_CompBD, _
Col_IMA, _
Col_Deadline, _
Col_ClientRep, _
Col_ClientRepSO, _
Col_InvDir, _
Col_InvDirSO, _
Col_Comments, _
Col_CManager, _
Col_CDirector)
On Error GoTo ErrCatcher
For i = LBound(vCols) To UBound(vCols)
With tbl_ColNames
For r = 1 To .ListRows.Count
If .DataBodyRange(r, .ListColumns("Code Name").Index).Value = vCols(i) Then
vCols(i) = .DataBodyRange(r, .ListColumns("Column Title").Index).Value
Debug.Print vCols(i)
End If
Next r
End With
Next i
On Error GoTo 0
Exit Sub
ErrCatcher:
MsgBox "Test"
End Sub
'' '