Поиск последнего столбца и копирование - VBA
Формулировка задачи:
Всем добрый день. Ребята подскажите пожалуйста, как найти столбец с именем "Столбец 25", в столбце найти строки с значением "Номер один" и все это , вместе со строками и шапкой скопировать на новый лист.
Решение задачи: «Поиск последнего столбца и копирование»
textual
Листинг программы
- Option Explicit
- Private Sub disAccelerateExcel() 'Включаем всё то что выключили процедурой AccelerateExcel
- On Error Resume Next
- With Application
- .ScreenUpdating = True 'Включаем обновление экрана после каждого события
- .Calculation = xlCalculationAutomatic 'Расчёты формул - снова в автоматическом режиме
- .EnableEvents = True 'Включаем события
- If Workbooks.Count Then _
- ActiveWorkbook.ActiveSheet.DisplayPageBreaks = True 'Показываем границы ячеек
- .DisplayStatusBar = True 'Возвращаем статусную строку
- .DisplayAlerts = True 'Разрешаем сообшения Excel
- End With
- End Sub
- Private Sub AccelerateExcel() 'Ускоряем Excel путём отключения всего "тормозящего"
- On Error Resume Next
- With Application
- .ScreenUpdating = False 'Больше не обновляем страницы после каждого действия
- .Calculation = xlCalculationManual 'Расчёты переводим в ручной режим
- .EnableEvents = False 'Отключаем события
- If Workbooks.Count Then _
- ActiveWorkbook.ActiveSheet.DisplayPageBreaks = False 'Не отображаем границы ячеек
- .DisplayStatusBar = False 'Отключаем статусную строку
- .DisplayAlerts = False 'Отключаем сообщения Excel
- End With
- End Sub
- Sub Найти_number_one()
- Dim r As Range, i&, j&, maxRow&, maxColumn&
- Dim n&
- '
- AccelerateExcel 'Ускоряем работу Excel !
- '
- maxColumn = ActiveSheet.UsedRange.Column + ActiveSheet.UsedRange.Columns.Count - 1
- maxRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
- Set r = Range(Cells(1, 1), Cells(maxRow, maxColumn))
- With Worksheets.Add
- For i = 1 To maxRow: For j = 1 To maxColumn
- If r.Cells(i, j) = "номер один" Or i = 1 Then
- n = n + 1
- r.Range(r.Cells(i, 1), r.Cells(i, maxColumn)).Copy
- .Cells(n, 1).Select
- ActiveSheet.Paste
- Exit For
- End If
- Next: Next
- For i = 1 To maxRow
- .Cells(i, 1).RowHeight = r.Cells(i, 1).RowHeight
- Next
- For j = 1 To maxColumn
- .Cells(1, j).ColumnWidth = r.Cells(1, j).ColumnWidth
- Next
- End With
- '
- disAccelerateExcel 'Восстанавливаем Excel !
- '
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д