2015-11-25 4 views
0

Я ввел данные в рабочий лист Excel 2013 и преобразовал их в таблицу (Таблица 4), которая имеет два столбца «цветовой код» и «описание». Я хочу прочитать данные таблицы из другой книги и перебрать строки таблицы в VBA и где значение соответствует значению в столбце «описание», тогда я хочу использовать «цветовой код».Цитирование строк в динамической таблице

Как мне пройти через таблицу, чтобы сделать это?

На данный момент я пробовал несколько способов, но я нахожу ошибки. Часть кода в настоящее время выглядит следующим образом:

Dim row As Range 

For Each row In wb.Worksheets("Colour").ListObjects("Table4").ListRows 
    Debug.Print row.value 
Next 
+0

Если таблица не является только одним столбцом, вы не можете использовать 'Debug.Print' в' row.Value', потому что строка будет представлять собой массив значений ** s **, и отладчик будет поднимать если вы попытаетесь распечатать его. –

ответ

0

Если таблица не только один Колум, вы не можете сделать Debug.Print на row.Value, потому что строка будет представлять собой массив значений ов, и отладчик вызовет ошибку, если вы попытаетесь распечатать его.

Попробуйте что-то вроде этого:

For Each row In wb.Worksheets("Colour").ListObjects("Table4").ListRows 
    For c = 1 to row.Columns.Count 
     Debug.Print row(1,c).Value 
    Next 
Next 

Этот метод является клетка-за ячейкой итерация, которая, вероятно, что вам нужно.

В качестве альтернативы, просто печать все значение строки:

For Each row In wb.Worksheets("Colour").ListObjects("Table4").ListRows 
    Debug.Print Join(Application.Transpose(row.Value), vbTab) 
Next 

Но это не дает вам столько свободы, чтобы манипулировать значениями ячеек или что-нибудь подобное.

0

Попробуйте перебрать только столбец, который вы хотите сопоставить. Когда вы найдете совпадение, вы можете искать значение в правильном столбце в той же строке.

For Each cell in wb.Worksheets("Colour").Range("Table4[description]") 
    If cell.value = "Desired Value" then 
     Debug.Print(Cells(cell.row(), Range("Table4[colour code]").column)) 
    End If 
Next 

Выгода делать это таким образом, вы можете изменить таблицу и ваш код будет работать до тех пор, как эти столбцы по-прежнему существует с теми же именами.

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