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

Страницы: 1
Макрос для печати в зависимости от условий в ячейках
 
Добрый день. Немало времени провел на форуме, в поисках ответа на свой вопрос, который удалось решить лишь частично. Необходимо доработать макрос который бы проверял стоят ли значения в разных столбцах, и сохранял файлы в пдф но с разными именами.

Sub Naprav2()

Если в A2 стоит "+", а в J2 "v" то сохраняем направление 1 и направление 2.
Если в A2 стоит "+", а в J2 "0" то сохраняем направление 1.

И так далее A3....A20, J3....J20


Уже всю голову сломал что и куда нужно вставить.

Заранее благодарен.
Изменить цвет ячейки в зависимости от даты
 
Всем, привет. Нужна помощь. Нужен макрос, который будет закрашивать ячейки в красный цвет если, дата в ячейке больше или ровна количества дней во второй строке.

Допусти Иванов получил шапку 01.02.2021 года, срок носки составляет 730 дней, сегодня 01.04.2023. Значит он уже ей пользуется 788 дней.
Следовательно красим значение в ячейке B2 в красный цвет.

И тд.

Пробовал условное форматирование но при копировании ячеек с данными возникает путаница и система не работает корректно.

Спасибо.
Подсчет значений в диапазоне по массиву условий, Упростить формулу
 
Всем привет, как можно сократить формулу, так как строк в таблице больше 1000

=СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$2)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$3)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$4)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$5)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$6)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$7)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$8)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$9)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$10)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$11)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$12)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$13)+СЧЁТЕСЛИМН(AB$8:AB$990;"ON";$G$8:$G$990;$G$1010;$N$8:$N$990;Лист1!$A$14)
Изменено: БМВ - 19.12.2022 20:58:13
Макрос поиска дубликатов с последующим сложением и удалением
 
Всем привет.  

Помогите подправить макрос. В таблице нужно оставить определенные столбцы (BCDENP), а остальные удалить. Во вновь полученной таблице сделать сортировку значение, и удалить дублирующие строки в столбце Material, но с суммированием значений из столбцов отдельно для Unrestricted и Blocked. В файле добавил описание. Количество строк может достигать 10000. И если, не сложно описать каждую строку кода для дальнейшего понимания.

Заранее спасибо.

Код
Sub DEl()
Dim Uniq As New Collection, Lastrow As Long, i As Long, j As Long, Arr(), Arr2()
Lastrow = Cells(Rows.Count, 5).End(xlUp).Row
Range(Cells(2, 5), Cells(Lastrow + 1, 6)).Clear
Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
Arr = Range(Cells(2, 1), Cells(Lastrow, 2)).Value
    For i = 1 To UBound(Arr, 1)
        On Error Resume Next
        Uniq.Add Arr(i, 1), CStr(Arr(i, 1))
    Next
    ReDim Arr2(1 To Uniq.Count, 1 To 2)
    For i = 1 To Uniq.Count
        For j = 1 To UBound(Arr, 1)
            If Arr(j, 1) = Uniq(i) Then
                Arr2(i, 1) = Uniq(i)
                Arr2(i, 2) = Arr2(i, 2) + Arr(j, 2)
            End If
        Next
    Next
    Range(Cells(2, 5), Cells(Uniq.Count + 1, 6)) = Arr2
End Sub
Изменено: Denchik1983 - 01.08.2022 02:45:14
Печать бланка при последовательном его заполнении из диапазона строк
 
Всем привет, ребята подскажите пожалуйста как мне проще написать данную команду на 100 ячеек. Спасибо.
Код
Range("A2").Select
    ActiveCell.FormulaR1C1 = "+"
    Sheets("Бланк").PrintOut From:=1, To:=3, Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Application.StatusBar = False
    Worksheets("Данные").Select
    Range("A2").Select
    Selection.ClearContents
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "+"
    Sheets("Бланк").PrintOut From:=1, To:=3, Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Application.StatusBar = False
    Worksheets("Данные").Select
    Range("A3").Select
    Selection.ClearContents
    Range("A4").Select
    ActiveCell.FormulaR1C1 = "+"
    Sheets("Бланк").PrintOut From:=1, To:=3, Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Application.StatusBar = False
    Worksheets("Данные").Select
    Range("A4").Select
    Selection.ClearContents
    Range("A5").Select
    ActiveCell.FormulaR1C1 = "+"
    Sheets("Бланк").PrintOut From:=1, To:=3, Copies:=1, Collate:=True, IgnorePrintAreas:=False
    Application.StatusBar = False
    Worksheets("Данные").Select
    Range("A5").Select
    Selection.ClearContents
Макрос для печати для определенных листов, Печать определенных листов
 
