Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
21st
Янв
Макрос преобразования таблицы в список
Posted by obzor under VBA
Подскажите пожалуйста как можно оптимизировать макрос?
В файле есть таблица, по месяцу, необходимо ее преобразовать в список.
Я написала макрос, но он как я понимаю достаточно долгий и не оптимальный.
Что-то мне подсказывает, что это можно сделать быстрее и короче через цикл, но никак не могу понять как..
Это мое первое знакомство с макросами.Подскажите пожалуйста, как можно преобразовать таблицу в список, с помощью цикла.
В файле есть таблица, по месяцу, необходимо ее преобразовать в список.
Я написала макрос, но он как я понимаю достаточно долгий и не оптимальный.
Что-то мне подсказывает, что это можно сделать быстрее и короче через цикл, но никак не могу понять как..
Это мое первое знакомство с макросами.Подскажите пожалуйста, как можно преобразовать таблицу в список, с помощью цикла.
Код:
Option Explicit
Private Sub ScreensOFF()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual 'Это поможет при наличии завязанных на редактируемые данные формул
Application.EnableCancelKey = xlDisabled ' Fix for Code execution has been interrupted
End Sub
Private Sub ScreensON()
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic 'Это поможет при наличии завязанных на редактируемые данные формул
End Sub
Sub GoMyWork()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim iLastRow As Integer
Dim iLastCol As Integer
Dim i, j, r
Set sh1 = Sheets("Один ролик")
Set sh2 = Sheets("c"): sh2.range("A2:H5000").ClearContents
ScreensOFF
With sh1
iLastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
iLastCol = .Cells(3, .Columns.Count).End(xlToLeft).Column
r = 2
For i = 4 To iLastRow
For j = .Range("CD1").Column To iLastCol
If .Cells(i, j) <> "" Then
r = r + 1
sh2.Cells(r, "A") = .Cells(3, j)
sh2.Cells(r, "B") = .Cells(i, "B")
sh2.Cells(r, "C") = .Cells(i, "C")
sh2.Cells(r, "D") = .Cells(i, "D")
sh2.Cells(r, "E") = .Cells(i, "E")
sh2.Cells(r, "F") = .Cells(i, "F")
sh2.Cells(r, "G") = .Cells(i, "G")
sh2.Cells(r, "H") = .Cells(i, j)
End If
Next j
Next i
End With
ScreensON
Set sh1 = Nothing
Set sh2 = Nothing
End Sub
Случайные статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)