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

Страницы: 1 2 След.
скролл UserForm через колесико мыши, как прокрутить UserForm с данными с помощью колесика мыши
 
Привет вобще можно както зделать скрол UserForm через колесо мыши
Вывод данных в TextBox по 4-м условиям ComboBox
 
здравствуйте!
Подскажите как дописать код. С другой книги берутся данные, при выборе имени в ComboBox1 Сергей и дате в ComboBox9 28.07.2021 ИР в ComboBox7 10.16.240.51 в ComboBox8 оставалася только запись 16:04:49 Сергей, при нажатии в TextBox15 выводилась инфа Волгодонск, Березовая ул., д.98
Практически так все и работает, но криво. На мой взгляд он фильтрует по ComboBox7/8 адекватно, по остальным не очень.
Это часть кода, сбрасываю без дополнительного файла но с листом данных лист2.
Как переделать код для того чтобы он отфильтровал по нужным данным
Благодарю Вас за труд!
Код
Private Sub ComboBox1_Change()
Call AccelerateBegin
'Windows("1 Chat.xlsb").Visible = True
Application.Workbooks.Open ("d:\-\Profiles\DeskTop\Новая папка\2.xlsb")
Dim i As Long, LastRow As Long, kategorija As String
kategorija = Me.ComboBox1
With Sheets("лист2")
LastRow = .Cells(Rows.Count, 84).End(xlUp).Row
For i = 2 To LastRow
If .Cells(i, 84) = kategorija Then
Me.ComboBox9.AddItem .Cells(i, 86)
End If
Next
End With
'Windows("1 Chat.xlsb").Visible = False
Call AccelerateEnd
End Sub
Private Sub ComboBox9_Change()
Call AccelerateBegin
Application.Workbooks.Open ("d:\-\Profiles\DeskTop\Новая папка\2.xlsb")
'Windows("1 Chat.xlsb").Visible = True
Dim i As Long, LastRow As Long, kategorija As String
Me.ComboBox7.Clear
kategorija = Me.ComboBox9
With Sheets("лист2")
LastRow = .Cells(Rows.Count, 86).End(xlUp).Row
For i = 2 To LastRow
If .Cells(i, 86) = kategorija Then
Me.ComboBox7.AddItem .Cells(i, 87)
End If
Next
End With
'Windows("1 Chat.xlsb").Visible = False
Call AccelerateEnd
End Sub
Private Sub ComboBox7_Change()
Call AccelerateBegin
'Windows("1 Chat.xlsb").Visible = True
Dim i As Long, LastRow As Long, kategorija As String
Me.ComboBox8.Clear
kategorija = Me.ComboBox7
With Sheets("лист2")
LastRow = .Cells(Rows.Count, 87).End(xlUp).Row
For i = 2 To LastRow
If .Cells(i, 87) = kategorija Then
Me.ComboBox8.AddItem .Cells(i, 88)
End If
Next
End With
'Windows("1 Chat.xlsb").Visible = False
End Sub
Private Sub ComboBox8_Change()
Call AccelerateBegin
'Windows("1 Chat.xlsb").Visible = True
Dim i As Integer, a
With Worksheets("лист2")
For i = 2 To .Cells(Rows.Count, 88).End(xlUp).Row
If .Cells(i, 88).Value = ComboBox8.Value Then
If a = "" Then
a = .Cells(i, 89).Value
Else
End If
End If
Next i
End With
TextBox15.Value = a
'Windows("1 Chat.xlsb").Visible = False
Call AccelerateEnd
End Sub

Private Sub CommandButton1_Click()

End Sub

Private Sub CommandButton2_Click()
Call AccelerateBegin
'Windows("2.xlsb").Visible = True
'ActiveWorkbook.Save
'Application.Workbooks("2").Close
'Application.ScreenUpdating = True
Unload Me
End Sub
Изменено: Ян Копко - 29.07.2021 18:15:46
Свод данных в таблицу по времени и дате убывания
 
