Как исключить из области видимости цикла скрытые строки
Пользователь
Сообщений: Регистрация: 01.01.1970
20.10.2012 22:40:13
*работы *таблицы
Как исключить из области видимости цикла скрытые строки
Пользователь
Сообщений: Регистрация: 01.01.1970
20.10.2012 22:38:47
Результат с копированием вышел неплохой, но если значений в выборке больше 10-ти ждать все равно приходиться долго.... на обработку каждой строки много действий. Полей в строке около 20-ти и работа выполняется с 7-10 полями "ячейками". Данные отсылаются на разные листы. Можете дать пример таботы с двумерными массивами, и способами адресации в них? У меня таблици построены как "реляционная БД"
Я в макросах новичок, но на с++ пишу, если можно проведите аналогию кто знаком с языком.
Как исключить из области видимости цикла скрытые строки
Пользователь
Сообщений: Регистрация: 01.01.1970
20.10.2012 16:42:57
Цикол нужен в любом случе, так как нужно отдельно обрабатывать содержымое каждой строки, но это вариант, создать новый листи с выбранными значения и на нем уже обрабатывать , так будет существенно быстрее.
Спасибо большое, буду пробовать!
Как исключить из области видимости цикла скрытые строки
Пользователь
Сообщений: Регистрация: 01.01.1970
20.10.2012 15:49:20
Строки скрываю автофильтром.
Как исключить из области видимости цикла скрытые строки
Пользователь
Сообщений: Регистрация: 01.01.1970
20.10.2012 15:35:40
Здравствуйте УВ. Форумчане! Подскажите, как можно изключить из цикла такого вида работу со скрытыми строками
LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count For i = LastRow To 1 Step -1 ///////////////////////// Next i
Можно вставить If Application.Rows(i).EntireRow.Hidden <> True Then End If
Но при этом цикл все равно смотрит скрыта ли строка... Срок очень много и пока будут проверены все можно сходить кофе попить..
Заранее благодарен!
З.Ы. Если нужно сделаю пример.
Как получить список всех имен листов книги и список имен разрешенных для изменения диапазонов
Пользователь
Сообщений: Регистрация: 01.01.1970
19.10.2012 15:38:46
Понял)) Еще раз большое спасибо!!!
Как получить список всех имен листов книги и список имен разрешенных для изменения диапазонов
Пользователь
Сообщений: Регистрация: 01.01.1970
19.10.2012 14:57:05
Назрел еще один вопрос, как модно изменить имя разрешенного для изменения диапазона, зная его имя. То есть имя Диапазон1 заменить на Диапазон15? Заранее благодарен!
Как получить список всех имен листов книги и список имен разрешенных для изменения диапазонов
Пользователь
Сообщений: Регистрация: 01.01.1970
19.10.2012 14:45:30
Большое спасибо, то что нужно!!!
Как получить список всех имен листов книги и список имен разрешенных для изменения диапазонов
Пользователь
Сообщений: Регистрация: 01.01.1970
19.10.2012 13:13:35
Список диапазонов на листе с макросом, имена в новый лист "temps". Прикрепил пример. Диапазоны находятся на первом листе.
Как получить список всех имен листов книги и список имен разрешенных для изменения диапазонов
Пользователь
Сообщений: Регистрация: 01.01.1970
19.10.2012 12:52:51
Здравствуйте УВ.Форумчане! Возникла проблема, нужно получить имена всех листов книги и список имен разрешенных для изменения диапазонов, на листе с которого вызван макрос. На новом листе.
Примерно должно выглядеть так... только я не все знаю как написать, помогите поправить пожалуйста!
Sub reads() Worksheets.Add.Name = "temps" Sheets("temps").Select for i = "Первый лист" To "Последний лист" Range(Cells(1, i).Value = Sheet.Name Next i
for i = "Первый диапазон" To "Последний диапазон" Range(Cells(2, i).Value = ActiveSheet.Protection.Name Next i
End Sub
Заранее благодарен!
Отключение сообщения о том, что ячейка защищена от изменений
Но появился другой вопрос. Как можно передать имя диапазона, а не его порядковый номер в эту строку, чтоб можно было удалять по имени, а не хранить номер, а потом искать, номер и удалять. ActiveSheet.Protection.AllowEditRanges(1).Delete
Private Sub CommandButton2_Click() ANS = ActiveSheet.Name ActiveRow = Selection.Row ActiveSheet.Unprotect Password:="123" ActiveSheet.Protection.AllowEditRanges(1).Delete Cells(ActiveRow, 8) = 1 Worksheets(ANS).Protect Password:="123", UserinterfaceOnly:=True End Sub
Отключение сообщения о том, что ячейка защищена от изменений
Пользователь
Сообщений: Регистрация: 01.01.1970
16.08.2012 15:30:51
Кто знает, как можно передать переделать Range("F8,F14,F20,F27,F32,H28").Select в Range(Cells(1,1), Cells(4,1), Cells(1,5), Cells(1,8), Cells(1,9),).Select или Range(R1C1, R1C4, R5C1, R8C1).Select
И возможно ли это? заранее благодарен
Отключение сообщения о том, что ячейка защищена от изменений
Пользователь
Сообщений: Регистрация: 01.01.1970
16.08.2012 13:49:35
У меня появилась идея лучше, задать ячейки для изменения, а для остальных выключить дабл клик. Решает часть проблем. Если строка разрешена для редактирования, то есть в 12-ом столбце 1, и жмем в ячейки которые можно редактировать, 1-я, 3-я, и 5-я то все ок. если нет то дабл клик отключен и защита работает. Проблема можно сказать решена) Не хватает только функции, BeforeChange)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) ActiveRow = Selection.Row ActiveCol = Selection.Column If Cells(ActiveRow, 12) = 1 And (ActiveCol = 1 Or ActiveCol = 3 Or ActiveCol = 5) Then Cancel = False Else Cancel = True End If End Sub
Отключение сообщения о том, что ячейка защищена от изменений
Пользователь
Сообщений: Регистрация: 01.01.1970
16.08.2012 10:04:04
Sirius, хороший способ, но не в моем случае, мне выделение заблокированных нужно) У меня в зависимости от выделенной ячейки работает соответствующий макрос. Но в любом случае всем спасибо за помощь в решении проблемы.
Отключение сообщения о том, что ячейка защищена от изменений
Пользователь
Сообщений: Регистрация: 01.01.1970
15.08.2012 19:22:51
)))) Понял, большое спасибо!)
Отключение сообщения о том, что ячейка защищена от изменений
Пользователь
Сообщений: Регистрация: 01.01.1970
15.08.2012 17:56:26
Скажите, это хоть в принципе, реально сделать? Если нет то выхода нет, придется терпеть мучения)
Доброе время суток! Подскажите, а как сохранять файл в текущую папку с проектом или в папку которая лежит в папке с проектом. Чтоб не нужно было жестко привязываться к месторасположению проекта. Код макроса взят из статьи "Создание резервных копий ценных файлов" из раздела "Приемы". strPath = "\TEMP" strPath = "TEMP" strPath = "\..\TEMP" И подобные не воспринимает. Заранее благодарен!
Отключение сообщения о том, что ячейка защищена от изменений
Пользователь
Сообщений: Регистрация: 01.01.1970
15.08.2012 12:48:38
Доброе время суток УВ Форумчане! Подскажите пожалуйста, как отключить сообщение о том, что ячейка защищена от изменений, которое появляется при попытке изменения заблокированной ячейки на защищенном рабочем листе. Application.DisplayAlerts=False не помогает.
Заранее благодарен!
максимально оптимизировать код VBA
Пользователь
Сообщений: Регистрация: 01.01.1970
13.08.2012 17:18:18
А как можно включить xlInsideVertical и xlInsideHorizontal в BorderAround или тоже как-то сделать одной строчкой? Заранее благодарен!
А то приходится добавлять после Range(Cells(i, 1), Cells(i, 13)).BorderAround Weight:=xlThin
Дописывать
With Selection.Borders(xlInsideVertical) .Weight = xlThin End With With Selection.Borders(xlInsideHorizontal) .Weight = xlThin End With
Печать выделенного диапазона
Пользователь
Сообщений: Регистрация: 01.01.1970
11.08.2012 12:06:05
Большое спасибо, проблему решило!
Печать выделенного диапазона
Пользователь
Сообщений: Регистрация: 01.01.1970
10.08.2012 13:00:25
Знаю, но нужно именно макросом.
Печать выделенного диапазона
Пользователь
Сообщений: Регистрация: 01.01.1970
10.08.2012 12:51:40
Доброе время суток УВ Форумчане! Написал макрос для печати выделенного диапазона, выделение происходит нормально, но на принтер не отправляет... собственно загвоздка в последней строчке. Подскажите, что не так. Заранее благодарен!
Sub PrintSelection() a = Selection.Row c = Selection.Column b = a + Selection.Rows.Count - 1 d = c + Selection.Columns.Count - 1 Range(Cells(a, c), Cells(b, d)).Select Selection.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False End Sub
Загвоздка с макросом "активности пользователя"
Пользователь
Сообщений: Регистрация: 01.01.1970
09.08.2012 11:33:12
После удаления с листа, ComboBox все заработало так как нужно. Большое спасибо всем кто откликнулся!
Загвоздка с макросом "активности пользователя"
Пользователь
Сообщений: Регистрация: 01.01.1970
08.08.2012 22:05:02
Если написать Cells(Active_Row, 14).Value = Cells(Active_Row, 1).Value Дебаг говорит, MetHod 'Value' of object 'Range' Failed Так что видимо не в этом дело
Загвоздка с макросом "активности пользователя"
Пользователь
Сообщений: Регистрация: 01.01.1970
08.08.2012 18:33:23
Дебаг говорит, MetHod '_Default' of object 'Range' Failed
Загвоздка с макросом "активности пользователя"
Пользователь
Сообщений: Регистрация: 01.01.1970
08.08.2012 18:30:34
KukLP Согласен, вы правы, в остальных местах я использовал боксы из-за возможностей поиска, но здесь без них можно обойтись. Сделал проверки, решило проблему отслеживания изменений, но породило новую, теперь при выборе значения из "проверки" макрос отслеживания срабатывает, но потом вылетает в дебаг "на нем".... может для проверок в нем нужно что-то поправить? Dim S As Integer
Private Sub Worksheet_Change(ByVal Target As Range) Active_Row = Target.Row Cells(Active_Row, 14) = Cells(Active_Row, 1) S = 1 End Sub
З.Ы. Бокси создаются только по запросу, а по окончании работы с ними удаляются, так что размер файла от их количества совершенно не зависит.
RAN Спасибо, обязательно посмотрю
Формула для суммирования по критериям
Пользователь
Сообщений: Регистрация: 01.01.1970
08.08.2012 17:56:22
Теперь работает большое спасибо!!!
Загвоздка с макросом "активности пользователя"
Пользователь
Сообщений: Регистрация: 01.01.1970
08.08.2012 16:57:52
Я просто, только начал с макросами знакомится...)
Загвоздка с макросом "активности пользователя"
Пользователь
Сообщений: Регистрация: 01.01.1970
08.08.2012 16:45:05
Солоноват для меня пример... но придумал обходной спосою. Получается так... у меня всегда номер элемента ComboBox будет соответствовать строке, то есть ComboBox56, это строчка 56. Можно ли как-то узнать имя, активированного бокса? если да, то тогда будет работать для всех, что-то типа этого Private Sub ComboBoxN_Change() Application.EnableEvents = 0 Form = ActiveSheet.Shapes.Range(Array(Form)).Name 'Правда нужно будет узнать цифры из имени формы' Cells(Form, 14).Value = 1 Application.EnableEvents = -1 End Sub