Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MSGBOX при обновлении значения ячейки Excel / 15 сообщений из 15, страница 1 из 1
13.04.2012, 18:32
    #37753190
muzikizum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
Добрый день! Возникла задача - выводить сообщение при вводе в заданный диапазон Excel "запрещенных" символов. Список этих символов должен редактироваться вручную (например, $,%,*). Подскажите, пожалуйста, как это можно сделать в VBA?
...
Рейтинг: 0 / 0
13.04.2012, 18:44
    #37753213
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
А что не получается? Выводить сообщение или редактируемый список?
...
Рейтинг: 0 / 0
13.04.2012, 18:59
    #37753239
muzikizum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
Вывести сообщение без всяких условий - не проблема :) Не знаю, как связать это событие с редактированием ячейки, тем более с введением в нее символов из заданного списка...
...
Рейтинг: 0 / 0
14.04.2012, 00:27
    #37753653
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
Код: vbnet
1.
2.
3.
4.
5.
Private Sub Worksheet_Change(ByVal Target As Range)

If InStr(1, Target.Value, "$") Then MsgBox "Ниииизя!"

End Sub
...
Рейтинг: 0 / 0
14.04.2012, 00:35
    #37753659
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
Если символов несколько, то можно так:
Код: vbnet
1.
2.
denied = "\$\%\^\&\*"
If Target.Value Like "*[" + denied + "]*" Then MsgBox "Ниииизя!"
...
Рейтинг: 0 / 0
14.04.2012, 09:43
    #37753791
muzikizum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
Shocker.Pro, спасибо! Только возникает runtime error при удалении значений диапазона. И как задать определенный диапазон, а не весь лист?
...
Рейтинг: 0 / 0
14.04.2012, 13:56
    #37753905
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
muzikizumТолько возникает runtime error при удалении значений диапазонане только при удалении, а при попытке отредактировать НЕ одну ячейку. Так что сначала определитесь, что нужно делать в таких случаях.
...
Рейтинг: 0 / 0
14.04.2012, 13:56
    #37753907
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
muzikizumИ как задать определенный диапазон, а не весь лист?ответ на этот вопрос будет зависеть от ответа на первый
...
Рейтинг: 0 / 0
14.04.2012, 22:03
    #37754251
muzikizum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
Shocker.Pro, при попытке отредактировать не одну, а несколько ячеек (удалить, вставить) - должно выполняться это действие.
...
Рейтинг: 0 / 0
15.04.2012, 13:49
    #37754499
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Denied As String, CheckingRange As Range, j As Range
Denied = "\$\%\^\&\*"
Set CheckingRange = Range("B2:C10")

Set Target = Application.Intersect(Target, CheckingRange)
If Not Target Is Nothing Then
    For Each j In Target.Cells
      If j.Value Like "*[" + Denied + "]*" Then
        MsgBox "Ниииизя!"
        Exit For
      End If
    Next
End If

End Sub
...
Рейтинг: 0 / 0
15.04.2012, 17:22
    #37754606
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
Правда, есть тут некий глюк, ибо это глюк (вряд ли фича) экселя.
При удалении, скажем, строки 5, 6-я строка становится 5-й. При этом Target ссылается на эту самую 5-ю строку, соответственно, по ней идет проверка (хотя она при этом действии не изменялась).

По идее при таком событии Target должен бы принимать значение Nothing, но это не так.
Идей, как обойти это у меня нет.
...
Рейтинг: 0 / 0
16.04.2012, 08:19
    #37755002
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
а если использовать Данные - Проверка данных

там выбрать "другой" и подставить код предложенный Shocker.Pro
...
Рейтинг: 0 / 0
17.04.2012, 18:33
    #37757821
muzikizum
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
HandKot, Господь с вами. "Проверка данных" VBA не понимает.
Shocker.Pro, спасибо!
...
Рейтинг: 0 / 0
17.04.2012, 18:39
    #37757830
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
muzikizumHandKot, Господь с вами. "Проверка данных" VBA не понимает.а что, нельзя туда добавить UDF?
...
Рейтинг: 0 / 0
17.04.2012, 22:42
    #37758140
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSGBOX при обновлении значения ячейки Excel
> Shocker.Pro
> При удалении, скажем, строки 5, 6-я строка становится 5-й. При этом Target ссылается на эту самую 5-ю строку, соответственно, по ней идет проверка (хотя она при этом действии не изменялась).


ПолуоффПосле удаления строки (в пределах UsedRange или выше оного) тыцни Ctrl+Z и посмотри сколько раз вызовется Worksheet_Change и что будет в качестве Target
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / MSGBOX при обновлении значения ячейки Excel / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]