Здравствуйте!
Подскажите пожалуйста очень нужна Ваша помощь как мне поступить?
В файл Excel Лист 1 собирается информация с 20 паралельних файлов, через ячейка основного файла = ячейке файла 1.2 и тд... Информация собирается в отдельную колонку в одном Листе 1 из всех файлов. У всех файлах расстановка данных на листе одинаковая как в примере, и она обновляется от 1-минуты до 24-часа (динамическая).
Как мне сформировать таблицу чтобы при открытии основного файла весь боем информации с Листа 1 сформировалась на Листе 3 по времени и дате убывания.

Дальше она будет отображаться в TextBox потому надо чтобы она формировалась в момент открытия автоматически.
Я никогда не сталкивался с умной таблицей может она мне в этом помочь?
Может формулами как то можно это сформировать?

По этому нашел не большой макрос.
Вот тут
И сам код
Код
Sub Запуск1()

    Dim shSrc As Worksheet, shRes As Worksheet, arrSrc(), dicDates As Object, dic As Object
    Dim lr As Long, lc As Long, var, r As Long, i As Long, j As Long
    
    Application.ScreenUpdating = False
    
    Set shSrc = ActiveSheet
    Set shRes = Worksheets.Add(After:=shSrc)
    
    lr = shSrc.Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Row
    lc = shSrc.Cells.Find(What:="*", LookIn:=xlFormulas, LookAt:= _
        xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False _
        , SearchFormat:=False).Column
    arrSrc() = shSrc.Range("A1").Resize(lr, lc).Value
    
    Set dicDates = CreateObject("Scripting.Dictionary")
    
    For i = 2 To UBound(arrSrc, 1)
        For j = 3 To UBound(arrSrc, 2)
            If IsEmpty(arrSrc(i, j)) = False Then
                If dicDates.Exists(arrSrc(i, j)) = False Then
                    dicDates.Add arrSrc(i, j), ""
                End If
            End If
        Next
    Next
    
    Set dic = CreateObject("Scripting.Dictionary")
    
    For Each var In dicDates.Keys
        dic.RemoveAll
        For i = 2 To UBound(arrSrc, 1)
            For j = 3 To UBound(arrSrc, 2)
                If arrSrc(i, j) = var Then
                    dic.Add arrSrc(i, 1), ""
                    Exit For
                End If
            Next
        Next
        If dic.Count > 0 Then
            r = r + 1
            shRes.Cells(r, "A").Value = var
            shRes.Cells(r, "B").Resize(1, dic.Count).Value = dic.Keys
        End If
    Next

    shRes.Sort.SortFields.Clear
    shRes.Sort.SortFields.Add Key:=shRes.Columns("A"), SortOn:=xlSortOnValues, Order:=xlAscending
    With shRes.Sort
        .SetRange shRes.Range("A1").CurrentRegion
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
    
    shRes.Columns("A").AutoFit
    
    Application.ScreenUpdating = True
    
End Sub
Изменено: Ян Копко - 22.07.2021 12:47:37
Удалить данные из столбца В, если дата в столбце А меньше текущей
 
Здравствуйте
Не могу решить проблему, нужно чтобы код проверял на листе 2 диапазон А5:А15 и если ячейка содержит дату меньшую чем сегодня - 7 часов, тогда очистить данные в ячейке напротив этой даты колонки В. (улицы)
Данный код очки читает только первую найденную ячейку.

Код
 Sub gfh()
 For Each cell In ActiveWorkbook.Sheets("Лист2").Range("A5:A15")

If cell.Value < Int(Now - 7 / 24) Then
    With Range("B" & cell.Row)
    .Value2 = ""
 End With
Exit Sub
End If
Next
End Sub
Изменено: vikttur - 21.07.2021 11:17:16
Отображение данных в TextBox из диапазона неактивного листа
 
Здравствуйте!
Нужна Ваша помощь.                                                                                                                                                                                                                                        
Отображения диапазона данных СN1:СN1000 с неактивного Листа2 в TextBox3 чтоб он вмещался в TextBox3 и был читабелен, при добавлении данных в диапазон СN1:СN1000 можно было бы скролить в низ TextBox3.
Как отобразить диапазон СN1:СN1000 данных в TextBox3 из не активного Листа2, почему именно TextBox, по причине очень большого текста данных диапазона СN1:СN1000 который будет вмещаться в TextBox3 с помощу кода Me.TextBox3.MultiLine = True. Или подскажите свой вариант пожалуйста.
Код
Me.TextBox3.Value = Sheets("Лист2").Range("СN1:СN1000").Value
Sheets("Лист2").Range("СN1:СN1000").Value = TextBox3.Value
Есть два кода не могу доделать.
Ошибка else without if
 
