Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 След.
работа макроса при выделенных листах
 
Цитата
написал:
Но это совсем другая история...
Это да, согласен. Не всё сразу.
работа макроса при выделенных листах
 
Цитата
написал:
Это нужно было сразу делать
Каюсь, не предусмотрел.
Изменено: Antag - 23.05.2024 00:52:10
работа макроса при выделенных листах
 
Цитата
написал:
Вариант только отменять выбор нескольких листов...

Спасибо, на примере маленького файла работает!
Но вот при попытке внедрить в исходную книгу с большим количеством листов ругается...
Могу приложить эту книгу в качестве примера?
Ругается на пароли других листов. Можете посмотреть ещё разок?
работа макроса при выделенных листах
 
=
Изменено: Antag - 21.05.2024 02:29:07
работа макроса при выделенных листах
 
Господа, подсобите, пожалуйста!

Можно ли поправить макрос так, чтобы он срабатывал при выделенных листах книги?
Речь о макросах, навешенных на ячейку A12 первого листа [НП] и A22 второго.
Если листы не выделены, макросы работают. Если выделяешь листы, то не работают...
Заранее спасибо!
замена в нескольких местах одновременно
 
Цитата
написал:
ответ - приложить крохотный пример, но отражающий примерную задачу.
Такой подойдёт?
Заранее спасибо.
замена в нескольких местах одновременно
 
Подскажите, возможно есть решение?..
Нужно поменять большое количество формул в книге.
Стандартное средство "Найти и заменить" прекрасно, но работает только по одной условной "строчке": что находим и на что меняем.
В случае необходимости изменения в формулах Excel ругается на некорректную формулу, и ничего дальше не получается...

Вот пример – в рамках большой количества формул в книге надо поменять:
1. ЕСЛИ(ИЛИ(Сводная!$Q$6="Приложение";Сводная!$Q$6="З/п рабочих"); на ничего (пусто)
2. и в хвосте формулы ;"");"") на ;"")

Как быть?..
VBA - cкрытие строк в нескольких листах по условию
 
Цитата
написал:
Попробуйте так
Не работает...
VBA - cкрытие строк в нескольких листах по условию
 
Цитата
написал:
Код рабочий. Проверял. Просто что бы соблюсти все условия для его срабатывания нужно постараться.
До вышеприведенного кода по строчкам код по столбцам срабатывает. Полагаю, ошибка в синтаксисе кода, приведённого выше.
Изменено: Antag - 10.01.2024 14:19:21
VBA - cкрытие строк в нескольких листах по условию
 
Цитата
написал:
для примера циферки какие-нибудь в пример накидайте. И опишите действия, которые вызывают ошибку
Так а не нужны циферки. Нужные строки в нужных листах не скрываются.
Вот то, что нужно получить:
– если в ячейке G2 листа [Сводная] пусто → строки 642:645 в листах книги со 2-го по 15-й скрыты;
– если в ячейке G2 листа [Сводная] что-то есть → строки 642:645 в листах книги со 2-го по 15-й открыты).

Вот код, который добавил, но это не работает:
Код
If [G2] = "" Then
Worksheets(shnm).Unprotect Password:="0858"
Worksheets(shnm).Rows("642:645").Hidden = True
Worksheets(shnm).Protect Password:="0858"
End If
If [G2] <> "" Then
Worksheets(shnm).Unprotect Password:="0858"
Worksheets(shnm).Rows("642:645").Hidden = False
Worksheets(shnm).Protect Password:="0858"
End If
VBA - cкрытие строк в нескольких листах по условию
 
Товарищи, поправьте, пожалуйста, код.

В коде листа [Сводная] не срабатывает этот блок:
Код
If [G2] = "" Then
Worksheets(shnm).Unprotect Password:="0858"
Worksheets(shnm).Rows("642:645").Hidden = True
Worksheets(shnm).Protect Password:="0858"
End If
If [G2] <> "" Then
Worksheets(shnm).Unprotect Password:="0858"
Worksheets(shnm).Rows("642:645").Hidden = False
Worksheets(shnm).Protect Password:="0858"
End If

