Копирование значений из al oop в таблице в другой столбец - вставлены только первые 12 значений (и заголовок) - PullRequest
0 голосов
/ 14 января 2020

Итак, я сейчас работаю с таблицей List Object над фрагментом кода - я определил его как InTbl. Я хочу написать код, который будет просматривать четвертый столбец указанной таблицы (только проходя через строки базы данных) и копировать любые значения, которые могут быть в этой строке, в 9-й столбец таблицы.

По какой-то причине сам код работает для первых 12 строк (а по каким-то причинам - для заголовка), копируя значения в порядке, а затем останавливается?

Вот код, затем я объясню, где я думаю что-то пошло не так?

Sub AmendMVCCY
Dim InTbl As ListObject 'Dim the input table as 'InTbl'
Dim i As Long
Dim rng As Range, AmendedCCY As Range

Set InTbl = Sheets("Input").ListObjects("INPUT")

Set AmendedCCY = InTbl.ListColumns(4).DataBodyRange


    For i = 1 To AmendedCCY.Rows.Count 'For row starting as 1 to Last row within the data body
        If Not IsEmpty(AmendedCCY.Cells(i, 1)) Then 'The the cell isn't empty
            Cells(i, 4).Copy 'Copy the figure in amended Column
            Cells(i, 9).PasteSpecial xlValues 'Paste Values in 9th Column
        End If
    Next i


End Sub

Я думаю, что когда я определил ListColumn (4), он неправильно читает данные. Thw таблицы имеет длину 200i sh строк и будет только расти, но кажется, что когда я заявляю For i = 1 To AmendedCCY.Rows.Count, она насчитывает только 12 строк, а не весь лот.

Вероятно, это плохо сформулировано, но я постараюсь прояснить ситуацию, если потребуется.

По сути, мне нужно l oop до go по всей таблице Listobject, но я не уверен, почему этого не происходит, atm

Редактировать: Изображение таблицы (хотя образец из 20 строк) enter image description here

По сути, в конце мне нужны какие-либо цифры в дополнении для перезаписи 9-го столбца (который будет иметь денежные значения раньше)

1 Ответ

0 голосов
/ 14 января 2020

Аналогично предложению FanDuru:

Вместо:

For i = 1 To AmendedCCY.Rows.Count 'For row 
    If Not IsEmpty(AmendedCCY.Cells(i, 1)) Then 'The the cell isn't empty
        Cells(i, 4).Copy 'Copy the figure in amended Column
        Cells(i, 9).PasteSpecial xlValues 'Paste Values in 9th Column
    End If
Next i

Попробуйте:

Dim lastRow as long
lastRow = AmendedCCY.Rows.Count
For i = 1 To lastRow 'For row starting as 1 to Last row within the data body
    If Not IsEmpty(AmendedCCY.Cells(i, 1)) Then 'The the cell isn't empty
        Cells(i, 9) = Cells(i, 4).value 
    End If
Next i

Есть нет необходимости использовать копирование / вставку. Убедитесь, что в таблице указано значение AededCCY.Rows.Count больше двенадцати.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...