Здравствуйте!
Если TextBox9 > 24  тогда запуск Марос1_1
Если TextBox11 > 46 тогда запуск Марос1_2

Если все два значения не верни тогда макрос Call MsgBox("все ок", vbOKOnly, "")

Но код не работает выдает ошибку
Подскажите как решить проблему с else without if

Код
Private Sub CommandButton1_Click()

Call Марос1

End Sub
Private Sub Марос1()
If TextBox9 > 24 Then Call Марос1_1
If TextBox11 > 46 Then Call Марос1_2
Else
Call MsgBox("все ок", vbOKOnly, "")
End Sub
Private Sub Марос1_1()
If MsgBox("проблема 1" & vbNewLine & "" & vbNewLine & "" & vbNewLine & "!!!" & vbNewLine & "" & vbNewLine & "" & Chr(34) & "" & Chr(34) & "  " & Chr(34) & "" & Chr(34) & " ", vbYesNo + vbExclamation, "") = vbYes Then
Call MsgBox("Решено1", vbOKOnly + vbInformation, "")
'Call Input_selection3
End If
End Sub
Private Sub Марос1_2()
If MsgBox("проблема 2" & vbNewLine & "" & vbNewLine & "" & vbNewLine & "" & vbNewLine & "" & vbNewLine & "" & Chr(34) & "" & Chr(34) & "  " & Chr(34) & "" & Chr(34) & "   ", vbYesNo + vbExclamation, "") = vbYes Then
Call MsgBox("Решено2", vbOKOnly + vbInformation, "")
'Call Input_selection3
End If
End Sub
Изменено: Ян Копко - 02.07.2021 17:01:54
Запись данных в строку искомого значения
 
Здравствуйте!
Ниже на веден код который ищет числа по диапазону AK1:CC1 с UserForm001  ComboBox7, если их нет тогда MsgBox что их нет, если данные присутствуют в диапазоне  AK1:CC1 тогда надо ввести значение с ComboBox7 в 2-строку под этим числом.

Подскажите ка мне реализовать запис с ComboBox7 во 2-строку под этим числом.
Код
Private Sub Input001_selection2()
 x_text = Me.ComboBox7
    Dim cell As Range
Set cell = Worksheets("1").Range("AK1:CC1").Find(What:=x_text, LookIn:=xlValues, LookAt:=xlWhole)
    If cell Is Nothing Then
            Call MsgBox("Ничего нету" & vbNewLine & "в" & vbNewLine & "в" & vbNewLine & "в", vbOKOnly + vbCritical, "")
    Else

'Вот здесь надо чтобы данные вводились с ComboBox 7 во 2-строку под искомым числом.

Call MsgBox("Заполнил проверяй", vbOKOnly, "")
     
    End If
Unload UserForm001
End Sub
Изменено: Ян Копко - 09.06.2021 07:40:04
Смещение данных вниз после ввода диапазона с UserForm1
 
Здравствуйте!
На Вашем сайте нашел код МатросНаЗебре но не как не могу доделать, чтобы после ввода с UserForm1 диапазона код заработал
Код
'Код-1
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    Dim x As Long
   If Not Intersect(Target, Range("A2:AF2")) Is Nothing Then
        y = Target.Column
        Range(Cells(10, y), Cells(31, y)).Copy Destination:=Cells(11, y)
        Cells(10, y) = Target
    End If
End Sub

Если вводить
Код
 'Код-2
    Worksheets("Лист1").Cells( 2, 2) = Me.TextBox14
    Worksheets("Лист1").Cells( 2, 3) = Me.TextBox5
    Worksheets("Лист1").Cells( 2, 4) = Me.ComboBox4
    Worksheets("Лист1").Cells( 2, 5) = Me.ComboBox1

Код смещения на Листе1 работает, но мне он не подходит по причине продолжительной записи ввод 40+ с UserForm1

