Копирование небольшой таблицы Excel из другой книги вызывает проблему с определенным диапазоном

#excel #vba

#excel #vba

Вопрос:

Итак, у меня был макрос prefect sample, чтобы открыть книгу, скопировать таблицу в «Feuil1» в другой книге, скопировать таблицу на новый лист и очистить «Feuil1» для другого использования. Теперь, когда я пытаюсь ее увеличить, по какой-то причине она копирует определенный диапазон, но вместо того, чтобы просто использовать range B2: EA201 как закодированный, Excel по какой-то глупой причине использует EA201201.

Использование ctrl End приводит меня к EA201201, который не имеет форматирования или значения, поэтому я в растерянности… Думаете, это может быть связано с двухбуквенным столбцом, поскольку я никогда раньше этим не пользовался? Знаете ли вы, что происходит?

 Workbooks.Open fileName:="C:FilePathClasseurX.xlsm"
Application.Wait (Now   TimeValue("0:00:05"))
Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lCopyLastRow As Long
Dim lDestLastRow As Long

    Set wsCopy = Workbooks("ClasseurX.xlsm").Worksheets("Synthèse")
    Set wsDest = Workbooks("ClasseurPrimaire.xlsm").Worksheets("Feuil1")
  lCopyLastRow = wsCopy.Cells(wsCopy.Rows.Count, "B").End(xlUp).Row
  lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "B").End(xlUp).Offset(1).Row
  wsCopy.Range("B2:EA201" amp; lCopyLastRow).Copy _
    wsDest.Range("B" amp; lDestLastRow)
    

Workbooks("ClasseurX.xlsm").Close SaveChanges:=False

ThisWorkbook.Activate

Dim WSCount As Long
WSCount = Worksheets.Count
'
        ActiveWorkbook.Sheets("Feuil1").Copy _
           After:=ActiveWorkbook.Sheets(WSCount)
        Sheets("Feuil1 (2)").Name = "NewSheet" amp; WSCount   1
        
ActiveWorkbook.Sheets("Feuil1").Activate
Range("B2:EA201").Clear

End Sub
  

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

1. Спасибо @BraX за очистку моего поста!

2. wsCopy.Range("B2:EA201" amp; lCopyLastRow).Copy означает скопировать диапазон, "B2:EA201" amp; 201 если lCopyLastRow он равен 201. Поэтому попробуйте использовать wsCopy.Range("B2:EA" amp; lCopyLastRow).Copy

3. Попробуйте изменить строку wsCopy.Range("B2:EA201" amp; lCopyLastRow).Copy _ на wsCopy.Range("B2:EA" amp; lCopyLastRow).Copy _ . Обратите внимание, как я удалил 201

4. Это было абсолютно все, ребята, спасибо за ваши быстрые ответы!