(если в ячейке G2 листа [Сводная] пусто → строки 642:645 в листах книги со 2-го по 15-й скрыты;
если в ячейке G2 листа [Сводная] что-то есть → строки 642:645 в листах книги со 2-го по 15-й открыты).


Заранее спасибо!
порядок листов в VBAProject
 
Неужели нельзя подвигать тут вверх-вниз листы и зафиксировать нужный порядок?
проверка данных: число (либо целое, либо дробное до десятых)
 
Цитата
написал:
что бы распространить правило на другие ячейки:1. Скопируйте ячейку где это правило работает (Ctrl+C)2. Выделите целевой диапазон3. Далее с помощью ленты или ПКМ - Специальная вставка4. условия на значения5. Ок
Спасибо! Это тема :)
проверка данных: число (либо целое, либо дробное до десятых)
 
Цитата
написал:
Проверку данных можно сделать в те ячейки куда вы (или условный "дурак") вручную вводите данные
Всё верно. Там, где формулы (столбец F), не запрещено вводить данные вручную. Но если туда "дурак" вводит не число, а другое, формулы в соседних столбцах, которые берут значения из столбца F, выдают #ЗНАЧ!.
Т. е. в столбце F – либо формула, либо ручной ввод числа.
проверка данных: число (либо целое, либо дробное до десятых)
 
Цитата
написал:
приложите файл пример
Прошу прощения.
В ячейке F16 стоит требуемая проверка данных.
Нужно по всему столбцу F, где в ячейках есть формулы/значения, проставить аналогичную проверку.
Изменено: Antag - 17.11.2023 13:13:24
проверка данных: число (либо целое, либо дробное до десятых)
 
Цитата
написал:
пример проверки данных для ячейки А1
А как растянуть на несколько ячеек?
Значения формул в ячейках разные...
Изменено: Antag - 17.11.2023 03:01:31
проверка данных: число (либо целое, либо дробное до десятых)
 
Цитата
написал:
Antag , Здравствуйте, если верно понял, пример проверки данных для ячейки А1
Вполне. Благодарю Вас!
проверка данных: число (либо целое, либо дробное до десятых)
 
Подскажите, пожалуйста, можно ли реализовать следующую "защиту от дурака" –
при вводе в ячейку значения, отличного от целого числа (например: 10), либо нецелого дробного, но строго до десятых (например: 10,1 - можно, 10,11 - нельзя), программа бы ругалась и не давала вводить иные варианты значений?
Изменено: Antag - 17.11.2023 01:58:10
VBA – событие при деактивации листа
 
Цитата
написал:
код для модуля книги чуть изменится
Поможете с кодом для модуля книги?
VBA – событие при деактивации листа
 
Цитата
написал:
код для модуля книги чуть изменится, но зато можно сделать код для листа и автоматом решить проблему с тем, какой лист подвергать обработке
Это круто, благодарю за идею!
В моих задачах этот метод – более элегантное и универсальное решение, т. к. есть похожие книги, где листы в начале книги иного формата и назначения, соответственно, ваше предложение предпочтительнее.
Подскажите, пожалуйста, версию кода книги при таком переплёте (на каждый целевой лист, где необходима фильтрация, ставим предложенный вами код и "код для модуля книги чуть изменится").
VBA – событие при деактивации листа
 
Цитата
написал:
лично я против его как основного, ибо индекс меняется от перемещения листов относительно друг друга. В этом случае или привязываться к имени листа более стабильный метод, или  к каким-либо признакам на листе.
Спасибо всем за помощь и дискуссию!
Применительно к моим задачам и концепции "шаловливых ручек":
1. проще этим ручкам объяснить, что листы можно двигать внутри диапазона 1-14, иначе "по попе тыщ-тыщ", "ничего не получится", "будешь сам разбираться и с нуля набивать" и т. д.;
2 к имени листа – нет, т. к. листы нужно и можно переименовывать в зависимости от задач, имя листа тянется внутри этого листа в определённые заголовки, используется в сводном листе вычислений;
3. признаки листа - возможно, но в рамках "защиты от дурака" вполне нормально работает п. 1 :), равно как и защита листов внутри диапазона от удаления (скрыть – скрывай, удалить – хрен тебе, не выйдет).
Изменено: Antag - 10.11.2023 01:10:42
VBA – событие при деактивации листа
 
