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

Страницы: 1 2 3 4 5 След.
Не работает сортировка Bubble Sort.
 
На вскидку можно так, если это пузырьковая сортировка
VBA - построение расписания, Ошибки в текущем коде
 
В добавлении уникальных на Лист2 строка не корректно будет добавлять данные в некоторых случаях
(по примеру первые два уже есть на Листе 2, третье добавиться через 2 пустые строки)
Код
ws2.Cells(lastRow2 + i, 1).Value = uniqueNames.Item(i)

можно заменить например на

Код
ws2.Cells(lastRow2 + 1, 1).Value = uniqueNames.Item(i)
lastRow2 = ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Row

Нужно ещё определиться с подсчётом в каждом часе, а то у вас из-за ">= AND <=" оба хвоста входят, хотя присутствие 6 часов, а на Лист 2 идет 7 часов.

На вскидку добавил работу не с листами, а с массивами (при больших объемах быстрее на лист записать сразу массив, а не записывать в каждую ячейку.
Можно ещё ускорить по желанию, гуру если что поправят :)
Изменено: Александр Макаров - 06.02.2024 00:37:14
Вывести значение переменной VBA, Необходимо вывести значение переменной
 
Можно так
Ускорение поиска в Listbox через textbox
 
Посмотрите, внес изменения в ваш первый файл, может так устроит
доработка макроса, Нужна помощь с макросом, он при выполнении падает в ошибку
 
После копирования данных включите фильтр на данных таблицы
доработка макроса, Нужна помощь с макросом, он при выполнении падает в ошибку
 
У вас в коде идет обращение к листу с именем "Sheet", а в файле с макросом нет такого листа. Переименуйте лист, на который вы вставляете данные, согласно имени в коде макроса.
Парсер на vba, как получить данные с таблицы?
 
Если цены нужны из столбца "Цена за метр2", то замените:
Код
Sheets(1).Cells(1, 1).Value = html.getElementsByClassName("price")(1).innerText
на:
Код
Sheets(1).Cells(1, 1).Value = html.getElementsByClassName("price")(2).innerText
Формула по тексту, не вводя саму формулу в ячейку
 
Замените строки:
Код
If Target.Address <> "$E$1" Then Exit Sub  
If Target <> "День" Then Exit Sub
[d1] = Evaluate("b1-c1")

на:
Код
If Target.Address = "$E$1" and Target = "День" Then [d1] = Evaluate("b1-c1")
Разделение текста в ячейке, умножение числа из ячейки и обратный сбор в 1 ячейку
 
Ещё вариант в R2:
Код
=ЕСЛИ(ИЛИ(ЛЕВСИМВ(Q2;1)=" ";КОДСИМВ(Q2)=160);ПРАВСИМВ(Q2;ДЛСТР(Q2)-1);Q2)
Как наименование договора преобразовать в цифру, Есть наименование договоров, в слове которых есть буква М и N. Необходимо присвоить к наименованию где есть буква М -цифру 1, а где N-присвоить цифру №2
 
Код
=ЕСЛИОШИБКА(ЕСЛИ(ПОИСК("N";B1)>0;"№2";"");"")
Как наименование договора преобразовать в цифру, Есть наименование договоров, в слове которых есть буква М и N. Необходимо присвоить к наименованию где есть буква М -цифру 1, а где N-присвоить цифру №2
 
Скиньте пример, и как должно быть
Как при нажатии на кнопку - закрыть открытую книгу и тут же открыть другую
 
