Ошибка при копировании содержимого с одного листа на другой

#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)