VBA, ошибка переполнения при попытке скопировать предыдущий столбец

#excel #vba

#excel #vba

Вопрос:

У меня есть этот фрагмент кода, в котором я пытаюсь скопировать предыдущий столбец на основе строки в my Sheets("Input").Range("A2") , затем ввод в ячейку Y1M7

Однако я получаю Overflow сообщение об ошибке. Кто-нибудь может помочь?

 Sub NewFind()

Dim nameColumn As Long

With Sheets("Load check data")

    
    nameColumn = .Rows(1).Find(Sheets("Input").Range("A2"), .Cells(.Cells.Count), xlValues, xlWhole).Column

    .Range(.Cells(2, nameColumn - 1), .Cells(k, nameColumn - 1)).Copy

End With


End Sub
  

Комментарии:

1. При использовании Find в диапазоне ( .Rows(1) в данном случае) указанный диапазон After должен находиться в диапазоне Find поиска. Ваш код пытается указать нижнюю правую ячейку на листе, которой явно нет в строке 1. Замените .Cells(.Cells.Count) на .Rows(1).Cells(.Rows(1).Cells.Count)

2. Другие моменты: 1) вы должны присвоить Find переменной диапазона и проверить ее Nothing , прежде чем пытаться получить ее столбец. 2) Если бы вы на самом деле пытались получить нижнюю правую ячейку, которая вам понадобится .Cells(.Cells.CountLarge) , поскольку поскольку .Cells.Count для целого листа переполняется длинный

3. Вы получаете ошибку переполнения, потому что возвращаемое значение .Cells.Count превышает ограничения для Long типа данных. Длинный тип данных max 2,147,483,647 , но на листе есть 17,179,869,184 ячейки. Если вам нужно вернуть это значение, используйте Cells.CountLarge