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

Страницы: 1
Защита ячеек паролем с условием
 
Добрый день!
Есть файл, в котором при условии, что сегодня от 15 до 31 число месяца должны блокировать столбцы с месяцами.
Например 16 июля откроется файл и в нём должны заблокироваться столбцы с начала года по текущий месяц +3 месяца (т.е. по октябрь)
Конец августа - по ноябрь
Помогите, пожалуйста
Сравнение двух таблиц
 
Добрый день! Такой вопрос:
Есть Таблица1: Яблоки, груши
Таблица2: Яблоки, груши, бананы
Как сделать чтобы код нашел все значения из Таб1 в Таб2?
Написала код, понимаю в чём ошибка, но не понимаю как исправить..
Помогите, пожалуйста

LRK думала писать как LRK =WS.Range("A" & WS.Rows.Count).End(xlUp).Row, но тоже не работает

Вот основная часть кода:
Код
Set WS = ThisWorkbook.Sheets("Отчёт")
Set WSK = WBK.Worksheets("Овощи")
LK = WSK.Range("C" & WSK.Rows.Count).End(xlUp).Row

For RK = 5 To LK
   
    If WS.Cells(LRK, "D") = WSK.Cells(RK, "C") Then
        WS.Cells(LRK, "Q") = WSK.Cells(RK, "BC")
        LRK=LRK+1
    End If
Next RK
Изменено: An_2020 - 26.05.2023 15:30:48
Отмечать даты в календаре с указанием информации в примечании
 
Добрый день!
Задача состоит в следующем: Сотрудники на листе "Нерабочие дни" указывают свою фамилию и даты нерабочих дней.
А на листе "Календарь",  в ячейках, соответствующих дате закрашивались те самые нерабочие дни и при наведении на этот день была написана фамилия сотрудника
Возможно ли это реализовать?
Помогите, пожалуйста)
Изменено: An_2020 - 18.04.2023 07:51:12
Посчитать сумму по условию
 
Доброго времени суток! Помогите, пожалуйста
Формула СУММЕСЛИМН не подходит, тк каждую неделю файл по мере добавления нового будет меняться (данные берутся из последнего сохранённого в папке. А в формуле придётся каждый раз менять название файла). Как найти последний файл и открыть его уже нашла. Поиск нужного критерия  в столбце "D", а брать значения нужно из "BI". в идеале, чтобы макрос сам распознавал все уникальные значения в столбце "D".
Нужен макрос, который считает сумму по значению. В моём случае по стране. Моих знаний хватило лишь на это:
Код
PZ = ThisWorkbook.Sheets("Справка о динамике")
Arh = S.Open(p)
LR = PZ.Range("A" & PZ.Rows.Count).End(xlUp).Row
LRA = Arh.Range("A" & Arh.Rows.Count).End(xlUp).Row
For RZ = 5 To LRA
    S = Arh.Cells(RZ, "D")
If S = "Азербайджан" Then
Изменено: An_2020 - 11.04.2023 10:15:19
Сохранение копии файла, но без поддержки макросов
 
Добрый день! Нашла код, который сохраняет копию файла. Но как сделать, чтобы он копировался без поддержки макрсов? А как обычный Эксель файл

Код
Sub Backup_Active_Workbook()
    Dim x As String
    strPath = "C:\Desktop\Архив"     'папка для сохранения резервной копии
    On Error Resume Next
    x = GetAttr(strPath) And 0
    If Err = 0 Then ' если путь существует - сохраняем копию книги, добавляя дату
        strDate = Format(Now, "dd-mm-yy")
        FileNameXls = strPath & "\" & "Отчёт " & " " & strDate & ".xls"   'или xlsm
        ActiveWorkbook.SaveCopyAs Filename:=FileNameXls
    Else 'если путь не существует - выводим сообщение
        MsgBox "Папка " & strPath & " недоступна или не существует!", vbCritical
    End If
End Sub
Сократить код
 