Если вводить
Код
 'Код-2
Private Sub CommandButton1_Click()
With Worksheets("Лист1")
.Range("A2:I2") = Array(Me.TextBox14,  Me.TextBox5, Me.ComboBox4, Me.ComboBox1, Me.TextBox3, Me.TextBox1, Me.TextBox2, Me.TextBox4, Me.TextBox12)
End With
End
End Sub

А с этим кодом с  UserForm1 не хочет работать
Подскажите ка изменить код смещение (1-й код), чтобы он заработал с кодом ввода диапазона (3-й код)
Изменено: Ян Копко - 04.06.2021 14:48:53
Поиск и фильтрация всех данных которые совпадают с искомыми значениями и ComboBox1 и ComboBox2
 
Здравствуйте!

Ниже наведен код, который ищет данные в колонке А и выводит от 1 и более строк с совпадениями.

Когда ввожу данные с UserForm1  ComboBox1 фильтр подтягивает все числа там где они сами и там где они присутствуют с другими числами.
Когда ввожу данные с UserForm1  ComboBox1 и  ComboBox2 в одну ячейку фильтрация подтягивает диапазон там где эти числа присутствуют в месте а там где раздельно нет.

Нужно при вводе данных в колонку А2 с UserForm1  ComboBox1 и  ComboBox2 в одну ячейку А2 фильтр отфильтровывал все числа даже те которые присутствуют одни в строках и те которые присутствуют вместе с остальными.

Пример при выборе данных с ComboBox1 числа 12.14.01 и ComboBox2 числа 12.14.02 вводились данные в ячейке А2  *12.14.01** 12.14.02* после чего фильтр отфильтровал строки сданными *12.14.01* и *12.14.01*12.14.02* и *12.14.02*

Есть возможность это решить?

Код
Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, Range("A2:D2")) Is Nothing Then
         Application.EnableEvents = False
      On Error Resume Next
         ActiveSheet.ShowAllData
         Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1:D2")
         Application.EnableEvents = True
         End If
End Sub
Изменено: Ян Копко - 02.06.2021 11:41:17
Отображение уникальных позиций в ComboBox-ах
 
Здравствуйте
На Вашем сайте когда то нашел код (было давно ссылку не помню), немного переделал под свои запроси.
При выборе данных в выпадающем списке ComboBox1 они отфильтровываются для отображение данных в ComboBox2/3, то есть в ComboBox2 и  ComboBox3 можно выбрать один и тот же продукт, как сделать так чтобы при выборе в  ComboBox1 (канцелярские) а в ComboBox2 (бумага) то в  ComboBox3 она уже не отображается, или не возможно было бы   ее вибрать.
Код
Private Sub UserForm_Initialize()
'(отбор уникальных значений) 
Dim AllCells As Range, rCell As Range
Dim NoDupes As New Collection
Dim Item
    
    With Worksheets("справка")
    'Элементы находятся в столбце A
        Set AllCells = .Range("AA2:AA" & .Cells(Rows.Count, 27).End(xlUp).Row)
    End With
    'заполняем коллекцию элементами без повторений
    On Error Resume Next
    For Each rCell In AllCells
        NoDupes.Add rCell.Value, CStr(rCell.Value)
    Next rCell
    On Error GoTo 0

    'Добавление уникальных значений в  ComboBox
    For Each Item In NoDupes
        Me.ComboBox1.AddItem Item
    Next Item
End Sub


Private Sub ComboBox1_Change()
Dim i As Long, LastRow As Long, kategorija As String
    Me.ComboBox2.Clear
        Me.ComboBox3.Clear
    kategorija = Me.ComboBox1
    With Sheets("справка")
        LastRow = .Cells(Rows.Count, 27).End(xlUp).Row
        For i = 2 To LastRow
            If .Cells(i, 27) = kategorija Then
                Me.ComboBox2.AddItem .Cells(i, 28)
                            Me.ComboBox3.AddItem .Cells(i, 28)
            End If
        Next
    End With
End Sub
Отображение данных в TextBox1 UserForm2 из UserForm1 TextBox1.
 
