Добрый день Нужна ВАША помощь в написании кода, в таблице присутствует дата, имя пользователя (они формируются автоматически при открытии файла) и числа (это и есть результат выпадающего списка) . Цель работы в том чтобы как толькоЯрославоткроет EXCEL документ при определенной дате на ПК например 08.07.2021, в ComboBox3 был сформирован список из соответствующих чисел 808, 355, 604. если откроет EXCEL Максим в 08.07.2021 то в ComboBox3 был сформирован список из 642, 340, 480, 696, 480. Ниже наведен код который формирует данные с одного поискового значения и ComboBox. Подскажите как переделать код. благодарю за поддержку
Код
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
kategorija = Me.ComboBox1
With Sheets("справка")
LastRow = .Cells(Rows.Count, 27).End(xlUp).Row
For i = 2 To LastRow
If .Cells(i, 27) = kategorija Then
End If
Next
End With
End Sub
Здравствуйте. Нужна помощь в доработке кода. Ниже приведен код который позволяетввести двухзначные значенияот 26,1 до 75,9, другие двухзначные числа не вводятся в TextBox, но если ввести однозначныечисла от 0 до 9они вводятся Как заблокировать ввод однозначных чисел от 0 до 9 .
Код
Private Sub TextBox1_Change()
If TextBox1 = "" Then Exit Sub
T = TextBox1
If Len(TextBox1) > 1 Then: If T > 75.9 Or T < 25.9 Then TextBox1 = "": MsgBox "неверный ввод" & vbNewLine & "Значения от 26,1 до 75,9, " & vbNewLine & "" & vbNewLine & "Пример 42,1", vbOKOnly + vbExclamation, ""
End Sub
Всем привет. Ниже приведен код который сдвигает вправо данные при условии записи в E3:E26.
как переделать код чтобы он сдвигает данные вниз при вводе данных в строку E30:AF30.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("E3:E26")) Is Nothing Then
x = Target.Row
Range(Cells(x, 10), Cells(x, 31)).Copy Destination:=Cells(x, 11)
Cells(x, 10) = Target
End If
End Sub
Подскажите возможно ли ввести данные с ComboBox1,ComboBox2,TextBox1. в одну ячейку на Лист2 G2. или все таки ввести по отдельности а потом формулой сцепить.
При выборепродукта (Манго...итд) в UserForm, ввожу килограммы в TextBox1/2/3 (Приход/Отгрузку/Склад), как реализовать запись данных, в последнюю пустую ячейку выбранного продукта (Манго...итд)на Листе1 Склад, Листе2 Приход/Отгрузку.
Планирую реализовать сбор данных в UserForm с Листа1 колонки (продукт А2 по А20) которые достигли 100%колонки (% В2 по В20), после вводить данные отгрузки в % соотношении в ComboBox напротив каждого продукта (название в Label) в UserForm и оно будет вводиться в колонку (% отгруз.. С2 по С20).
Нужна Ваша помощь в реализации.
То есть чтобы при вызове UserForm формировался отчет с 1-го или более продуктов который достиг 100%в самом UserForm, а который не достиг чтоб от там не фигурировал. Исходный файл слишком большой это лишь часть. Поиски не дали адекватного результату сам не знаю насколько это возможно.
Пожалуйста подскажи макрос который... При вводе данных в ячейку с А1 по А100 подсчитывает символы в водимой ячейке и если данная ячейка имеет до 50 символов то выводить мс бокс до 50 если больше 50-ти то мс бокс боле 50-ти.
1) Если в диапазоне А1:А16 отсутствуют слова "Москва" и "Санкт-Петербург" тогда ничего 2) Если в диапазоне А1:А16 присутствует "Москва" и "Санкт-Петербург" запуск макроса 1 MsgBox. Только 1- раз 3) Если в диапазоне А1:А16 присутствует минимум 1 раз слово "Санкт-Петербург" запуск макроса 1 MsgBox. Только 1- раз 4) Если в диапазоне А1:А16 присутствует минимум 1 раз слово "Москва" запуск макроса 2 MsgBox. Только 1- раз Ниже на веден код который решает 1-3-4 условия как прописать на решениэ 2-рого условия. Причем макрос 2-го и 3-го условия будт однаковый.
Код
Sub Macros5()
Sheets("Лист1").Select
Set fcell = Columns("A:A").Find("Санкт-Петербург")
If Not fcell Is Nothing Then
MsgBox "Санкт-Петербург Нашел в строке: " + CStr(fcell.Row)
Set fcell = Columns("A:A").Find("Москва")
If Not fcell Is Nothing Then
MsgBox "Москва Нашел в строке: " + CStr(fcell.Row)
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:J2")) Is Nothing Then
UserForm1.Show 0
UserForm1.Repaint
On Error Resume Next
ActiveSheet.ShowAllData
Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1:J2")
End If
Unload UserForm1
End Sub
При вводе данных в диапазон В2;J2 срабатываетавто фильтр и запускается UserForm1 но запустить GIF файл не могу, при одновременной работе макроса фильтра. Подскажите где я ошибся. Огромную благодарность приношу всем трудящимся.) Из за ограничения по размеру не могу сбросить файл который буде запускать UserForm на длительное время.
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 = Now
.EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке
End With
End If
Next cell
End Sub
Подскажите что нужно добавить чтоб при вводе только имен (тексту) в ячейку диапазона A2:A100 дат сегодня сравнивался с датой ячейки диапазона B2:B100, и заменяла дату ячейки диапазона B2:B100 при условии если в ячейке диапазона B2:B100 она меньше чем сегодня.
Ниже наведен макрос который блокирующий ввод данных в ячейку А5:А100 при условии если ввели не число а дату или текст. Как переделать чтоб множа было вводить только дату (формат 17.02.2021) при условии если она сегодня, а день начинаетсяс 9:00. И не плохо было бы если при удалении даты (очистка) ячейка не очищалась, то есть ячейка постоянно должна быть заполнена датой. Понимаю что много на писал, сбросьте информацию по возможности. Благодарю
Код
Private Sub Worksheet_Change(ByVal Target As Range)
Dim vRange As Range
Set vRange = Range("A5:A100")
Set Target = Intersect(Target, vRange)
If Target Is Nothing Then Exit Sub
For Each vRange In Target
If Not IsNumeric(vRange) Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
MsgBox "Ввод отменён. Недопустимое значение", vbCritical
Exit Sub
End If
Next
End Sub
Здравствуйте. Имею файл создания папок и документов но не знаю как оттуда вытащить макрос бегущей строки и процента загрузки в числовом формате, + он некорректно работаєт. но мне нужно только строка и % загрузки в таблице. Подскажите пожалуйста где они находятся. Благодарю!
Private Sub Workbook_Open()
If ActiveWorkbook.Path <> "C:\Users\Badim\Desktop\Новая папка" Then
Application.DisplayAlerts = False
ThisWorkbook.ChangeFileAccess xlReadOnly
Kill ThisWorkbook.FullName
Application.DisplayAlerts = True
ThisWorkbook.Close 0
End If
End Sub
Но у меня осуществляться доступ к файлу с несколько локальных дисков
Что нужно добавить в код чтобы с 1 по 10 путь не удаляло файл. Например
1 путь "C:\Users\Badim\Desktop\Новая папка" 2 путь "Z:\Users\Badim\Desktop\Новая папка"... 10 путь "D:\Users\Badim\Desktop\Новая папка" Пробовал ставить звездочки, дублировать типа.
Код
If ActiveWorkbook.Path <> "C:\Users\Badim\Desktop\Новая папка" Then
If ActiveWorkbook.Path <> "Z:\Users\Badim\Desktop\Новая папка" Then
If ActiveWorkbook.Path <> "D:\Users\Badim\Desktop\Новая папка" Then
Здравствуйте. Нужна помощь, при автоматическом объединении даты и ФИО в колонку 35 чтобы заливка ячейки колонки 35 выполнялся цветом, при условии если день сегодня, если же день вчера то без цвета.
Здравствуйте! Благодарю сайт, и небезразличных людей которые помогли мне в создании этого файл на Вашем сайте. Нужна Ваша помощь. В прикрепленном файле присутствует макрос который при изменении данных ТОЛЬКО В ДВУХ ЯЧЕЙКАХ AD-AE, (даты и ФИО) объединяет две ячейки AD-AE, и записывает эти данные в ячейку с AI...по AL. При нажатии на кнопку (Нажми) вызывается Toolbox из выпадающим списком и в тоже время удаляются все данные с столбца AE для ввода нового ФИО, а также крайний столбец AL чтобы данные дальше не вводились. Как оно сейчас работает После смены даты в ячейке AD8 (06.12.2020) и ввода ФИО в AE8 (Иванов) эти данные объединяются и вводятся в ячейку AI8 (07.12.2020 Иванов) . Если же в ячейке AI8 уже прописана дата и ФИО (06.20.2020 Иванов) то после изменении даты в AD8 на (07.20.2020) и ввода того же ФИО AE8 (Иванов) данные уже не будет вводится. Оно почему то реагирует на не измененную ФИО ячейку хотя она была пустая (после нажатия на кнопкуНажми). Стоит изменить ячейкудаты AD8 (06.20.2020) на (07.20.2020) и ФИО AE8 (Иванов) на (Петров) ячейка AI8 среагирует и внесет изменение (07.20.2020 Петров) с сдвигом данных. Моя преследуемая цель такова. Чтобы при смене данных в двух ячейках даты AD8 и ввода любого ФИО (одинакового - неодинакового)в AE8, изменялись данные на новые в столбце АІ8 и они сдвигались по AL, дальше ввод данных прекращался но сдвиг происходил. Благодарю все кто хотя бы прочитал данный пост, и заранее извиняюсь если нарушал закон, правило форума перед модераторами.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:I2")) Is Nothing Then
ActiveSheet.Unprotect Password:=""
On Error Resume Next
ActiveSheet.ShowAllData
Range("A7").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1").CurrentRegion
ActiveSheet.Protect Password:=""
End If
Dim rg As Range, rw As Range, r&
Set rg = Intersect(Target, Range("AD:AE"))
If rg Is Nothing Then Exit Sub
ActiveSheet.Unprotect Password:=""
For Each rw In rg.Rows
r = rw.Row
If Cells(r, 30) <> "" And Cells(r, 31) <> "" And _
InStr(Cells(r, 35), Cells(r, 30).Text) = 0 And _
InStr(Cells(r, 35), Cells(r, 31)) = 0 Then
Application.EnableEvents = False
Range(Cells(r, 35), Cells(r, Columns.Count).End(xlToLeft)).Copy Cells(r, 36)
Cells(r, 35) = Cells(r, 30).Text & " " & Cells(r, 31): Application.EnableEvents = True
End If
Next
ActiveSheet.Protect Password:=""
End Sub
Sub ee()
Application.EnableEvents = True
End Sub
На Вашем форму заинтересовал один макрос, который при вводе данных в одну ячейку он автоматически сдвигает строку с данными в право, но если изменить вводимый диапазон то история данных будет вносится в каждую 3-ю ячейку а 2-я будет пустая. Подскажите пожалуйста что надо исправить в макросе чтобы при смене даты в столбце E3:E26 она записывалась со смещением в столбец J3:J26 а данные с этого столбца смещались правее в столбцы К3:К26, L3:L26, M3:M26... AF3:AF26.
Буду очень признателен если Вы поможете мне именно на моем примере, так как в найдено макросе не могу это реализовать.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
ff = ActiveCell.Address
If ActiveCell.Address = "$B$6" Then
Range("B5:O5").Select
Range("O5").Activate
Selection.Copy
Range("C5").Select
ActiveSheet.PasteSpecial Format:=3, Link:=1, DisplayAsIcon:=False, _
IconFileName:=False
Else
Exit Sub
End If
Подскажите макрос который будет прописан в листе с видимым паролем чтоб после снятие защиты с листа (ввода пароля) и редактирование (админ) админ не вводил пароль заново а сохранял лист или что в этом роде для автоматической защити листа паролем который прописан в макросе. Проблема такова что после снятие и ввода пароля иногда забываешь пароль:( . Благодарю
Здравствуйте. Благодарю сайт за формулы и макрос с помощью которых я собрал эту таблицу для сортировки данных но дальше продвинутся не могу. Помогите пожалуйста. Проблема такова Єсть макрос который фильтрует данные в ячейках А7 і J7 по А1000 і J1000, но при условии что вводные значения будут прописаны с клавиатуры в ячейку В2 но если описанная назва в ниже описанных ячейках. А 7 по А1000 будет находится первой в строке. А если она прописана после запятой и тд то она не подтягивается. Пример (Фрукты,Зелень) то при вводе Зелень фильтруются только те ячейки в которых Зелень прописана первой. (Не в середине или конце)
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:Q2")) Is Nothing Then
On Error Resume Next
ActiveSheet.Unprotect Password:="1"
ActiveSheet.ShowAllData
Range("A7").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1").CurrentRegion
ActiveSheet.Protect Password:=""
End If
If Not Intersect(Target, Range("A2:Q2")) Is Nothing Then
On Error Resume Next
ActiveSheet.ShowAllData
Range("A7").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("A1").CurrentRegion
End If
End Sub