Добрый день. Немало времени провел на форуме, в поисках ответа на свой вопрос, который удалось решить лишь частично. Необходимо доработать макрос который бы проверял стоят ли значения в разных столбцах, и сохранял файлы в пдф но с разными именами.
Sub Naprav2()
Если в A2 стоит "+", а в J2 "v" то сохраняем направление 1 и направление 2. Если в A2 стоит "+", а в J2 "0" то сохраняем направление 1.
Всем, привет. Нужна помощь. Нужен макрос, который будет закрашивать ячейки в красный цвет если, дата в ячейке больше или ровна количества дней во второй строке.
Допусти Иванов получил шапку 01.02.2021 года, срок носки составляет 730 дней, сегодня 01.04.2023. Значит он уже ей пользуется 788 дней. Следовательно красим значение в ячейке B2 в красный цвет.
И тд.
Пробовал условное форматирование но при копировании ячеек с данными возникает путаница и система не работает корректно.
Помогите подправить макрос. В таблице нужно оставить определенные столбцы (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
Добрый день уважаемые участники форума!!! Хотел попросить у Вас помощи. Так как не особо понимаю в программировании, не смог найти подходящий для себя вариант. Вообщем цель следующая, нужно чтобы при нажатии кнопки Печать (Сохранить в 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
Добрый день уважаемые участники форума!!! Хотел попросить у Вас помощи. Имеется книга на Листе "Протокол" в столбце 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
Добрый день уважаемые участники форума!!! Хотел попросить у Вас помощи. Перечитал кучу веток форума никак не смог найти подходящий для себя вариант. Вообщем цель следующая имеется книга в ней листы, нужно чтобы при нажатии кнопки печать макрос анализировал установлена ли галочка напротив строки, если да то отправлял на печать отмеченный лист. Заранее благодарен. Пример во вложении