Здравствуйте
Нашёл  Ссилка. Как мне его доработать чтоб например дата в TextBox1 UserForm2 из UserForm1 TextBox1. вводилася при открытии самой формы без лишних нажатий на TextBox1 UserForm2 или другие дополнительно созданные кнопки управления
Код
 TextBox1 = UserForm1.TextBox1.Value
Изменено: Ян Копко - 26.05.2021 17:07:42
Поиск дубликатов в диапазоне
 
Всем привет
На Вашем сайте https://www.planetaexcel.ru/techniques/14/3304/

нашел код
Код
Sub UniqDateQuantity()
Dim LastRow As Long, i As Long, Arr(), Uniq As New Collection, dDate, ArrOut, Rng As Range
    With Sheets("Лист1")
        LastRow = .Cells(Rows.Count, 1).End(xlUp).Row
        Set Rng = Range(.Cells(2, 1), .Cells(LastRow, 1))
        Arr = Rng.Value
    End With
    For i = 1 To UBound(Arr)
        On Error Resume Next
        Uniq.Add Arr(i, 1), CStr(Arr(i, 1))
    Next
    ReDim ArrOut(1 To Uniq.Count, 1 To 2)
    i = 0
    For Each dDate In Uniq
         i = i + 1
         ArrOut(i, 1) = dDate
         ArrOut(i, 2) = Application.WorksheetFunction.CountIf(Rng, dDate)
    Next
    Range("A2").Resize(i, 2).Value = ArrOut
End Sub
Как переделать данный код чтобы он искал на Листе2 ( не на Листе1) и выдавал MsgBox после проверки (нажать на кнопку старт) єсть дубликаты или нет дубликатов, без дополнительных вычислений.
Благодарю за помощь.
Формула подсчета суммы от времени
 
Всем привет

Помогите с формулой.
В диапазоне А2:E61 присутствует информация которую вводит оператор.
В таблице "Свод" в ячейку "Имя" G:10 вводится имя поисковика, в  ячейку"Дата" H:10 вводится дата от которой нужно найти сумму, в  ячейке "Сумма" I:10 должна отображаться сумма Егора с колонки E61 с даты от 21.04.2020 и по 19.05.2021, а ранее суммы не учитывались.

Нужна формула. так ка предполагается таблица Свод будет большая.
Изменено: Ян Копко - 19.05.2021 17:17:23
Скрытая отправка активной рабочей книги электронной почтой
 
Здравствуйте.
При открытии файла нужно скрыто (без подтверждений на отправку) отправить на заданную электронную почту этот же файл.
На сайте нашел два кода https://www.planetaexcel.ru/techniques/3/48/ которые совместил.
Он шлет лист по указаному адресу и без подтверждений но лист приходит пустой без файла. Что нужно прописать для прикрепление к листу файла который открыт.
Код
Sub SendMail()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim cell As Range
    Application.ScreenUpdating = False
    Set OutApp = CreateObject("Outlook.Application")   'запускаем Outlook в скрытом режиме
    OutApp.Session.Logon
    On Error GoTo cleanup  'если не запустился - выходим
    Set OutMail = OutApp.CreateItem(0)   'создаем новое сообщение
    On Error Resume Next
    'заполняем поля сообщения
    With OutMail
        .To = "3333333333@gmail.com" 'Кому
        .Subject = "Курс валют"   'Тема письма
        'команду Send можно заменить на Display, чтобы посмотреть сообщение перед отправкой
        .Send
    End With
    On Error GoTo 0
    Set OutMail = Nothing

cleanup:
    Set OutApp = Nothing
    Application.ScreenUpdating = True
End Sub
Контроль ввода ФИО
 
Подскажите как можно контролировать ввод ФИО в ячейку чтобы вводились данные как в примере Иванов И.И
1-я Большая буква
2-я Пробел после фамилии
3-я Имя большая буква
4-я Точка
5-я Большая буква Отчество
А не иванов и.и, ИвановИИ...
Создание папки с датой и сохранения Бэкап файла в ней
 
Здравствуйте!