Добрый день! Пыталась написать код, но он у меня в итоге получится МЕГА длинным...
Суть в том, чтобы из выбранного файла методом копипаста вставлялись значения в книгу, в которой и содержится код. У меня это получилось, но очень топорно. Как видите, большинство информации не меняется.

Помогите, пожалуйста

ЗЫ: сейчас прикреплю пример
Код
Dim OD As Workbook
Dim ODS As Worksheet
Dim TDS As Worksheet
Dim LR, RZ As String
Dim PT As String

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False

Set TDS = ThisWorkbook.Sheets("Свод)
LR = TDS.Range("A" & TDS.Rows.Count).End(xlUp).Row + 1

PT = Application.GetOpenFilename("Excel files(*.xls*),*.xls*, 2,", , True)
Set OD = Workbooks.Open(PT)
Set ODS = OD.Worksheets("Отчет")
'ODS.Unprotect "1234"

'-------------------------------------------
TDS.Cells(LR, "A") = ODS.Cells(6, "C")
TDS.Cells(LR, "B") = ODS.Cells(7, "C")
TDS.Cells(LR, "C") = ODS.Cells(15, "B")
TDS.Cells(LR, "D") = ODS.Cells(15, "E") 
TDS.Cells(LR, "E") = ODS.Cells(15, "C")
TDS.Cells(LR, "G") = ODS.Cells(9, "C")
TDS.Cells(LR, "H") = ODS.Cells(10, "C")
LR = LR + 1
TDS.Cells(LR, "A") = ODS.Cells(6, "C")
TDS.Cells(LR, "B") = ODS.Cells(7, "C")
TDS.Cells(LR, "C") = ODS.Cells(15, "B")
TDS.Cells(LR, "D") = ODS.Cells(15, "F") 
TDS.Cells(LR, "E") = ODS.Cells(15, "C")
TDS.Cells(LR, "G") = ODS.Cells(9, "C")
TDS.Cells(LR, "H") = ODS.Cells(10, "C")
Изменено: An_2020 - 30.03.2023 13:37:29
Макрос завершается, но ничего не происходит
 
Добрый день!
На основе кода одного замечательного человека)) пыталась написать код, в котором скрываются строки при условии, что в столбцах E, F и G нет никах значений. Но когда я его запускаю ничего не происходит..
Помогите, пожалуйста
Код
Sub mydelite()

Dim WS As Worksheet
Dim RZ As Long
Dim LR As Long

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False

Set WS = Workbooks("Справка").Sheets("Отчёт")
LR = WS.Range("B" & WS.Rows.Count).End(xlUp).Row

For RZ = 3 To LR
    If WS.Cells(RZ, "E") = " " Then
        Rows(RZ).EntireRow.Hidden = True
    RZ = RZ + 1
    End If
Next RZ

Application.Calculation = xlCalculationAutomatic
Application.AskToUpdateLinks = True
Application.DisplayAlerts = True

End Sub
Ошибка 91
 
Добрый день!
Изначально планируется чтобы код открывал окно для выбора файла, после чего копипастом значения ячеек переносились в первый файл (WD)
Пыталась написать код, но выдаёт ошибку на строке WBO = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", 2, "Выбрать Excel файлы", , True)
Файл я выбрать могу, но после попытки открыть его появляется такая ошибка и WBO=Nothing при наведении на соответствующую переменную, получается он его не видит... И WD тоже самое
Помогите, пожалуйста
Код
Sub serbius()

Dim WBO As Range
Dim WO As Workbook
Dim iLastRow As Long
Dim A As Range
Dim WD As Workbook

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False

Set WD = ThisWorkbook.Sheets("Ком. деятельность")

WBO = Application.GetOpenFilename("Excel files(*.xls*),*.xls*", 2, "Выбрать Excel файлы", , True)

Workbooks(WBO).Sheets("Отчёт").Activate
Range("C7").Copy

WD.Sheets("Ком. деятельность").Activate
iLastRow = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row

Set A = Cells(iLastRow + 1, 1)
A.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False
Application.ScreenUpdating = False

WO.Close True

