Задача такая : есть столбец в который заносится артикул, требуется при занесении этого артикула что бы эксель выдавал уведомление о том что к этому артикулу надо еще указать артикул какой-то (типа информационное окно), в приложеном файле это сделано в виде примечания, хотелось бы в виде загорающегося уведомления. исходный файл во вложении
Задача такая : есть столбец в который заносится артикул, требуется при занесении этого артикула что бы эксель выдавал уведомление о том что к этому артикулу надо еще указать артикул какой-то (типа информационное окно), в приложеном файле это сделано в виде примечания, хотелось бы в виде загорающегося уведомления. исходный файл во вложенииGameower
создать файлик с описание под каждый артикул который требует уведомления и в нем я опишу все что потребуется, задача теперь создать скрипт что бы он давал окно по вводу в ячейку нужного значения
создать файлик с описание под каждый артикул который требует уведомления и в нем я опишу все что потребуется, задача теперь создать скрипт что бы он давал окно по вводу в ячейку нужного значенияGameower
Gameower, вас устроит такой вариант: вводите в столбце А свой артикул, после ввода соседний столбец В становится красным. В нем можно будет выбрать из списка ограниченных значений доп.артикул. Список значений доп.артикулов для каждого артикула будет конкретным. Лишние доп.артикулы там болтаться не будут все равно. Зачем усложнять макросами???
Gameower, вас устроит такой вариант: вводите в столбце А свой артикул, после ввода соседний столбец В становится красным. В нем можно будет выбрать из списка ограниченных значений доп.артикул. Список значений доп.артикулов для каждого артикула будет конкретным. Лишние доп.артикулы там болтаться не будут все равно. Зачем усложнять макросами???Мурад
Сообщение отредактировал Мурад - Пятница, 04.09.2015, 12:16
Private Sub Worksheet_Change(ByVal Target As Range) Dim m, i&, n&, s$ If Target.Column > 1 Or Target.CountLarge > 1 Then Exit Sub 'If d.Count = 0 Then 'это раскомментировать, чтобы каждый раз не происходило заполнение словаря d.RemoveAll With Sheets("Справочник") n = .Cells(Rows.Count, 2).End(xlUp).Row m = .Range("a1:b" & n).Value For i = 1 To UBound(m) If Not d.exists(m(i, 1)) Then d.Add m(i, 1), m(i, 2) Next End With 'End If 'это раскомментировать, чтобы каждый раз не происходило заполнение словаря If d.exists(Target.Value) Then MsgBox "Нужно добавить код: " & d.Item(Target.Value) End Sub
[/vba]
Нужно заполнить лист "Справочник" Сообщение будет вылазить если будет изменятся 1-й столбец и вносимый код будет найден в справочнике.
Так ?:
[vba]
Код
Option Explicit Dim d As New Dictionary
Private Sub Worksheet_Change(ByVal Target As Range) Dim m, i&, n&, s$ If Target.Column > 1 Or Target.CountLarge > 1 Then Exit Sub 'If d.Count = 0 Then 'это раскомментировать, чтобы каждый раз не происходило заполнение словаря d.RemoveAll With Sheets("Справочник") n = .Cells(Rows.Count, 2).End(xlUp).Row m = .Range("a1:b" & n).Value For i = 1 To UBound(m) If Not d.exists(m(i, 1)) Then d.Add m(i, 1), m(i, 2) Next End With 'End If 'это раскомментировать, чтобы каждый раз не происходило заполнение словаря If d.exists(Target.Value) Then MsgBox "Нужно добавить код: " & d.Item(Target.Value) End Sub
[/vba]
Нужно заполнить лист "Справочник" Сообщение будет вылазить если будет изменятся 1-й столбец и вносимый код будет найден в справочнике. SLAVICK
[moder]Не нужно цитировать пост целиком[/moder] не понимаю что тут выполняетс?
заполните сами на свой вкус, главное что бы каждому артикулу что-то соответствовало, можно туда фразы добавить любые, но гоавное что бы ввели конкретный артикул, и после его ввода всплывала подсказка с заранее заготовленым текстом, как-то так надо
[moder]Не нужно цитировать пост целиком[/moder] не понимаю что тут выполняетс?
заполните сами на свой вкус, главное что бы каждому артикулу что-то соответствовало, можно туда фразы добавить любые, но гоавное что бы ввели конкретный артикул, и после его ввода всплывала подсказка с заранее заготовленым текстом, как-то так надоGameower
Сообщение отредактировал _Boroda_ - Пятница, 04.09.2015, 12:31
[moder]Не нужно цитировать пост целиком[/moder] да все получилось практически так и надо, единственное как это вкрутить в существующий файлик????Gameower
Сообщение отредактировал _Boroda_ - Пятница, 04.09.2015, 12:32
Сообщение будет вылазить если будет изменятся 1-й столбец и вносимый код будет найден в справочнике.
Т.е. сообщение будет появляться, только если внесенный в 1-й столбец - 1-го листа код будет найден в справочнике, т.е. будет на втором листе в 1-й колонке.
Сообщение будет вылазить если будет изменятся 1-й столбец и вносимый код будет найден в справочнике.
Т.е. сообщение будет появляться, только если внесенный в 1-й столбец - 1-го листа код будет найден в справочнике, т.е. будет на втором листе в 1-й колонке.
Вот. Забыл сказать, что нужно было включить библиотеку для книги:"Microsoft scripting runtime" да и еще см. закомментированные строки: [vba]
Код
If d.Count = 0 Then 'это раскомментировать, чтобы каждый раз не происходило заполнение словаря не будет притормаживать, но если будут изменения в 2-м листе нужно будет закрыть и открыть книгу для заполнения словаря.
Вот. Забыл сказать, что нужно было включить библиотеку для книги:"Microsoft scripting runtime" да и еще см. закомментированные строки: [vba]
Код
If d.Count = 0 Then 'это раскомментировать, чтобы каждый раз не происходило заполнение словаря не будет притормаживать, но если будут изменения в 2-м листе нужно будет закрыть и открыть книгу для заполнения словаря.
Я уже раскомментировал (см. в прошлом файле (10-й пост) они были закомментированы): [vba]
Код
If d.Count = 0 Then 'это раскоментировать, чтобы каждый раз не происходило заполнение словаря не будет притормаживать, но если будут изменения в 2-м листе нужно будет закрыть и открыть книгу для заполнения словаря. End If 'это раскоментировать, чтобы каждый раз не происходило заполнение словаря не будет притормаживать, но если будут изменения в 2-м листе нужно будет закрыть и открыть книгу для заполнения словаря.
[/vba] Там есть две строки условия. Если они будут раскомментированы(т.е. вначале строки НЕ будет ') то заполнение словаря произойдет только один раз за сеанс. Так файл будет работать намного быстрее, особенно если на 2-м листе будет много строк. Но если Вы измените что-то на 2-м листе, то оно не добавится в словарь пока не: сохраните -- закроете -- откроете файл
Я уже раскомментировал (см. в прошлом файле (10-й пост) они были закомментированы): [vba]
Код
If d.Count = 0 Then 'это раскоментировать, чтобы каждый раз не происходило заполнение словаря не будет притормаживать, но если будут изменения в 2-м листе нужно будет закрыть и открыть книгу для заполнения словаря. End If 'это раскоментировать, чтобы каждый раз не происходило заполнение словаря не будет притормаживать, но если будут изменения в 2-м листе нужно будет закрыть и открыть книгу для заполнения словаря.
[/vba] Там есть две строки условия. Если они будут раскомментированы(т.е. вначале строки НЕ будет ') то заполнение словаря произойдет только один раз за сеанс. Так файл будет работать намного быстрее, особенно если на 2-м листе будет много строк. Но если Вы измените что-то на 2-м листе, то оно не добавится в словарь пока не: сохраните -- закроете -- откроете файл
про комент понятно, а про второй пункт? как включить эту библиотеку? я вставил в ваш скрипт в свой исходный файлик и нифига выкидывает в окно сос криптом с какой-то ошибкой вот что за ошибка
так вроде все наладилось, буду тестить!
про комент понятно, а про второй пункт? как включить эту библиотеку? я вставил в ваш скрипт в свой исходный файлик и нифига выкидывает в окно сос криптом с какой-то ошибкой вот что за ошибка
попутно еще один вопрос, в томже столбике как сделать что бы всегда буквы были заглавные? невзирая на капс ? [moder]Этот вопрос не относится к данной теме[/moder]
попутно еще один вопрос, в томже столбике как сделать что бы всегда буквы были заглавные? невзирая на капс ? [moder]Этот вопрос не относится к данной теме[/moder]Gameower
Сообщение отредактировал Pelena - Понедельник, 07.09.2015, 10:02