Приветствую Уважаемые! Вообщем я доработал код , но не могу решить загадку с фрагментом кода который мне подсказали выше.
Если вбивать даты 01.01.2020 - 31.01.2020 то все работает, но как только поставить другой месяц , то:
Код |
---|
.AutoFilter.Range.Columns(x).SpecialCells(xlCellTypeVisible).Offset(1).Copy Range("x") |
- то копирует видимый диапазон упуская первую строку, то есть что он пропускает не только шапку но и следующую строку которая должна быть скопирована.
Бьюсь как рыба об лёд не могу решить проблему, буду очень благодарен любой помощи и предложениям.
Вот фрагмент кода:
А так же файл в котором он применяется
Код |
---|
Sub sozdat_otchet()
Dim FirstDay As Date
Dim EndDay As Date
Dim i As Integer
Dim iLastRow As Long
Dim Rng As Range
Dim n As Integer
Dim ItogoRow As Integer
ItogoRow = Columns(2).Find("ИТОГО", , xlValues, xlPart).Row
If ItogoRow > 7 Then
Rows(6 & ":" & ItogoRow - 1).Delete
End If
Range("B5:J5,J6,I6,H6").Select
Range("H6").Activate
Selection.ClearContents
FirstDay = Range("M2")
EndDay = Range("N2")
With Worksheets("данные")
iLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Set Rng = .Range("A1:L" & iLastRow)
' Rng.AutoFilter
' Rng.AutoFilter
If Not .AutoFilterMode Then 'проверяем установлен Автофильтр на листе или нет
Rng.AutoFilter 'устанавливаем автофильтр на столбцы таблицы
Else
If .FilterMode = True Then .ShowAllData 'если Автофильтр применён, то снимаем все фильтры
End If
.Range("A1:L" & iLastRow).AutoFilter Field:=5, Criteria1:= _
">=" & CDbl(FirstDay), Operator:=xlAnd, Criteria2:="<=" & CDbl(EndDay)
n = .AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Rows.Count 'считаем кол-во отфильтрованных строк без учета заголовка
Rows(5).Resize(n - 1).Insert
.AutoFilter.Range.Columns(2).SpecialCells(xlCellTypeVisible).Offset(1).Copy Range("C5") 'копируем столбец без учета заголовка
.AutoFilter.Range.Columns(3).SpecialCells(xlCellTypeVisible).Offset(1).Copy Range("D5")
.AutoFilter.Range.Columns(4).SpecialCells(xlCellTypeVisible).Offset(1).Copy Range("E5")
.AutoFilter.Range.Columns(6).SpecialCells(xlCellTypeVisible).Offset(1).Copy Range("F5")
.AutoFilter.Range.Columns(9).SpecialCells(xlCellTypeVisible).Offset(1).Copy Range("J5")
.AutoFilter.Range.Columns(7).SpecialCells(xlCellTypeVisible).Offset(1).Copy Range("G5")
.AutoFilter.Range.Columns(10).SpecialCells(xlCellTypeVisible).Offset(1).Copy Range("I5")
Range("H5:H" & n + 4) = Split(.Range("J1"), " ")(1)
For i = 5 To 5 + n - 1 'Номер счета-фактуры дата и паспорт + дата
Cells(i, "G") = "№ " & Cells(i, "G") & " от " & .AutoFilter.Range.Columns(.SpecialCells(xlCellTypeVisible).Offset(1).Cells(i - 4)
Cells(i, "E") = "№ " & Cells(i, "E") & " от " & .AutoFilter.Range.Columns(5).SpecialCells(xlCellTypeVisible).Offset(1).Cells(i - 4)
Next
ItogoRow = Columns(2).Find("ИТОГО", , xlValues, xlPart).Row
Cells(ItogoRow, "I") = WorksheetFunction.Sum(Range("I5:I" & ItogoRow - 1))
Cells(ItogoRow, "J") = WorksheetFunction.Sum(Range("J5:J" & ItogoRow - 1))
Range("B5:J" & ItogoRow - 1).Borders.Weight = xlThin
.AutoFilter.Range.AutoFilter
End With
End Sub |