Нужен код для сохранение бэкап файла с именем файла и датой сегодня в папку которая содержит дату сегодня если она єсть, если такой папки нету то создать папку и сохранить файл.
Нашел вот такой код но он сохраняет файл в папку с датой если даная папка єсть, но если ее нету то не сохраняет.
Код
Sub filesave()
fname = "C:\Users\Veron\Desktop\Новая папка\" & Format(Now(), "dd.mm.yyyy") & "\SOX recon " & Format(Now(), "dd.mm.yyyy") & ".xlsx"
MsgBox fname
ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlOpenXMLWorkbook
End Sub

Если 1-е искомое значение не найдено тогда искать 2-е
 
Здравствуйте.
В диапазоне А имеются два числа 4 и 10, эти значения изменяются формулой при вводе числа 1 в диапазон С.
Код поиска значений 10 и 4 ищет первое ближайшее число выводит мсбокс и останавливает поиск

Подскажите как изменить код чтобы макрос в первую очередь искал ближайшее значение 4 в диапазоне и если оно эстет то 1-н раз запускал мсбокс и останавливал поиск, но если число 4 не найдено, только тогда искать ближайшее число 10 в диапазоне и 1-н раз запускал мсбокс и останавливал поиск.
Благодарю. за помощь
Код
Sub works()
    For Each cell In Range("A1:A1164")
        If cell.Value = "4" Then
           MsgBox "4-Попалась", 64, ""
            Exit For
        End If
        If cell.Value = "10" Then
            MsgBox "В -10ку", 64, ""
            Exit For
        End If
    Next
End Sub
Отображение MsgBox при смене чисел в ячейке
 
Здравствуйте.
Нужна Ваша помощь.
При изменении даты в ячейке диапазона АН изменяются отображения чисел в ячейке диапазона AJ (формула) от 0 до 3, нужно отобразить MsgBox  при условии если в ячейке диапазона AJ отобразится число только 2.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    For Each cell In Worksheets("Лист1").Range("AJ3:AJ31163")
        If cell.Value2 = 2 Then
            Call MsgBox("1", vbOKOnly, "")
        End If
    Next cell
End Sub

Столкнулся с проблемой, отображение MsgBox при вводе в любую ячейку данных и при любом числе.
Изменено: Ян Копко - 08.03.2021 22:20:18
Смещение даты начала нового дня.
 
Здравствуйте.
Моя цель такова. Ввожу числа в ячейку А2:А100 и происходит вставка текущей даты в ячейку В2:В100. Как мне здвинуть начало новой даты на 3 часа на зад. Чтобы 05.03.2021 числа в 2:59:00 дата вводилась 04.03.2021 а 05.03.2021 числа в 3:00:00 уже вводилась 05.03.2021.
Благодарю.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    
    For Each cell In Target   'проходим по всем измененным ячейкам
       If Not Intersect(cell, Range("A2:A100")) Is Nothing Then  'если изменененная ячейка попадает в диапазон A2:A100
            With cell.Offset(0, 1)         'вводим в соседнюю справа ячейку дату
               .Value = Date
            End With
       End If
    Next cell
End Sub

Информация https://www.planetaexcel.ru/techniques/6/44/
Изменено: Ян Копко - 05.03.2021 12:06:52
Вставка данных в весь диапазон при активном фильтре
 
Вечер добрый!
Приведен код который ищет даты в диапазоне J из диапазона дат AD AE, благодарю Jack Famous он помог кодом поиска даты.
После отсутствия даты в диапазоне J вводит данные с диапазона J  в L  а также с диапазона M в D. Все исправно работает если фильтр снят, но если активировать фильтр данные вставляются не в соответствии с диапазонами а как попало и куда попало.
Хотелось чтобы не снимая фильтр данные вводились в весь диапазон адекватно как и при снятом фильтре. Как то можно это исправить?
Благодарю.


Код
Sub Search_date()

Dim rng As Range, ar As Range
Dim x, arr, arrOut(), i&
Dim dFrom#, dTo#

   AccelerateBegin
     Sheets("1").Unprotect Password:="1"

Set rng = Intersect(Range("AD:AD"), ActiveSheet.UsedRange).SpecialCells(xlCellTypeConstants, xlNumbers)
If rng Is Nothing Then Exit Sub

     Sheets("1").Protect Password:="1"
   AccelerateEnd