End Sub
Ускорить и упростить код, Есть код, который долго работает, как его облегчить?
 
Добрый день!
Есть 10 файлов, к которым применяется этот код.
Можно ли что-то сделать чтобы он стал быстрее? Загружается около 2 минут.
Помогите, пожалуйста!
Код
Sub Workbook_Open()
Dim arFiles, x, c As Range
Dim iLastRow As Long
Dim A As Range

Application.AskToUpdateLinks = False
Workbooks("Основной").Sheets("Расчёт").Range("A5:CO500").Clear

Workbooks.Open Filename:="тут указан путь"
Workbooks("Москва").Sheets("Расчёт").Range("CO5", Cells(Rows.Count, "A").End(xlUp)).Copy

Workbooks("Основной").Sheets("Расчёт").Activate
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row

Set A = Cells(iLastRow + 1, 1)
A.Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False
Application.ScreenUpdating = False
Workbooks("Москва").Close True

End Sub
По значению в ячейке определить в какой файл копировать строку
 
Добрый день!
Очень непростая для меня задача, помогите пожалуйста.
Если в файле "Общий" в столбце "А" появились новые значения внизу таблицы, то нужно эту строку скопировать в другую книгу. Но проблема в том, что нужно чтобы код по столбцу "С" понимал в какой именно файл нужно эту строку скопировать.

Например в файл "Общий" я добавила в столбцы "А" и "С" слова "Стол" и "Москва" соответственно,  и чтобы эта строка попала в файл с названием "Заказы Москва" по значению в столбце "С".
Так же чтобы понимал где последняя заполненная ячейка и заполнял следующую пустую.

Так же прикрепляю максимально упрощенный пример, остальное, думаю, доработаю сама
Если добавлении значения в ячейку, скопировать строку с этой ячейкой в другую книгу
 
Добрый день!
Очень непростая для меня задача, помогите пожалуйста.
Если в файле "Общий" в столбце "А" появились новые значения внизу таблицы, то нужно эту строку скопировать в другую книгу. Но проблема в том, что нужно чтобы код по столбцу "С" понимал в какой именно файл нужно эту строку скопировать.

Например в файл "Общий" я добавила в столбцы "А" и "С" слова "Стол" и "Москва" соответственно,  и чтобы эта строка попала в файл с названием "Заказы Москва" по значению в столбце "С".
Понимаю, что это с использованием Target, поиском последней строки. Но реализовать это совсем не получается. Думала взять данный код как образец, но собрать коды с разных сайтов в один не могу. Знания не так обширны. Помогите, пожалуйста
ЗЫ: Извините, если не очень понятно написала свой вопрос...


Добавила вложение, такого плана будут таблицы
Код
Dim WorkRng As Range
Dim Rng As Range
Dim xOffsetRow As Integer
Set WorkRng = Intersect(Application.ActiveSheet.Range("D7:AK120"), Target)
xOffsetRow = 1
If Not WorkRng Is Nothing Then
    Application.EnableEvents = False
Dim r As Long
r = ActiveSheets.Cells(ActiveSheets.Rows.Count, "AL").End(xlToUp).Row+1
    For Each Rng In WorkRng
Изменено: An_2020 - 13.03.2023 14:32:24
Копировать значения до последней заполненной ячейки
 
