Данные-->Проверка

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

qwer66
Сообщения: 3
Зарегистрирован: 21 июл 2009, 17:00

pashulka писал(а):Qwer66, Если в дальнейшем необходимость в программной сортировке, всё-таки возникнет, то здесь) Вы можете скачать новый пример.
С трудом, но примерно лишь понял, что написано в макросе..
Для решения свой задачи Ваш пример с формулами очень пригодился.
Выстругал, как мог, свой "деревянный" файл.
Какие есть способы сделать его проще? Можно ли сделать так, чтобы в ячейках с "проверкой данных" значения выбирались бы исключительно из выпадающего списка без возможности ввода значений с клавиатуры?
Спасибо.
Вложения
пример (Qwer66).zip
(17.77 КБ) 65 скачиваний
Аватара пользователя
Aent
Сообщения: 1129
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

pashulka, я всё таки нашёл в MSDN ссылку на использование квадратных скобок в
VBA EXCEL: http://msdn.microsoft.com/en-us/library ... 11%29.aspx
Это оказался альтернативный синтаксис метода Evaluate. :)

Добавлю сюда ещё один пример
http://www.ozgrid.com/forum/showthread. ... 053&page=2

Код: Выделить всё

[color=Navy]Sub[/color] Example()
    [color=Navy]With[/color] [a1:A10]
        [color=Navy].Value[/color] = [{1;2;3;4;5;6;7;8;9;10}]
        [color=Navy].Offset[/color](, 1)[color=Navy].Value[/color] = [A1:A10+5]
        [color=Navy].Offset[/color](, 1)[color=Navy].Resize[/color](1).[color=Navy]Value[/color] = [color=Navy]Join[/color]([[color=Navy]transpose[/color](a1:a10)], ",")
    [color=Navy]End With
End Sub[/color]
И ещё пример (разница между Evaluate и [])

Код: Выделить всё

[color=Navy]Sub[/color] EvalUDF()
    [color=Navy]Dim[/color] s [color=Navy]As String[/color]
    s = "UDF(5)"
    [color=Navy]Debug.Print Evaluate[/color](s), [s]
[color=Navy]End Sub[/color]
[color=Navy]Public Function [/color]UDF(x) [color=Navy]As Single[/color]
    UDF = x * x
[color=Navy]End Function[/color]
Андрей Энтелис,
aentelis.livejournal.com
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Qwer66, По всем вопросам, связанным с вышеопубликанными примерами, можно, без тени стеснения, писать мне напрямую, адрес есть в каждом примере.

Что касается простоты, то проще использовать макросы (UserForm + Controls), ибо : можно обойтись без дополнительных ячеек, можно помочь "нормальному человеку" вводить наименования/индексы (если, к примеру, таковые уже имеются), можно ограничить выбор тем, людям, которые, по Вашим словам, не могут без ошибок набрать "наименование" и "индекс" на клавиатуре, ... можно контролировать почти каждое действие (впрочем, это уже лишнее)

P.S. А что касается об'екта Validation, то он всё-таки, запретит ввод с клавиатуры данных, которые не являются частью списка. Правда его легко "обмануть", но это уже отдельный разговор.

Aent, Открытие Америки не состоялось :) о том, что квадратные скобки встречаются в справке, в т.ч. и в разделе Evaluate, для меня, не секрет. Но там всё очень поверхностно, а вот сурьёзного исследования, пока найдено не было ...

P.S. Вот Вам ещё один пример использования квадратных скобок, на сей раз, в качестве экранизации недопустимых символов (правда к Excel это отношения уже не имеет и здесь вообще нет ничего нового)

Код: Выделить всё

'V = Array(1, 2, 3)
V = VBA.[_HiddenModule].Array(1, 2, 3)
anseo
Сообщения: 2
Зарегистрирован: 29 июл 2009, 12:16

а возможно, чтобы значения отображались не как выпадающий список, а н-р, в строку, через запятую? спасибо.
anseo
Сообщения: 2
Зарегистрирован: 29 июл 2009, 12:16

pashulka писал(а):Да, это возможно
спасибо!!! сразу и не заметила, что пример в ответе :)
Ответить