Страница 3 из 3

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

Добавлено: 25 июл 2009, 17:34
qwer66
pashulka писал(а):Qwer66, Если в дальнейшем необходимость в программной сортировке, всё-таки возникнет, то здесь) Вы можете скачать новый пример.
С трудом, но примерно лишь понял, что написано в макросе..
Для решения свой задачи Ваш пример с формулами очень пригодился.
Выстругал, как мог, свой "деревянный" файл.
Какие есть способы сделать его проще? Можно ли сделать так, чтобы в ячейках с "проверкой данных" значения выбирались бы исключительно из выпадающего списка без возможности ввода значений с клавиатуры?
Спасибо.

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

Добавлено: 25 июл 2009, 20:51
Aent
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]

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

Добавлено: 25 июл 2009, 21:32
pashulka
Qwer66, По всем вопросам, связанным с вышеопубликанными примерами, можно, без тени стеснения, писать мне напрямую, адрес есть в каждом примере.

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

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

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

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

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

'V = Array(1, 2, 3)
V = VBA.[_HiddenModule].Array(1, 2, 3)

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

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

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

Добавлено: 29 июл 2009, 21:24
pashulka

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

Добавлено: 31 июл 2009, 09:13
anseo
pashulka писал(а):Да, это возможно
спасибо!!! сразу и не заметила, что пример в ответе :)