Следуя предыдущему вопросу, у меня есть код, который обновляет определенные ячейки в динамической таблице на основе содержимого строки заголовка и первого столбца. Постоянными значениями являются фиксированные значения в коде, но теперь мне нужно иметь возможность ссылаться на это на таблицу сопоставления на то, что несколько ячеек могут быть обновлены за один раз.Использовать таблицу в качестве постоянных значений в VBA с listobjects
Существующий код и пример таблицы, с которой мне нужно работать, приведены ниже.
sub ChangeTable()
Dim wsMapping As Worksheet
Dim wsData As Worksheet
Dim tbl As ListObject
Dim x As Long
Dim i As Long
Dim hdrCount As Long
Const ACCT_NO = "ABCD1234"
Const HEADING = "Analysis/*"
Const NEW_VAL = "80321"
Set wsData = Worksheets("Test Sheet")
Set wsMapping = Worksheets("Mapping")
Set tbl = wsData.ListObjects("Data")
hdrCount = tbl.HeaderRowRange.Columns.Count
For x = 1 To tbl.ListRows.Count
With tbl.ListRows(x)
If .Range(1, 1).Value2 = ACCT_NO Then
For i = 2 To hdrCount
If (tbl.HeaderRowRange(i).Value2 Like HEADING) Then
If (Not IsEmpty(.Range(1, i).Value)) Then
.Range(1, i).Value = NEW_VAL
End If
End If
Next
End If
End With
Next
End Sub
На отдельном листе в Excel будет таблица со столбцом для номера счета и нового значения. Для изменения может быть до 10 различных номеров учетных записей, которые могут быть переменными каждый раз, когда файл создается, поэтому код должен иметь возможность обрабатывать переменное число констант каждый раз, когда он используется.
ABCD1234 80310
ABCD1235 80311
ABCD1236 80312
ABCD1237 80313
ABCD1238 80314
ABCD1239 80315
ABCD1240 80316
Я думаю, что мне нужно, чтобы определить диапазон таблицы и сказать что-то вроде:
Если не IsEmpty (Cells (х, 1)) Тогда (Const ACCT_NO = Cells (х, 1) И Const NEW_VAL = ячейки (x, 2))
и прокручивать каждую строку в таблице. Будет ли это работать?
Вы бьете меня к этому Скотт, я просто прибирать стол, а также – AlanB