Добрый день! Копирую данные из таблицы. В столбце "А" все строки заполнены без пустых. А вот в столбце "СС" есть пустые строки.
В коде у меня последнюю заполненную ищет по столбцу "СС" и поэтому вставляются не все строки. ( как я понимаю)
Как сделать, чтобы код смотрел на первый столбец, а не на последний?
Спасибо!
Код
Workbooks("Страна").Sheets("Отчёт).Range("A5", Cells(Rows.Count, "CC").End(xlUp)).Copy
Изменено: An_2020 - 10.03.2023 09:30:06
Одинаковый код, но разный результат
 
Всем здравствуйте!

Такая ситуация:
Есть несколько файлов, из которых информация поступает в один файл, в котором прописала код.
На некоторых файлах код работает корректно, а на некоторых вставляются вместо всех строк только 1-2 строки
Код
Workbooks.Open Filename:="\\vtk-kildushov\WG\!!! Портфель заказов\ПЗ Регион Африка.xlsx"
Workbooks("ПЗ Регион Африка").Sheets("Основной расчёт").Range("A5", Cells(Rows.Count, "I").End(xlUp)).Copy

Workbooks("ПЗ_факт+ожид — копия").Sheets("Основной расчёт").Activate
iLastRow = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row

Set A = Cells(iLastRow + 1, 1)
A.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

Application.CutCopyMode = False
Application.ScreenUpdating = False
Workbooks("ПЗ Регион Африка").Close True
Копировать из файла
 
Добрый день! Помогите, пожалуйста. Есть файлы, информация в которых должна копироваться в файл "отчет". Дело в том, что это происходит не просто по порядку, а например А1 в С5, В1 в Е5, Р1 в О2. и тп. Писала сама, получается очень длинный и нужно переделывать под каждый файл отдельно. Вот отрывок:
Код
Dim lLastRow As Long
Workbooks.Open Filename:="С\2022 \Отчёт\Отчёт.xlsm"

Workbooks("Авто.xls").Worksheets("Данные").Range("D8").copy

 With Workbooks("Отчёт.xlsm").Sheets("Коммерц")
       lLastRow = Cells(Rows.Count, 1).End(xlUp).Row

    Range("B" & lLastRow + 1).PasteSpecial (xlPasteValues)
End With

Значение ячейки не входит в список
 
Добрый день! Есть столбец, в который записывают данные и  на другом листе список стандартных значений. Помогите, пожалуйста, написать макрос, чтобы в случае ввода значений, не входящих в список, менялся цвет шрифта на красный.  6 строку сама придумала, остальное из инета взяла.
Код
Set p=Sheets("Значения").Range("Список")
If Target.Cells.Count >1 Then Exit Sub
If IsEmpty(Target) Then Exit Sub
If not Intersect(Target,Range("A2:A10")) Is Nothing Then
If WorkSheetFunction.CountIf(p,Target)=0 Then
If not Intersect(Target, Sheets("Значения").Range("Список")) Then Target.Interior.Color=vbRed
End If
End If
End Sub
Автоматическая вставка значений из одного файла в другой
 
Добрый день! Вопрос такой, можно ли вставлять данные из другого файла, не  открывая? Т.е. при открытии "отчёт"  в него копируются данные из других файлов (типа "январь", "февраль" и тп.). Но вставлять нужно не всю таблицу, а часть информации...Скиньте, пожалуйста, типовой код. Не могу найти,  везде требуется открывать файл из которого нужно копировать
Автоотправка письма 1 числа каждого месяца
 
Добрый день! Помогите, пожалуйста.  Есть файл, который нужно будет раз в месяц отправлять по почте Outlook,  но проблема в том, что отправлять нужно не тот файл, в котором пишу макрос, поэтому в коде должен быть указан путь. К тому же, чтобы даже при закрытом файле этот код работал...
Автоматическая отправка письма в Outlook
 
Снова здравствуйте)
Есть файл, в котором есть поля "Пользователь", "Дата" и ячейки, которые этот пользователь меняет. Нужно чтобы эксель создавал файл с таблицей, в которой будут столбцы "Пользователь", "Дата", "Лист", "Ячейка" (лист и ячейка, которые изменил пользователь) Можно ли сделать журнал, в который будет сохраняться вся эта информация по изменениям? Нашла такой код, но он не хочет работать :(
И еще вопрос, как я поняла, если в файле нет скрытых, заблокированных листов и ячеек, то макросы будут работать в общем доступе?
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Sh.Name = "LOG" Then Exit Sub
    Dim sLastValue As String
    Dim lLastRow As Long, wbLOG As Workbook
    Dim sPath As String
    Const sLOGName As String = "\LOG.xlsx"
    sPath = "C:\Users\Макс\Desktop"
    Application.ScreenUpdating = False
  
    '==============   только для записи в отдельный файл Excel ======================
    If Dir(sPath & sLOGName, vbDirectory) = "" Then
       Set wbLOG = Workbooks.Add
       wbLOG.SaveAs sPath & sLOGName, xlNormal
    End If
    Set wbLOG = Workbooks.Open(sPath & sLOGName)
    '============================================================================
    With wbLOG.Sheets(1)
        lLastRow = .Cells.SpecialCells(xlLastCell).Row + 1
        If lLastRow = .Rows.Count Then Exit Sub
        Application.ScreenUpdating = False: Application.EnableEvents = False
        .Cells(lLastRow, 1) = CreateObject("wscript.network").UserName
        .Cells(lLastRow, 2) = Format(Now, "dd.mm.yyyy HH:MM:SS")
        .Cells(lLastRow, 3) = Sh.Name
        .Cells(lLastRow, 4) = Target.Address(0, 0)
        .Cells(lLastRow, 5).NumberFormat = "@"
        .Cells(lLastRow, 5) = sValue
        If Target.Count > 1 Then
            Dim rCell As Range, rRng As Range
            On Error Resume Next
            Set rRng = Intersect(Target, Sh.UsedRange): On Error GoTo 0
            If Not rRng Is Nothing Then
                For Each rCell In rRng
                    If Not IsError(Target) Then sLastValue = sLastValue & "," & rCell Else sLastValue = sLastValue & "," & "Err"
                Next rCell
                sLastValue = Mid(sLastValue, 2)
            Else
                sLastValue = ""
            End If
        Else
            If Not IsError(Target) Then sLastValue = Target.Value Else sLastValue = "Err"
        End If
        .Cells(lLastRow, 6).NumberFormat = "@"
        .Cells(lLastRow, 6) = sLastValue
    End With
    wbLOG.Close 1
    Application.ScreenUpdating = True: Application.EnableEvents = True
End Sub
 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    If Sh.Name = "LOG" Then Exit Sub
    If Target.Count > 1 Then
        Dim rCell As Range, rRng As Range
        On Error Resume Next
        Set rRng = Intersect(Target, Sh.UsedRange): On Error GoTo 0
        If rRng Is Nothing Then Exit Sub
        For Each rCell In rRng
            If Not IsError(rCell) Then sValue = sValue & "," & rCell Else sValue = sValue & "," & "Err"
        Next rCell
        sValue = Mid(sValue, 2)
    Else
        If Not IsError(Target) Then sValue = Target.Value Else sValue = "Err"
    End If
End Sub

Применить макросы ко всем листам
 
Знаю, что такие темы есть, коды из них пыталась применить, но они не работают. Данный код работает только на 1 листе, помогите сделать так, чтобы он работал на всех листах.



Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False
For Each cell In Target
 If Not Intersect(cell, Range("A2:E4")) Is Nothing Then
    With Cells(cell.Row, 6)
    .Value = Now
    .EntireColumn.AutoFit
    End With
    With Cells(cell.Row, 7)
    .Value = Application.UserName
    .EntireColumn.AutoFit
    End With
  End If
Next cell
Application.EnableEvents = True


End Sub
Как написать отссылку на столбец, Относительно строки
 
Добрый день! Есть таблица, в которой хаотично будут заполняться поля. В конце строки, допустим в столбце "N" должно отмечаться, что хотя бы одна ячейка заполнена. За основу взяла дату. С targetом разобралась, с датами тоже. Осталось правильно указать путь для даты... И тут у меня проблема, то совсем ничего не пишет, то пишет снизу заполненной ячейки. Делала через offset. Помогите, пожалуйста  
Отслеживание изменения ячеек
 
Добрый день, извиняюсь,  если такая тема уже была. Но я не нашла...
вопрос такой: есть таблица с общим доступом, в ней разные пользователи будут заполнять свои строки. Задача состоит в том, чтобы в конце таблицы указывалась дата изменения значения ячейки в строке. Но чтобы столбец с датами видели не все пользователи  
Страницы: 1
Наверх