Добрый день уважаемые участники форума!!! Хотел попросить у Вас помощи. Так как не особо понимаю в программировании, не смог найти подходящий для себя вариант. Вообщем цель следующая, нужно чтобы при нажатии кнопки Печать (Сохранить в PDF) макрос анализировал установлен ли + напротив строки, если да, то отправлял на печать (сохранял в PDF) лист. Данными из этой строки где установлен +, заполняются строки на листе Бланк ПН. Также хотелось узнать есть ли возможность при печати выбирать какие страницы печатать при определенном условии. Например печатаем страницы 1,2,3 если в ячейке F4 1, или печатаем страницы 2,4,6 если в ячейке F5 2. Заранее благодарен. Пример во вложении.

Вот есть примеры, но я не пойму как их мне отредактировать под свои нужды.

Sub ВPDF()
   Const sPROTOCOL_WSH_NAME As String = "Данные"
   
   With ThisWorkbook.Worksheets(sPROTOCOL_WSH_NAME)
       Dim arr(): arr = .Range("A4:A" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Value
   End With ' ThisWorkbook.Worksheets(sPROTOCOL_WSH_NAME)
   
   Dim i As Long, j As Long: j = UBound(arr, 2)
   Dim aSh(), li As Long
   Dim t As String
   On Error Resume Next
   For i = 1 To UBound(arr, 1)
       If StrComp(arr(i, j), "+", vbTextCompare) = 0 Then
           ReDim Preserve aSh(li)
           aSh(li) = CStr(arr(i, 1))
           li = li + 1
           t = t + " " + CStr(arr(i, 1))
       End If
   Next i
   If li = 0 Then
   MsgBox ("Поставь + в столбец Печать, для сохранения файла!!!!")
   End If
   
      t = "Паспорт" + t
     Worksheets(aSh).Select
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
       ThisWorkbook.Path & "\" & t, Quality:=xlQualityStandard, _
       IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
       
   On Error GoTo 0
   Application.StatusBar = False
   Worksheets("Данные").Select
End Sub

Sub Печать1()
   Const sPROTOCOL_WSH_NAME As String = "Данные"
   
   With ThisWorkbook.Worksheets(sPROTOCOL_WSH_NAME)
       Dim arr(): arr = .Range("A6:P" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Value
   End With ' ThisWorkbook.Worksheets(sPROTOCOL_WSH_NAME)
   
   Dim i As Long, j As Long: j = UBound(arr, 2)
   Dim t As Long
   On Error Resume Next
   For i = 1 To UBound(arr, 1)
       If StrComp(arr(i, j), "+", vbTextCompare) = 0 Then
          t = t + 1

           With ThisWorkbook.Worksheets(CStr(arr(i, 1)))
               If Err = 0 Then
                   Application.StatusBar = "Печатаем лист """ & .Name & """"
                   .PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
               Else
                   Err.Clear
               End If ' Err = 0
           End With ' ThisWorkbook.Worksheets(arr(i, 1))
       End If
   Next i
   
   On Error GoTo 0
   Application.StatusBar = False
   If t = 0 Then
   MsgBox ("Поставь + в столбец Печать, для сохранения файла!!!!")
   End If
End Sub
Изменено: Denchik1983 - 20.07.2020 23:36:35 (Добавил скрипт)
Макрос сохранение книги в многостраничный файл PDF в определенных условиях
 

Добрый день уважаемые участники форума!!! Хотел попросить у Вас помощи. Имеется книга на  Листе "Протокол" в столбце A содержатся имена листов, которые нужно сохранить в формат многостраничного pdf, если отмечен "+" в столбце M, при нажатие кнопки. Я не особо силен в программировании, изучив возможности остановился на этом варианте. Но у меня не получается сохранить листы в  многостраничный файл.  Очень надеюсь на вашу помощь.

Код
Sub Печать()
    Const sPROTOCOL_WSH_NAME As String = "Протокол"
    
    With ThisWorkbook.Worksheets(sPROTOCOL_WSH_NAME)
        Dim arr(): arr = .Range("A6:M" & .Cells.SpecialCells(xlCellTypeLastCell).Row).Value
    End With ' ThisWorkbook.Worksheets(sPROTOCOL_WSH_NAME)
    
    Dim i As Long, j As Long: j = UBound(arr, 2)
    Dim t As String
    On Error Resume Next
    For i = 1 To UBound(arr, 1)
        If StrComp(arr(i, j), "+", vbTextCompare) = 0 Then
        t = t + "," + CStr(arr(i, 1))
        End If
    Next i
   Worksheets(t).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        ThisWorkbook.Path & "\" & "xx1.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
        
    On Error GoTo 0
    Application.StatusBar = False
End Sub
Изменено: Denchik1983 - 25.04.2017 09:38:10
Макрос для печати выбранных листов
 
Добрый день уважаемые участники форума!!! Хотел попросить у Вас помощи. Перечитал кучу веток форума никак не смог найти подходящий для себя вариант. Вообщем цель следующая имеется книга в ней листы, нужно чтобы при нажатии кнопки печать макрос анализировал установлена ли галочка напротив строки, если да то отправлял на печать отмеченный лист. Заранее благодарен. Пример во вложении
Страницы: 1
Наверх