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

Страницы: 1
Разобраться с работой макроса, доработать макрос.
 
Работа выполнена в полном объеме, с комментариями и пояснениями, как и было запрошено.
Большое спасибо.
Разобраться с работой макроса, доработать макрос.
 
Добрый день
В книге есть несколько макросов для сортировки значений на листе по порядковому номеру в столбце. (в столбце D - порядковый номер, столбцы E - H сортируются при изменении цифры в столбце D). Макросы написаны не мной. Необходима помощь, чтобы разобраться с порядком их работы, применить для решения похожих задач на других листах, по возможности усовершенствовать.
Готов предварительно показать файлы по видео в телеграмме.
Бюджет 1000 р.
Как вывести все результаты проверки макросом в одну ячейку
 
Большое спасибо всем.
artemkau8, Ваш вариант работает. За полчаса до Вашего ответа додумался до своего)), похожего, м.б. более корявого, во все же работающего варианта:
Код
Sub Proverka()
Dim wshtA, WshtB As Worksheet
Dim lrowA, lrowB As Long
Set wshtA = ThisWorkbook.Worksheets("входящие")
Set WshtB = ThisWorkbook.Worksheets("итог")
lrowA = wshtA.Cells(Rows.Count, 1).End(xlUp).Row
lrowB = WshtB.Cells(Rows.Count, 1).End(xlUp).Row - 1
For k = 6 To lrowB
    For i = 4 To lrowA
        If WshtB.Cells(k, 4) >= wshtA.Cells(i,8 And WshtB.Cells(k, 4) <= wshtA.Cells(i, 12) Then
        WshtB.Cells(k, 11) = "Истина": If WshtB.Cells(k, 12) = "" Then WshtB.Cells(k, 12) = i Else WshtB.Cells(k, 12) = WshtB.Cells(k, 12).Value & " " & ";" & " " & i        
    End If
    Next i
If WshtB.Cells(k, 11) = "" Then WshtB.Cells(k, 11) = "нет совпадений"
Next k
End Sub
Еще раз спасибо.
Изменено: Дмитрий - 16.09.2022 13:33:16
Как вывести все результаты проверки макросом в одну ячейку
 
Здравствуйте, уважаемые форумчане.

Есть макрос, который сравнивает три столбца на двух листах по двум условиям, и, в качестве результата записывает номер строки в заданном столбце (12).
Иногда получается так, что ответов может быть несколько, но, как я понимаю, макрос перебирает все доступные варианты... и, по результатам обработки, я вижу только последнее значение, удовлетворяющее условиям проверки...

Подскажите пожалуйста, каким образом можно макрос доработать, чтобы в заданном столбце (12) получать все варианты (номера строк, удовлетворяющие условиям проверки через разделитель).

Заранее благодарю.
Код
Sub Proverka()
Dim wshtA, WshtB As Worksheet
Dim lrowA, lrowB As Long
Set wshtA = ThisWorkbook.Worksheets("входящие")
Set WshtB = ThisWorkbook.Worksheets("итог")
lrowA = wshtA.Cells(Rows.Count, 1).End(xlUp).Row
lrowB = WshtB.Cells(Rows.Count, 1).End(xlUp).Row - 1
For k = 6 To lrowB
    For i = 4 To lrowA
        If WshtB.Cells(k, 4) >= wshtA.Cells(i, 8) And WshtB.Cells(k, 4) <= wshtA.Cells(i, 12) Then
       WshtB.Cells(k, 11) = "Истина": WshtB.Cells(k, 12) = i        
    End If
    Next i
If WshtB.Cells(k, 11) = "" Then WshtB.Cells(k, 11) = "нет совпадений"
Next k
End Sub
Проверка наличия одноименного файла в папке, Перед созданием файла макросом, проверить нет ли уже в конечной папке файла с указанным названием
 
Игорь, большое спасибо, уже не в первый раз меня выручаете🤝
Подскажите, я правильно прочитал, что знак $ объявляет строковый/текстовый формат переменной fn (= As String)?

Код немного дополнил, чтобы все-таки оставить MSGBox (для моей задачи нужно, вдруг кому-то еще пригодится), вся фишка для того, чтобы перейти от MSGBox к Exit Sub, как я понял, - в двоеточии в конце MSGBOX'а.
Проверку поставил в самое начало кода, чтобы проверка происходила сразу, до основной обработки данных (в основной части у меня сначала создается доп. лист, где происходят вычисления - если оставить проверку в конце, то даже при завершении макроса, эксель будет переходить на созданный лист...)
Код
Sub

 Dim fn$    
fn = "\\Users\Общая\Еженедельное совещание\Выгрузки\Карта" & "_" & ThisWorkbook.Sheets("Сводная").Range("C1") & "_" & ThisWorkbook.Sheets("Вес").Range("F4") & ".xlsx"
    If Dir(fn) <> "" Then MsgBox "Этот файл уже выгружался сегодня, посмотри в папке ""Выгрузки""", vbInformation, "Info": Exit Sub

... (основной макрос)

 New_Wb.SaveAs fn  
New_Wb.Close
End Sub
Проверка наличия одноименного файла в папке, Перед созданием файла макросом, проверить нет ли уже в конечной папке файла с указанным названием
 
Здравствуйте уважаемые форумчане.
Помогите пожалуйста дописать макрос.

По результатам обработки, макрос создает файл в конечной папке "Выгрузки" следующим образом:
Код
Sub Создатькнигу ()
...

New_Wb.SaveAs ("\\Users\Общая\Еженедельное совещание\Выгрузки\Карта" & "_" & ThisWorkbook.Sheets("Сводная").Range("C1") & "_" & ThisWorkbook.Sheets("Вес").Range("F4") & ".xlsx") 
New_Wb.Close

End Sub

Нужно, чтобы перед тем, как создать  и сохранить файл в указанной папке макрос сначала проверял нет ли там уже такого файла, и если есть, то завершал макрос с MSGBox "Такой файл уже есть"

Заранее благодарю всех, кто сможет откликнуться.
Прерывание Private Sub ... Before Close по условию
 
Здравствуйте уважаемые форумчане.
Помогите пожалуйста решить задачу.

Есть макрос:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim xx
  xx = MsgBox("...?", vbYesNo, vbDefaultButton2)
  If xx = 6 Then: MsgBox "Молодец!"
If xx = 7 Then Exit Sub

Sheets("1").Cells.Clear
Sheets("2").Cells.Clear
Sheets("3").Cells.Clear
Dim ar, sh
ar = Array("1", "2", "3", "4", "Инструкция", "Справочная информация", "Sheet1")
Application.DisplayAlerts = False
On Error Resume Next
For Each sh In Worksheets
 If WorksheetFunction.Match(sh.Name, ar, 0) = 0 Then sh.Delete
Next Sh
End Sub

Мне нужно, чтобы при нажатии на кнопку "Нет" макрос завершал бы свою работу. Сейчас он продолжает идти по шагам дальше - очищает листы, удаляет ненужные, не реагирует на Exit Sub ((
Возможно такое реализовать для Private Sub?

Заранее благодарю всех кто сможет откликнуться.
Как записать формулу в макросе используя свойство Cells
 
Большое всем спасибо.

Игорь, как написал раньше - самый первый Ваш ответ мне очень помог и исправил мой файл.

Насчет обходного пути с написанием функции - буду пробовать.

Касательно переводчика - для меня это пока высокая материя, честно - вообще не понимаю код и как он работает, нужно разбираться...

Еще раз БОЛЬШОЕ спасибо!
Как записать формулу в макросе используя свойство Cells
 
Тем не менее вопрос актуален - в макросах вообще возможно написание формул через Cells?
Как записать формулу в макросе используя свойство Cells
 
Игорь, к сожалению не получается((
Нельзя ли RC1 (и другие) представить в виде Cells(1;1)?

Чтобы получить в итоге что-то типо: "=IFERROR(IF((Cells(1,1))*(Cells(1,2))*(Cells(1,lcol))=0,0,1),0)" ?


Извиняюсь, все работает - неправильно подтянул ссылку на ячейки в итоговом файл.
Игорь, большое спасибо.
Изменено: Дмитрий - 28.06.2022 13:35:55 (Неправильно вставил ссылку)
Как записать формулу в макросе используя свойство Cells
 
Здравствуйте уважаемые форумчане.
Подскажите пожалуйста, как можно преобразовать вот такую формулу:
ActiveCell.FormulaR1C1 = "=IFERROR(IF(RC1*RC2*RC171=0,0,1),0)
с использованием обозначения ячеек свойством Cells?

Результат представлял себе примерно как-то так, но только, чтобы работало)):

ActiveCell.Formula = "=IFERROR(IF((Cells(1,1))*(Cells(1,2))*(Cells(1,lcol))=0,0,1),0)"

Запрос продиктован тем, что последний множитель формулы будет находится в последнем столбце таблицы, которая будет ежедневно меняться.

*lcol = Cells(1, Columns.Count).End(xlToLeft).Column

Заранее благодарю.
Страницы: 1
Наверх