dFrom = [AD2].Value2
dTo = [AE2].Value2
ReDim arrOut(rng.Count - 1): i = -1

    For Each ar In rng.Areas
        arr = ar.Value2
        If Not IsArray(arr) Then arr = Array(arr)
        
        For Each x In arr
            x = CDbl(x)
            If x > dFrom And x < dTo Then i = i + 1: arrOut(i) = Format(x, "DD/MM/YYYY hh:mm:ss")
        Next x
    Next ar

If i = -1 Then

 AccelerateBegin
     
     Sheets("1").Unprotect Password:="1"
      
        Sheets("1").Range("L3:L1164").Value = Sheets("1").Range("J3:J1164").Value
    
        Sheets("1").Range("D3:D1164").Value = Sheets("1").Range("M3:M1164").Value
       Sheets("1").Protect Password:="1"
    
    AccelerateEnd
  
End If
End Sub
Изменено: Ян Копко - 28.02.2021 22:09:29
Сравнить даты между двумя диапазонами дат
 
Здравствуйте.
Ниже описан макрос который ищет по всему листу только одну дату и выдает msgbox "Нашел" или "Не нашел"
У мена проблема немного другого характера.
Нужно найти только на Листу1 диапазона J даты которые находятся между датами ячейки с О по Р и вывести msgbox
Код
Sub Datesearch()
d = Date
Set c = Cells.Find(d, LookIn:=xlFormulas, LookAt:=xlWhole)
If Not c Is Nothing Then
  MsgBox "Нашел"
Else
  MsgBox "Не нашел"
End If
End Sub


Подскажите куда смотреть.
Зарание благодарю!!!
Изменено: Ян Копко - 26.02.2021 17:44:21
Ввод данных в диапазон В при условии совпадения даты с диапазоном А
 
Здравствуйте!
Вопрос такого характера.
Дата вводится в диапазон А1:А100 диспетчером, в произвольной форме. Ежедневно надо сравнить дату с диапазона А1:А100 и сегодня. после чего надо ввести данные с ячейки "С1", в диапазон В1:В100, напротив даты сегодня, лист стоит под паролем,
Ниже пример часть кода который был частично найден на форумах частично нет.
Реальный размер диапазона А +- 4500

Код
Sub wqw()
Dim iLastRow As Long
    iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
     If Application.WorksheetFunction.CountIf(Range(Cells(10, 1), Cells(iLastRow, 1)), Date) = 0 Then
                With cell.Offset(0, 1)         'вводим в соседнюю справа ячейку дату
               .Value2 = Range("C1").Value2
               .EntireColumn.AutoFit  'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
            End With
   End If
      
End Sub
Изменено: Ян Копко - 25.02.2021 16:39:14
Ввод даты, если диапазон содержит текст
 
Здравствуйте.
Ниже часть кода который вводит дату в соседнею ячейку (30) при изменении диапазона AE2:AE1100 даже если там не содержится текст а просто наступил мышкой на ячейку ни чего не ввел.
Как сделать так  чтобы ввод даты осуществлялся при условии если ячейка не пустая (содержит текст).

Код
  For Each cell In Target   
         If Not Intersect(cell, Range("AE2:AE1100")) Is Nothing Then     
            With cell.Offset(0, -1)         
               .Value = Date
            End With
       End If
    
    Next cell
Изменено: Ян Копко - 19.02.2021 22:34:11
Отображение индикатора текущего состояния макроса Worksheet_Change
 
Здравствуйте
Нужна помощь в реализации проекта в отображении индикатора текущего состояния и Worksheet_Change события.
Как то можна запустить отображение индикатора текущего состояния с Worksheet_Change в модуле листа 1 (пример 2 в примере 1)
Или нужно делать перенос даного макроса (пример 1 Worksheet_Change ) в module, class module оттуда запустить отображения процедуры? тогда как обратится с листа1 в module, class module.

Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:I2")) Is Nothing Then
        On Error Resume Next
        ActiveSheet.ShowAllData
        Range("A7").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1").CurrentRegion
    Exit Sub
    End If
