#vba #excel
#vba #excel
Вопрос:
Я пытаюсь объединить лист CurrentDistribution
с листом distribution1
. Для этого я просматриваю последнюю строку distribution1
и копирую содержимое CurrentDistribution
после этой последней строки.
LastCellCurrentDistribution = FindLastCell(CurrentDistribution)
LastCellDistribution1 = FindLastCell("distribution1")
LastRowInDistribution1 = Right(LastCellDistribution1, Len(LastCellDistribution1) - 1)
Sheets(CurrentDistribution).Range("A4:" LastCellCurrentDistribution).Copy Sheets("distribution1").Range("A" CStr((CInt(LastRowInDistribution1) 1))) 'i only wany the row (number), not the column (letter)
Sheets(CurrentDistribution).Delete
Теперь проблема в том, что я получаю эту ошибку, когда пытаюсь это сделать: 'Run-time error '6': Overflow'
. Я использовал отладчик и обнаружил, что это 4-я строка, которая копирует материал, который выдает эту ошибку. Есть идеи, в чем проблема и как я могу это исправить?
Ответ №1:
Я полагаю, что вам нужно объявлять переменные LastCellCurrentDistribution
LastCellDistribution1
LastRowInDistribution1
как можно длиннее из-за того, что целые числа не могут обрабатывать значения, превышающие 32 000.
Попробуйте объявить их, как показано ниже:
Dim LastCellCurrentDistribution As Long
Dim LastCellDistribution1 As Long
Dim LastRowInDistribution1 As Long
Ответ №2:
Похоже, мой рабочий лист настолько большой, что тип INT не может обработать номер моей последней ячейки. Поэтому замените:
Sheets(CurrentDistribution).Range("A4:" LastCellCurrentDistribution).Copy Sheets("distribution1").Range("A" CStr((CInt(LastRowInDistribution1) 1))) 'i only wany the row (number), not the column (letter)
С
Sheets(CurrentDistribution).Range("A4:" LastCellCurrentDistribution).Copy Sheets("distribution1").Range("A" CStr(LastRowInDistribution1 1)) 'i only wany the row (number), not the column (letter)