Цитата
написал:
и в чем проблема?
Спасибо!
А можно ещё на уровень книги туда же, в Workbook_SheetDeactivate
с модулей листов < 15 вот это впихнуть? –
Код
        If Me.FilterMode Then
            Range("B13:G" & Rows.Count).AutoFilter Field:=1
        Else
            Range("B13:G" & Rows.Count).AutoFilter Field:=1, Criteria1:="<>"
        End If
(чтобы ставился фильтр при деактивации, который на ячейке A15)
VBA – событие при деактивации листа
 
Цитата
написал:
на уровень книги все лучше перенести
Исходный файл большой, не все листы одинаковые. В первых 14-ти листах надо, чтобы так срабатывало.

arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
[CODE][/CODE]
VBA – событие при деактивации листа
 
Помогите, пожалуйста, дописать код.
Нужно чтобы при деактивации листа автоматически срабатывала разгруппировка, вызываемая нажатием на ячейку A14 (т. е. чтобы строки 1-13 становились видны).
Спасибо заранее!
Код
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Me.Unprotect Password:="0858"
    If Target.Address(0, 0) = "A14" Then
        ActiveSheet.Outline.ShowLevels 1 - Rows(2).Hidden
        Cancel = True
    Me.Protect Password:="0858"
        Exit Sub
    End If
    If Target.Address(0, 0) = "A15" Then
  Me.Unprotect Password:="0858"
        If Me.FilterMode Then
            Range("B14:G" & Rows.Count).AutoFilter Field:=1
        Else
            Range("B14:G" & Rows.Count).AutoFilter Field:=1, Criteria1:="<>"
        End If
  Me.Protect Password:="0858"
        Cancel = True
        Exit Sub
    End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("H9")) Is Nothing Then
       Target.Offset(9, -6).Select
       ActiveSheet.Outline.ShowLevels 1 - Rows(2).Hidden
       End If
End Sub

Private Sub Worksheet_Deactivate ()  

End Sub  
Установка защиты листов в цикле
 
Цитата
написал:
Можно. Вот весь код модуля ЭтаКнига
Благодарю, работает!
Установка защиты листов в цикле
 
Цитата
написал:
Там есть код, который применяется только к конкретным листам
Проще можно выйти из ситуации? Можно при закрытии книги просто снимать выделение и делать активным лист "Сводная".
Установка защиты листов в цикле
 
Цитата
написал:
В модуль ЭтаКнига вместо ВСЕГО, что там есть. И строку активации не забудьте перенести выше, после строки Dim...
В исходной книге много листов и паролить нужно именно листы со 2-го по 15-й...
Код
    arr = Array(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
Установка защиты листов в цикле
 
Цитата
написал:
В вышеприведенном коде строку активации листа Сводная перенесите выше цикла
Код
Private Sub Workbook_Open()
Dim sSha As Worksheet
For Each sSha In Me.Worksheets
  If sSha.Index <> 1 Then
    sSha.EnableOutlining = True
    sSha.Protect Password:="0858", AllowFiltering:=True, UserInterfaceOnly:=True
  End If
Me.Worksheets("Сводная").Activate
Next
End Sub

Этот код встравить в модуль книги вместо
Код
Sub ProtectShWithOutline(wsSh As Worksheet)
    wsSh.EnableOutlining = True
    wsSh.Protect Password:="0858", AllowFiltering:=True, UserInterfaceOnly:=True
End Sub
?
Установка защиты листов в цикле
 
Цитата
написал:
Обязательно выделять несколько листов? Может достаточно что-то типа такого?
Полагаю, что да. Выделяют несколько листов для того, чтобы распечатать в pdf выделенные, нужные листы.
Установка защиты листов в цикле
 
Подскажите, пожалуйста, как это можно вылечить?
При выделенных листах книги при открытии файла вылезает Debug, но если потом убрать выделение листов и сохранить книгу, Debug потом не вылезает.
Если в лоб никак, то возможно ли сделать такой код:
при закрытии книги выделение листов снимается, и при последующем открытии файла активный лист "Сводная"?
Изменено: Юрий М - 31.10.2023 18:08:38
Страницы: 1 2 3 4 След.
Наверх