Dim NewCellValue$, OldComment$
Dim cell As Range
    'если ячейка не в отслеживаемом диапазоне, то выходим
    If Intersect(Target, Range("K8:K100")) Is Nothing Then Exit Sub
    'перебираем все ячейки в измененной области
    For Each cell In Intersect(Target, Range("K8:K100"))
        If IsEmpty(cell) Then
         Else
            NewCellValue = cell.Formula     'или ее содержимое
        End If
        On Error Resume Next
        With cell
        End With
        Row_ = cell.Row ' запоминаем текущую ячейку в даной строке
        Col_ = 14   ' устанавливаем крайний левый столбец
        Do While "" <> Sheets("Лист1").Cells(Row_, Col_).Text
                 Col_ = Col_ + 1
        Loop
        ' записываем в пустой столбец на странице Лист1
        Sheets("Лист1").Cells(Row_, Col_) = Format(NewCellValue, "DD.MM.YY")
    Next cell
End Sub

Обращение к UserForm через CommandButton
 
Здравствуйте! После вызова UserForm3 и нажатии на соответствующею кнопку в нем CommandButton8, нужно обратится к UserForm4 вызвать соответствующею форму. Это возможно? или как это возможно? Благодарю
Код
Private Sub CommandButton8_Click()
          Application.EnableCancelKey = xlDisabled 
          Application.DisplayAlerts = False:      
          Application.Visible = False           
          Unload Me
         Else
      UserForm4.Show
End Sub
Изменено: Ян Копко - 07.02.2021 19:29:51
VBA код для снятия и установки пароля защиты книги
 
Здравствуйте!
Нашел вот такой макрос, у Николая Павлова но он не работает если стоит защита книги от удаление листов итд.... Что надо прописать для сего действия
Код
Private Sub Workbook_Open()
    If Environ("USERNAME") <> "Nikolay" Then    'если пользователя не зовут Nikolay
        Worksheets("Лист1").Visible = False     'скрываем Лист1
        Worksheets(3).Visible = xlVeryHidden    'делаем 3-й лист суперскрытым
    Else
        For i = 1 To Worksheets.Count           'в противном случае
            Worksheets(i).Visible = True        'проходим в цикле по всем листам
        Next i                                  'и делаем их видимыми
    End If
End Sub
Выделение цветом выпадающего списка в UserForm2
 
Здравствуйте!
Как то можно выделить цветом выпадающий список в UserForm2 → начало с 1 по 5.
VBA фильтр не фильтрует все данные
 
Здравствуйте!
Неоднократно копировал макрос VBA (фильтр) в другие файлы с изменением ввода даных и все работало но не сегодня. Скопировал в талицу и он не работает, а именно:
1) При вводе данных в ячейку     А2   ОПТ/Розница - не фильтрует
2) При вводе данних в ячейку      C2   Клиент            - неверно фильтрует (скрывает строки с 4 по 13)
3) При вводе данних в ячейку      D2   Менеджер       -неверно фильтрует  (скрывает строки с 4 по 13)
4) При внесении данных в колонки В4-В59 и подальшей фильтрации в В2 - не фильтрует
Скажите куда смотреть.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:E2")) Is Nothing Then
        On Error Resume Next
        ActiveSheet.ShowAllData
        Range("A3").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1").CurrentRegion
     Exit Sub
   End If
End Sub
Удаление файла при условии его открытия вне заданной папки
 
Всех с новым годом!
Проблема такова. Самоудаления файла при открытии эго вне заданной папке (C:\Users\Veron\Desktop\Новая папка). Что нужно прописать.
Код
Private Sub Workbook_Open()
url_request = C:\Users\Veron\Desktop\Новая папка
  End If
    Application.DisplayAlerts = False
    ThisWorkbook.ChangeFileAccess xlReadOnly
    Kill ThisWorkbook.FullName
    Application.DisplayAlerts = True
    ThisWorkbook.Close 0
  End If
  End Sub
Числовое упорядочение дат с рандомными записями таблицы А в таблице Б
 
Здравствуйте! Присутствует таблица А с датой в строке В4 по N16 в случайном порядке. Как можно упорядочить дату чтобы с колонки В4-В16 начинались с самой новой даты (последняя) и заканчивались самой старой в N4-N16.
Страницы: 1 2 След.
Наверх