Например так:
Код
Sub Пример1()
Application.DisplayAlerts = False
Set CalledByShape = ActiveSheet.Shapes(Application.Caller)
  S1 = CalledByShape.OLEFormat.Object.Text
  Path_pap = mid(ThisWorkbook.Path,1,instrrev(ThisWorkbook.Path,"\"))
 
Call ReadFileNames(Path_pap, S1)
    
ThisWorkbook.Close Savechanges:=True
     
Application.DisplayAlerts = False
End Sub

Sub ReadFileNames(FolderPath, filenamefind)
    On Error Resume Next
    Set fso = CreateObject("scripting.filesystemobject")
    Set curfold = fso.GetFolder(FolderPath)
    If Not curfold Is Nothing Then
        For Each fil In curfold.Files
            If fil.Name Like "*" & filenamefind & ".xls*" Then
                Workbooks.Open curfold & "\" & fil.Name
                Exit Sub
            End If
        Next
        For Each sfol In curfold.SubFolders
            ReadFileNames sfol.Path, filenamefind
        Next
        Set fil = Nothing: Set curfold = Nothing: Set fso = Nothing:
    End If
End Sub
Как наименование договора преобразовать в цифру, Есть наименование договоров, в слове которых есть буква М и N. Необходимо присвоить к наименованию где есть буква М -цифру 1, а где N-присвоить цифру №2
 
Код
=СЦЕПИТЬ("№";--ЕСЛИОШИБКА(ПОИСК("M";B1)>0;2))
Как при нажатии на кнопку - закрыть открытую книгу и тут же открыть другую
 
Цитата
написал:
А изначально вопрос звучал так - что каждая книга лежит в отдельной папке. но папки носят в точности такие же названия как файлы.
Не было этого ни в начале ни в примере  :)  
Как при нажатии на кнопку - закрыть открытую книгу и тут же открыть другую
 
Код
Sub Пример1()
Application.DisplayAlerts = False
Set CalledByShape = ActiveSheet.Shapes(Application.Caller)
  S1 = CalledByShape.OLEFormat.Object.Text
  Path_pap = mid(ThisWorkbook.Path,1,instrrev(ThisWorkbook.Path,"\"))

Workbooks.Open Path_pap & S1 & "\" & S1 & ".xls"
   
ThisWorkbook.Close Savechanges:=True
    
Application.DisplayAlerts = False
End Sub

На уровень вверх

Изменено: Александр Макаров - 24.08.2022 10:44:04
Как наименование договора преобразовать в цифру, Есть наименование договоров, в слове которых есть буква М и N. Необходимо присвоить к наименованию где есть буква М -цифру 1, а где N-присвоить цифру №2
 
Например так:
Код
=--ЕСЛИОШИБКА(ПОИСК("M";B1)>0;2)

Для ячейки C1, далее протяните по другим ячейкам

Изменено: Александр Макаров - 24.08.2022 10:36:58
Как при нажатии на кнопку - закрыть открытую книгу и тут же открыть другую
 
Цитата
написал:
Относительная ссылка нужна - не привязанная к какому-то диску, а ориентирующаяся строго на адрес той книги из которой макрос запускается.
Так у вас в примере файл 7 344h f.xls находится в одной папке, а файл 111 222.xls в другой. И как открыть файл 111 222.xls из папки файла 7 344h f.xls?
Как при нажатии на кнопку - закрыть открытую книгу и тут же открыть другую
 
Если вы хотите использовать текст с кнопки, которую нажали, то можно получить этот текст в коде:
Код
Dim CalledByShape As Shape
    Set CalledByShape = ActiveSheet.Shapes(Application.Caller)
    MsgBox CalledByShape.OLEFormat.Object.Text
Макрос копирования данных с критериями
 
Конкретно для вашего примера:
Код
Sub Копирование()
AllRecs = Sheets("1").Cells(Sheets("1").Rows.Count, 3).End(xlUp).Row
cAllRecs = Sheets("2").Cells(Sheets("2").Rows.Count, 2).End(xlUp).Row
For CurRec = 1 To AllRecs
For cRecs = 2 To cAllRecs
    If Sheets("1").Cells(CurRec, 3) = Sheets("2").Cells(cRecs, 2) Then 'сверка критериев если Они равны то:
    'в этой строке указанным ячейкам присвоить значения из листа 1
    Sheets("1").Cells(CurRec, 6) = Sheets("2").Cells(cRecs, 3)
    Sheets("1").Cells(CurRec, 7) = Sheets("2").Cells(cRecs, 4)
    End If 'конец условия
Next cRecs 'следующая строка на Листе2
'После  окончания проверки на Листе 2 возвращаемся на Лист 1 за следующей суммой критериев:
Next CurRec
End Sub
Экспорт таблицы из outlook в excel
 
Код
Sub копирование_табл_из_тела_письма()
    otvet = MsgBox("Выполнить проверку корреспонденции?", vbQuestion + vbYesNoCancel, "Запуск процесса...")
    If Not otvet = vbYes Then Exit Sub
    
    Dim objOutlook As Object, objNameSpace As Object, objFoldersAkk As Object
    Dim objFolder As Object, objMail As Object, oItems As Object
    Dim xDoc As Object
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error Resume Next
    Set objOutlook = GetObject(, "Outlook.Application") 'активируем Outlook
    Err.Clear
    If objOutlook Is Nothing Then Set objOutlook = CreateObject("Outlook.Application") 'если не открыт, то открываем Outlook
    ' проверка на наличие установленного Outlook
    If Err.Number <> 0 Then
        Set objOutlook = Nothing
        Application.ScreenUpdating = True
        MsgBox "Внимание! Проверьте правильность установки Outlook!", vbExclamation
        Exit Sub
    End If
    On Error GoTo 0
    Set objNameSpace = objOutlook.GetNamespace("MAPI") ' объявляем переменную для работы с папками Outlook
    ' обновляем почту в Outlook
    For I = 1 To objNameSpace.SyncObjects.Count
        objNameSpace.SyncObjects.Item(I).Start
    Next
    Application.Wait (Now + TimeValue("0:00:05")) ' пауза в выполнении кода для обновления папок Outlook
    ' определяем для обработки папки в аккаунте Outlook
    
    vib_mail_adr = "test@test.ru" ' аккаунт в Outlook
    
    Set objFoldersAkk = objNameSpace.Folders(vib_mail_adr).Folders
    Set objFolder = objNameSpace.Folders(vib_mail_adr).Folders("Входящие") ' папка в аккаунте
    ' просмотр писем в папке
    Set oItems = objFolder.Items: kol_ma_frm = oItems.Count
    For ma = kol_ma_frm To 1 Step -1
        Set objMail = oItems.Item(ma) ' письмо из папки
        znach_subj = Trim(CStr(objMail.Subject)) ' тема письма
        znach_date = Left(objMail.CreationTime, 10) ' дата письма

        find_subj = "Тест" ' значение темы для поиска
        
        If znach_subj = find_subj and znach_date=cstr(cdate(date)) Then
            kon_y = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1
            ActiveSheet.Range("A" & CStr(kon_y)).Select
            Set xDoc = objMail.GetInspector.WordEditor
            For I = 1 To xDoc.Tables.Count
                Set xTable = xDoc.Tables(I)
                xTable.Range.Copy
                ActiveSheet.Paste
                kon_y = kon_y + xTable.Rows.Count + 1
                ActiveSheet.Range("A" & CStr(kon_y)).Select
            Next
        End If
    Next
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
    MsgBox "Проверка корреспонденции выполнена.", vbInformation
End Sub
На основе
Цитата
написал:
Руслан Нестеренко,
вариант
P.S.: добавил проверку на дату письма
Изменено: Александр Макаров - 22.08.2022 14:31:10
[VBA] Как открыть файлы и папки по маскам
 
Замените строку - workbooks.open FName

На строку - workbooks.open ThisWorkbook.Path & "\Папка\Подпапка\" & FName

Т.е. надо добавить путь к найденному файлу
Надстройка DropDownList. баг при вызове списка на дополнительном мониторе
 
С версией Офиса понятно, а Windows какой у Вас?
Вы на пустой книге запустили?
А у нас что Excel 2019 уже пароль с проекта снимает?
Изменено: Александр Макаров - 20.03.2022 12:52:41
Надстройка DropDownList. баг при вызове списка на дополнительном мониторе
 
Если интересно можете посмотреть мой вариант надстройки с формой настроек и дополненный доп. условиями (правда переделка была где-то в 2014 году, на офисе 2016 работает). Вывод на разные мониторы реализован. Так же в настройках можно включить перемещение формы к активной ячейке по двойному клику (запуск формы по CTRL+ENTER, а далее если включено перемещение, то по двойному клику). Если что-то нужно доработать - сделаем.
Find/Delete, Нахождение текста в определённом столбце и удаление строки, где находится искомый текст.
 
Набросал макрос - см. в файле
Условное форматирование TextBox из ячейки на листе, Подтянуть усл.формат. из ячейки в TextBox
 
Посмотрите, тут есть функция для определения цвета ячейки с условным форматированием.
Ошибка при копировании либо создании листа.: Данная команда неприменима для нескольких фрагментов
 
А Вы книгу после сохранения закрывали? У меня получилось так - Сохранить как.. закрываю книгу и открываю заново.
Ошибка при копировании либо создании листа.: Данная команда неприменима для нескольких фрагментов
 
Посмотрите здесь обсуждалось.
книга Эксель разрослась до 28 мб
 
У Вас на листе Апрель много пустых строк. Перенесите данные с листа Апрель на новый лист, а старый удалите.
Размер после будет < 200КБ
Изменено: Александр Макаров - 14.02.2022 10:05:23
Каждые 2 минуты копировать информацию с первого листа на второй лист
 
Посмотрите тут подробно расписано.
Макрос - поиск уникальных позиций и подстановка их в ComboBox
 
Перезалил файл в сообщение #2 , теперь загружаются уникальные.
Изменено: Александр Макаров - 31.01.2022 21:55:32
Страницы: 1 2 3 4 5 След.
Наверх