Добрый день, уважаемые форумчане!!! В виду того что долговечных сотрудничеств нет, между работодателем и сотрудником. Задумался над тем, что: А ПОЧЕМУ Я ДОЛЖЕН ОСТАВЛЯТЬ СВОИ НАРАБОТКИ РАБОТОДАТЕЛЮ!? Тем более что они "Наработки" стали пользоваться спросом в организации... Мало ли что бывает увольнение по собственному, сокращение или просто увольнение... Задумался и начал искать макрос "Удаление информации при наступлении указанной даты" и нашел очень хороший материал My WebPage Но в виду того что не особо разбираюсь в кодах прошу вас помощи: 1. Не могли бы помочь понять данный макрос "Пояснениями". Что означает то или другое действие кода!? 2. А также дополнить его: - Если Листы будут именоваться иначе а не "Sheet1; Sheet2; Sheet3" а как то иначе. - Также если лист "Служ" будет скрыт и запоролен, как и сам этот макрос. И как это сделать Мне это нужно для понимания действия кода. Заранее Вам всем при много благодарен!!!
Добрый день, уважаемые форумчане!!! В виду того что долговечных сотрудничеств нет, между работодателем и сотрудником. Задумался над тем, что: А ПОЧЕМУ Я ДОЛЖЕН ОСТАВЛЯТЬ СВОИ НАРАБОТКИ РАБОТОДАТЕЛЮ!? Тем более что они "Наработки" стали пользоваться спросом в организации... Мало ли что бывает увольнение по собственному, сокращение или просто увольнение... Задумался и начал искать макрос "Удаление информации при наступлении указанной даты" и нашел очень хороший материал My WebPage Но в виду того что не особо разбираюсь в кодах прошу вас помощи: 1. Не могли бы помочь понять данный макрос "Пояснениями". Что означает то или другое действие кода!? 2. А также дополнить его: - Если Листы будут именоваться иначе а не "Sheet1; Sheet2; Sheet3" а как то иначе. - Также если лист "Служ" будет скрыт и запоролен, как и сам этот макрос. И как это сделать Мне это нужно для понимания действия кода. Заранее Вам всем при много благодарен!!!lebensvoll
Sub удаление_книги() If Date > #1/30/2018# Then Application.DisplayAlerts = False ThisWorkbook.ChangeFileAccess xlReadOnly Kill ThisWorkbook.FullName Application.DisplayAlerts = True ThisWorkbook.Close 0 End If End Sub
[/vba]
Можно еще "красивее" распрощаться [vba]
Код
Sub удаление_книги() If Date > #1/30/2018# Then Application.DisplayAlerts = False ThisWorkbook.ChangeFileAccess xlReadOnly Kill ThisWorkbook.FullName Application.DisplayAlerts = True ThisWorkbook.Close 0 End If End Sub
Manyasha, доброе утро!!! Да я вот именно хочу понять сам код, для себя "чтоб вы помогли написать пояснения" что означает каждое действие кода примерно: [vba]
Код
Private Sub Workbook_Open() Dim sh As Worksheet, i As Long 'Обьевляем переменную With Sheets("Служ") 'На каком листе условие
[/vba] Вот именно это я имел ввиду "ПОЯСНЕНИЕ". А вот ДОПОЛНЕНИЕ уже я так понимаю предлагает fan-vba, даже не дополнение а упрощение Спасибо вам огромное за ответы
Manyasha, доброе утро!!! Да я вот именно хочу понять сам код, для себя "чтоб вы помогли написать пояснения" что означает каждое действие кода примерно: [vba]
Код
Private Sub Workbook_Open() Dim sh As Worksheet, i As Long 'Обьевляем переменную With Sheets("Служ") 'На каком листе условие
[/vba] Вот именно это я имел ввиду "ПОЯСНЕНИЕ". А вот ДОПОЛНЕНИЕ уже я так понимаю предлагает fan-vba, даже не дополнение а упрощение Спасибо вам огромное за ответыlebensvoll
Кто бы ты ни был, мир в твоих руках
Сообщение отредактировал lebensvoll - Четверг, 18.01.2018, 10:35
Private Sub Workbook_Open() Dim sh As Worksheet, i As Long 'объявляются переменные: ' sh - переменная, указывающая на листы книги ' i - числовая переменная для цикла в большом диапазоне целых чисел With Sheets("Служ") ' указываем на объект лист с именем "Служ" для запуска различных операторов If Date = Fix(.Range("Z3").Value) And .Range("Z3").Value <> "" Then ' условие на проверку совпадения текущей даты с датой в ячейке Z3, ' а также условие на то, что ячейка Z3 не пустая Application.DisplayAlerts = False 'отключение системных предупреждений For Each sh In Worksheets ' перебор всех листов в книге If sh.Name <> .Name Then ' условие на "не" совпадение листов с именем листа "Служ" sh.Delete 'удаление всех листов книги, кроме листа "Служ"(благодаря условию выше) End If 'здесь заканчивается текущее условие перебора листов Next sh ' тут заканчивается перебор всех листов Application.DisplayAlerts = True 'включение системных предупреждений For i = 1 To 3 'запуск цикла на 3 шага Sheets.Add After:=Sheets(Sheets.Count) ' добавление нового листа (3 листа - по количеству шагов в цикле) ActiveSheet.Name = "Sheet" & i 'присвоение созданному листу имени (Sheets1, Sheets2,Sheets3 соответственно) Next i ' окончания цикла .Range("Z3").ClearContents 'очищение данных в ячейке Z3 End If 'окончание проверки условий в ячейке Z3 End With End Sub
[/vba] а кодом из 3 поста заполнены большинство моих проектов на моей работе)
я для себя понимаю этот код так: [vba]
Код
Private Sub Workbook_Open() Dim sh As Worksheet, i As Long 'объявляются переменные: ' sh - переменная, указывающая на листы книги ' i - числовая переменная для цикла в большом диапазоне целых чисел With Sheets("Служ") ' указываем на объект лист с именем "Служ" для запуска различных операторов If Date = Fix(.Range("Z3").Value) And .Range("Z3").Value <> "" Then ' условие на проверку совпадения текущей даты с датой в ячейке Z3, ' а также условие на то, что ячейка Z3 не пустая Application.DisplayAlerts = False 'отключение системных предупреждений For Each sh In Worksheets ' перебор всех листов в книге If sh.Name <> .Name Then ' условие на "не" совпадение листов с именем листа "Служ" sh.Delete 'удаление всех листов книги, кроме листа "Служ"(благодаря условию выше) End If 'здесь заканчивается текущее условие перебора листов Next sh ' тут заканчивается перебор всех листов Application.DisplayAlerts = True 'включение системных предупреждений For i = 1 To 3 'запуск цикла на 3 шага Sheets.Add After:=Sheets(Sheets.Count) ' добавление нового листа (3 листа - по количеству шагов в цикле) ActiveSheet.Name = "Sheet" & i 'присвоение созданному листу имени (Sheets1, Sheets2,Sheets3 соответственно) Next i ' окончания цикла .Range("Z3").ClearContents 'очищение данных в ячейке Z3 End If 'окончание проверки условий в ячейке Z3 End With End Sub
[/vba] а кодом из 3 поста заполнены большинство моих проектов на моей работе)fan-vba
Сообщение отредактировал fan-vba - Пятница, 19.01.2018, 17:18
Если нужно удалить листы и потом добавить листы с теми же именами, что были у исходных листов, может проще удалить данные с листов? [vba]
Код
Private Sub Workbook_Open() Dim D As Date 'переменная Дата - условие Dim sh As Worksheet 'объектная переменная Лист Excel Dim nam$ 'строковая переменная - имя листа с датой
nam = "Служ" 'задаем имя листа с датой With Me 'работаем с книгой, из которой запускается этот макрос D = .Sheets(nam).[Z3] 'пишем дату с листа в переменную If Date >= D Then 'если текущая системная дата >= условие For Each sh In .Sheets 'перебор всех листов If sh.Name <> nam Then 'если имя листа <> значению переменной nam sh.Columns.Delete 'удаляем всё с листа End If Next End If End With End Sub
[/vba]
Если нужно удалить листы и потом добавить листы с теми же именами, что были у исходных листов, может проще удалить данные с листов? [vba]
Код
Private Sub Workbook_Open() Dim D As Date 'переменная Дата - условие Dim sh As Worksheet 'объектная переменная Лист Excel Dim nam$ 'строковая переменная - имя листа с датой
nam = "Служ" 'задаем имя листа с датой With Me 'работаем с книгой, из которой запускается этот макрос D = .Sheets(nam).[Z3] 'пишем дату с листа в переменную If Date >= D Then 'если текущая системная дата >= условие For Each sh In .Sheets 'перебор всех листов If sh.Name <> nam Then 'если имя листа <> значению переменной nam sh.Columns.Delete 'удаляем всё с листа End If Next End If End With End Sub
И все же, название "Расписать макрос пояснениями и дополнить" не несет никакой практической ценности, под это название подходит любой макрос, а в теме обсуждается конкретная задача. Тему переименовала.
И все же, название "Расписать макрос пояснениями и дополнить" не несет никакой практической ценности, под это название подходит любой макрос, а в теме обсуждается конкретная задача. Тему переименовала.Manyasha
Здравствуйте друзья. Скажите а этот скрипт можно применить к ситуации, когда из колонки с диапазоном А2-А1000 каждый понедельник нужно удалять данные?
Здравствуйте друзья. Скажите а этот скрипт можно применить к ситуации, когда из колонки с диапазоном А2-А1000 каждый понедельник нужно удалять данные?Ефгений
Именно этот нет, нельзя Если нужно, то - Создайте свою тему согласно п.5q Правил форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума
Именно этот нет, нельзя Если нужно, то - Создайте свою тему согласно п.5q Правил форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 100кб согласно п.3 Правил форума_Boroda_