Sub Del_Wsch() 'Удаляет лишние листы в книке счетов
Dim iWb As Workbook
Dim iSh As Worksheet
Dim wsStart&, I&
On Error GoTo ErrHandler
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ThisWorkbook
'открываю книгу со счетами из текущей папки, название книги в ячейке 'B1' листа 'Счета'
Set iWb = Workbooks.Open(.Path & "\" & .Worksheets("Счета").Range("B1").Text)
End With
If Not iWb Is Nothing Then
wsStart = iWb.Worksheets("ТН").Index + 1
For I = iWb.Worksheets.Count To wsStart Step -1
iWb.Worksheets(I).Delete
Next
End If
iWb.Close True
Application.ScreenUpdating = True
MsgBox "Done!"
Exit Sub
ErrHandler:
MsgBox "При выполнении макроса возникла ошибка!", vbCritical
End Sub
Все Ваши предыдущие коды удаляли именно ВСЕ листы, кроме 'ТН'
Скрытый текст
Код
Sub Del_Wsch() 'Удаляет лишние листы в книке счетов
Dim iWb As Workbook
Dim iSh As Worksheet
Dim wsStart&, I&
On Error GoTo ErrHandler
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ThisWorkbook
'открываю книгу со счетами из текущей папки, название книги в ячейке 'B1' листа 'Счета'
Set iWb = Workbooks.Open(.Path & "\" & .Worksheets("Счета").Range("B1").Text)
End With
If Not iWb Is Nothing Then
wsStart = iWb.Worksheets("ТН").Index + 1
For I = wsStart To iWb.Worksheets.Count
iWb.Worksheets(I).Delete
Next
End If
iWb.Close True
Application.ScreenUpdating = True
MsgBox "Done!"
Exit Sub
ErrHandler:
MsgBox "При выполнении макроса возникла ошибка!", vbCritical
End Sub
Согласие есть продукт при полном непротивлении сторон
Замена значений в макросе, Замена значений в макросе
Так Вы не сами их ставьте. Я же писал - НА ПАНЕЛИ СООБЩЕНИЙ Исправьте Ваши сообщения
Согласие есть продукт при полном непротивлении сторон
Поиск в таблице соответствия на наименьшее значение.
Модератор
Сообщений: Регистрация: 10.01.2013
08.01.2026 18:30:28
Немного модифицировал шапку. Название месяца над столбцом 'Gross' и применить выравнивание по выделенному Вариант современными формулами
Согласие есть продукт при полном непротивлении сторон
Влияние макросов на мозг человека
Модератор
Сообщений: Регистрация: 10.01.2013
08.01.2026 17:47:02
Цитата
suricat555 написал: Чувствуете ли вы положительное влияние ***** на другие сферы вашей жизни?
Вместо звездочек подставьте любой вид творческой деятельности и сами ответите на свой вопрос
Согласие есть продукт при полном непротивлении сторон
Запустить макрос из другой книги
Модератор
Сообщений: Регистрация: 10.01.2013
08.01.2026 17:42:01
Так?
Скрытый текст
Макрос для книги 'Основная'
Код
Sub clean_sch() 'Удаляет лишние листы в книке счетов
Dim iWb As Workbook
On Error GoTo ErrHandler
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ThisWorkbook
'открываю книгу со счетами из текущей папки, название книги в ячейке 'B1' листа 'Счета'
Set iWb = Workbooks.Open(.Path & "\" & .Worksheets("Счета").Range("B1").Text)
End With
Application.Run Macro:=iWb.Name & "!ModDeliter.Delet_sch"
iWb.Close True
Application.ScreenUpdating = True
MsgBox "Done!"
Exit Sub
ErrHandler:
MsgBox "При выполнении макроса возникла ошибка!", vbCritical
End Sub
Скрытый текст
Макрос для книги 'Пробник'
Код
Sub Delet_sch()
Dim bo As Boolean
Application.DisplayAlerts = False 'отключаю запрос на удаление
bo = True
Do While bo 'делаю пока = true
With ThisWorkbook
If .Sheets(.Sheets.Count).Name = "ТН" Then bo = False
If bo Then .Sheets(.Sheets.Count).Delete
End With
Loop
Application.DisplayAlerts = True
End Sub
Обратите внимание, что вместо ActiveWorkbook используется ThisWorkbook П.С. А для чего такие сложности? Макрос удаления листов можно держать в книге 'Основная' или в Личной книге макросов, а не в каждой книге, в которй нужно периодически удалять листы. Тем более, что имя 'подопытного' файла Вы берете из 'Основная'
Скрытый текст
Код
Sub clean_sch() 'Удаляет лишние листы в книке счетов
Dim iWb As Workbook
Dim iSh As Worksheet
On Error GoTo ErrHandler
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With ThisWorkbook
'открываю книгу со счетами из текущей папки, название книги в ячейке 'B1' листа 'Счета'
Set iWb = Workbooks.Open(.Path & "\" & .Worksheets("Счета").Range("B1").Text)
End With
If Not iWb Is Nothing Then
For Each iSh In iWb.Worksheets
If iSh.Name <> "ТН" Then iSh.Delete
Next
End If
iWb.Close True
Application.ScreenUpdating = True
MsgBox "Done!"
Exit Sub
ErrHandler:
MsgBox "При выполнении макроса возникла ошибка!", vbCritical
End Sub
Изменено: - 08.01.2026 18:06:01
Согласие есть продукт при полном непротивлении сторон
Создать шаблон договора по условию
Модератор
Сообщений: Регистрация: 10.01.2013
07.01.2026 17:28:44
Цитата
bootuser написал: 1. можно ли сделать то что я хочу
Да, можно, но 'по уму' это делается не так
Цитата
bootuser написал: примерно похожую функцию или макрос
В VBA есть , а так-же
Цитата
bootuser написал: Слияние с word, как я понимаю, не совсем то, что я хочу
Если оставить все так, как Вы хотите, то Слияние - это самое то
Тема перестает быть полезной, все это Вы сами можете найти в интернете
Согласие есть продукт при полном непротивлении сторон
Создать шаблон договора по условию
Модератор
Сообщений: Регистрация: 10.01.2013
07.01.2026 15:19:47
Цитата
bootuser написал: Я такое никогда не делал и потому даже не понимаю откуда начинать мыслить.
Цитата
bootuser написал: думаю, что основная концепция понятна
Да, понятна, но Вы просили:
Цитата
bootuser написал: ...нужна подсказка, а не конечное решение...
Поэтому 'сама...сама'. Решения 'под ключ' , но платно Или начинайте что-то делать сами и задавайте КОНКРЕТНЫЕ вопросы, которые у Вас не получаются. Сейчас Ваша тема больше похожа на ТЗ на разработку. Я Вам уже и подсказал и даже частично решил
Согласие есть продукт при полном непротивлении сторон
Вы бы в файле-примере (Excel) лучше все это показали. Как есть - Как надо Я понял, что зеленые строки это и есть 'оригинальные', а белые - это допы к Договору Но лучше в файле увидеть
Согласие есть продукт при полном непротивлении сторон
Применение InputBox в макросе с применением формулы, Применение InputBox в макросе с применением формулы
Модератор
Сообщений: Регистрация: 10.01.2013
07.01.2026 12:45:48
Дело не моё конечно, но почему бы не формулу вставлять в ячейку, а вычисленное значение? С локализацией формул на VBA всегда не просто Вы бы описали ЗАДАЧУ, а не этот костыльный СПОСОБ, которым пытаетесь ее решить П.С. Про оформление кода в сообщении (тэг <...> на панели сообщений) я Вам уже писал, исправьте Ваши сообщения
Согласие есть продукт при полном непротивлении сторон
Создать шаблон договора по условию
Модератор
Сообщений: Регистрация: 10.01.2013
07.01.2026 02:41:55
Вы просили
Цитата
bootuser написал: ...подсказка, а не конечное решение
Цитата
что бы в конце/начале каждой оригинальной строки была кнопка создания шаблона договора
Кнопка - это лишнее См. вариант в файле Щелкайте мышкой в столбце 'A', в голубых ячейках. Щелчок по зеленой ячейке очищает столбец
Изменено: - 07.01.2026 04:17:03
Согласие есть продукт при полном непротивлении сторон
Создать шаблон договора по условию
Модератор
Сообщений: Регистрация: 10.01.2013
07.01.2026 01:44:07
Я бы делал не так Лучше все данные хранить в ОДНОЙ таблице (хоть и с дублями строк), а не на нескольких одинаковых листах, и отдельный Лист-шаблон договора. Вот шаблон уже заполнять макросом по кнопке
Согласие есть продукт при полном непротивлении сторон
Запустить макрос из другой книги
Модератор
Сообщений: Регистрация: 10.01.2013
07.01.2026 01:37:59
Что и откуда нужно удалить?
Цитата
Фрезератор написал: В той другой книге, в ячейке N1 находится имя книги.
В обоих книгах ячейка 'N1' пустая. Макроса тоже нет В чем подвох?
Согласие есть продукт при полном непротивлении сторон
При изменении направления текста на 45 градусов в эксель меняет направление и граница ячейки, как оставить границы прямыми, При изменении направления текста на 45 градусов в эксель меняет направление и граница ячейки, как оставить границы прямыми
Давайте лучше в файле-примере это покажем. Как есть - Как надо
Согласие есть продукт при полном непротивлении сторон
Ячейка с добавлением данных, но с ограничением видимых строк
Модератор
Сообщений: Регистрация: 10.01.2013
06.01.2026 17:47:32
По сути Вы хотите вертикальную прокрутку в ячейке. Штатными средствами это не возможно.
Цитата
phostart написал: а при необходимости можно было увидеть весь список.
Это можно организовать макросом, через проверку данных, но в ячейке будет отображаться только одна, последняя дата См.файл. В желтой ячейке вводите даты
Согласие есть продукт при полном непротивлении сторон
Разделение текста формулами, Разделение текста формулами
Модератор
Сообщений: Регистрация: 10.01.2013
06.01.2026 17:14:37
Цитата
Olegas написал: Тут, наверное, нужно еще вначале условие ЕСЛИ применить. Но как применить - я не знаю.
Согласие есть продукт при полном непротивлении сторон
Разделение текста формулами, Разделение текста формулами
Модератор
Сообщений: Регистрация: 10.01.2013
06.01.2026 16:50:43
Цитата
Olegas написал: Я просто подумал, что это не обязательно)
Не обязательно, НО... Вы думаете, что кому-то настолько интересна Ваша задача, что он готов создать файл, заполнить его какими-то данными (желательно очень похожими на Ваши), воспроизвести в нем Вашу проблему и решить ее? Серьезно? В 99% вопросах при наличии файла-примера(Excel, Как есть - Как надо) помощь приходит быстрее Опять же версия Excel?
Согласие есть продукт при полном непротивлении сторон
Ошибка открытия файла xls в Excel-2019
Модератор
Сообщений: Регистрация: 10.01.2013
06.01.2026 11:04:57
Создайте новую Тему, но не про проблемное открытие, а про замену УФ макросом. Приложите файл-ПРИМЕР (Excel) и будет Вам хотя-бы примерное решение
Согласие есть продукт при полном непротивлении сторон
USERFORM ход выполнения, Ход выполнения нескольких макросов
'Мультики' Вам не помогут) Нужно оптимизировать макросы - не формулы вставлять макросом в ячейки, а готовый результат вычисленный макросом - вместо перебора ячеек забирать все данные в массивы/словари/коллекции и работать уже с ним, в памяти - оказаться от (возможно с этим сами разберетесь) - и т.д По теме. На каждый лист отдельный 'ползунок' не стоит делать Один - Общий ход выполнения Второй - Выполнение по листу См.файл (не мой, где взял не помню ) Ещё по теме
Изменено: - 06.01.2026 10:13:08
Согласие есть продукт при полном непротивлении сторон
Поиск наименьшей цены по условию, Поиск наименьшей цены по условию
2.6. Один вопрос - одна тема. Не следует в открываемой теме обозначать и задавать сразу несколько вопросов.
Согласие есть продукт при полном непротивлении сторон
Запустить макрос из другой книги
Модератор
Сообщений: Регистрация: 10.01.2013
06.01.2026 03:33:06
Так?
Код
Dim iWb As Workbook
Dim Nam_Fi As String 'имя файла
On Error Resume Next
With ThisWorkbook
'открываю книгу со счетами из текущей папки
Nam_Fi = .Worksheets("Счета").Range("N1") & ".xlsm"
Set iWb = Workbooks.Open(.Path & "\" & Nam_Fi)
End With
If Not iWb Is Nothing Then
Nam_Fi = iWb.Worksheets("Счета").Range("N1") & ".xlsm"
Else
MsgBox "Не удалось открыть книгу! " & Nam_Fi, vbCritical + vbOKOnly
End If
Application.Run Macro:=Nam_fi & "!ModDeliter.Delet_sch"
ActiveWorkbook.Close
ПС Код оформляется соответствующим тэгом (<...>), исправьте сообщение
Согласие есть продукт при полном непротивлении сторон
Поиск наименьшей цены по условию, Поиск наименьшей цены по условию
Модератор
Сообщений: Регистрация: 10.01.2013
05.01.2026 17:52:18
Формула для Вашей версии (массивная)
Код
=МИН(ЕСЛИ($A$2:$A$42=A2;$D$2:$D$42))
Согласие есть продукт при полном непротивлении сторон
Поиск наименьшей цены по условию, Поиск наименьшей цены по условию
Согласие есть продукт при полном непротивлении сторон
Поиск спостоба получить данные о районе из адреса
Модератор
Сообщений: Регистрация: 10.01.2013
04.01.2026 05:57:23
UDF
Скрытый текст
Код
Function МНЦП(текст, таблица As Range) As String
Dim tblArr()
Dim dic1 As Object, dic2 As Object
Dim iKey, iKey1, iTmp, iTmp1
Dim I&
On Error Resume Next
tblArr = таблица.Value
Set dic1 = CreateObject("Scripting.Dictionary")
Set dic2 = CreateObject("Scripting.Dictionary")
For I = LBound(tblArr, 1) To UBound(tblArr, 1)
If tblArr(I, 1) Like "город*" Then
dic1(tblArr(I, 2)) = tblArr(I, 1)
Else
dic2(tblArr(I, 2)) = tblArr(I, 1)
End If
Next
iTmp = Split(Application.Trim(текст), ",")
For Each iKey In iTmp
iTmp1 = Split(Application.Trim(iKey), " ")
For Each iKey1 In iTmp1
If dic1.Exists(iKey1) Then
МНЦП = dic1(iKey1)
Exit Function
ElseIf dic2.Exists(iKey1) Then
МНЦП = dic2(iKey1)
End If
Next
Next
If МНЦП = "" Then МНЦП = "Нет данных"
End Function
В 8й строке намерено допущена ошибка
Согласие есть продукт при полном непротивлении сторон
[ Закрыто] Помощь при написании формулы., Пишу формулу, а она криво работает. Нуже совет как написать ее правильно
Модератор
Сообщений: Регистрация: 10.01.2013
03.01.2026 19:41:03
Ознакомьтесь с (Название темы, файл-пример и т.п.) и создайте новую тему ПС
Цитата
2.1. Название темы должно отражать смысл проблемы.
Т.е. суть Задачи которую Вы решаете, а не просто 'криво работает формула' Ну и про файл-пример. Вы все таки на форуме по Excel, а не по Фотошоп
Согласие есть продукт при полном непротивлении сторон
Ошибка открытия файла xls в Excel-2019
Модератор
Сообщений: Регистрация: 10.01.2013
03.01.2026 19:37:57
Есть макросы обработки событий. Изменение значение ячейки, активация листа, открытие книги, и т.д., даже просто выбор ячейки - это все СОБЫТИЯ на которые можно 'повесить' запуск нужного Вам макроса
Согласие есть продукт при полном непротивлении сторон