Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
VBA: разделение текстовой строки на несколько по критериям
 
Имеется строка вида "x-y-z". Нужно выделить из неё x, y и z.  
x может включать любые символы, y и z состоят только из цифр, разделяются всегда дефисами Например, для значения строки "С-1-1-01" должно рассчитаться x = "C-1", y = 1, z = 1.  
 
Как сделать это формулами, я знаю, а вот VBA только начинаю осваивать.
Порядок переключения между элементами UserForm
 
В созданной форме при нажатии Tab переключение между элементами происходит в том порядке, в каком эти элементы создавались. Можно его как-нибудь поменять, чтобы, например, переключались по порядку (слева направо, сверху вниз) без полного удаления и последующего повторного создания элементов в нужном порядке?
VBA: Поиск ID в списке и заполнение данных из найденной строки
 
Здравствуйте. Я только начинаю осваивать VBA, так что за ламерские вопросы, если что, сильно не ругайте.  
 
Данные хранятся на одном листе (Dox). В первом столбце приведён идентификационный номер, по которому и проходит поиск. Эти ID будут упорядочиваться по возрастанию. Интерфейс осуществляется при помощи UserForm. Значения списков для ComboBox берутся с другого листа (DB).  
 
Как можно наиболее оптимально сделать поиск ID с последующим внесением данных и этой строки в соответствующие пункты UserForm, а также запись значений из формы таким образом, чтобы при изменении/добавлении данных ID по-прежнему оставались по возрастанию.  
 
Поиск ID в списке и внесение данных в форму будут осуществляться с помощью функции FillByID(). Добавление/изменение записи будет осуществляться при нажатии соответствующей кнопки UserForm.  
Надеюсь, всё понятно описал.  
 
P.S. Я не прошу делать за меня всю работу, мне куда важнее научиться. В первую очередь интересуют алгоритмы и методы их реализации.
Копирование с листа на лист с сохранением размера ячеек
 
Добрый день. Меня интересует, можно ли с помощью стандартных средств Excel скопировать с одного листа на другой так, чтобы ячейки стали такого же размера, как и на исходном листе?  
Ширину ячеек можно скопировать с помощью специальной вставки, а вот как скопировать высоту строк, я так и не нашёл.  
 
P.S. Версия 2007.
Простой способ найти последний пробел в строке
 
Существует ли какой-нибудь простой способ с помощью формул найти последний пробел?  
 
На данный момент я пользуюсь формулами вида =ПОИСК(" ";строка;длина_строки-5), что явно не очень удобно. Во-первых, поскольку поиск ведётся в прямом направлении, нет никакой гарантии, что найденный пробел будет последним. Во-вторых, в выбранный интервал (в данном случае, 5 символов) пробел может и не попасть, если слова длинные, поэтому приходится задавать кучу условий на длину строки, все увеличивая и увеличивая интервал поиска.  
 
Так что если кто-нибудь знает, как с помощью формул провести поиск с конца или перевернуть символы строки в обратном порядке, буду очень благодарен.
Как сделать ограничитель области печати?
 
Как сделать ограничитель области печати (не знаю, как он правильно называется) такого типа?
Открывание с ярлыка определённого листа
 
Можно в свойствах ярлыка к документу как-нибудь задать (например, через параметры), чтобы открывался нужный лист, а не тот,  с которым последним работали.
Создание собственной надстройки с пользовательскими функциями
 
В общем, мне нужно, чтобы пользовательские были доступны из любого файла, а не только из того, где прописаны. Вроде как это решается созданием собственной надстройки с функциями. Собственно, вопрос состоит в том, как создать такую надстройку, добавлять в нее код функций и подключить ее к Excel'ю?
Вставить строчку с заглавной (прописной) буквы. Помогите оптимизировать
 
Первоначально хотел спросить как это сделать, но в процессе написания вопроса вопрос сам по себе решился. =) Теперь вопрос состоит только в том, можно ли как-нибудь сделать гораздо проще и более оптимально, а то боюсь, как бы при увеличении числа строк обработка не начала бы сильно тормозить.  
Итак, копирую я текст из ячеек. Нужно, чтобы вставленный текст начинался с большой буквы. Поскольку там по несколько слов бывает, то ПРОПНАЧ не подходит. Следовательно, надо сделать первый символ заглавным, а остальное подставить как есть.  
Первый символ меняю, например, формулой вида ПРОПИСН(ЛЕВСИМВ(A1;1)), а вот как проще всего записать остальное, чтобы оно осталось без изменения? Мне в первую очередь в голову пришло ПСТР, но поскольку число символов в ячейках может меняться в любых пределах, пришлось максимум сделать "плавающим", через ДЛСТР.  
В итоге формула пришла к такому виду:  
=ПРОПИСН(ЛЕВСИМВ(A1))&ПСТР(A1;2;ДЛСТР(A1)-1)
После редактирования формула перестает считать
 
В общем, проблема в следующем.  
В столбце используется формула вида  
=СУММЕСЛИ(Пошив!$A$2:$A$28;B3;Пошив!$R$2:$R$28)+СУММЕСЛИ(Ремонт!$A$2:$A$28;B3;Ремонт!$L$2:$L$28)  
Она ищет данные на двух листах по номеру заказа и выдает данные из соответствующих строк нужного столбца. После ввода и "протяжки" все нормально считается, несмотря на то, что в диапазонах суммирования попадаются числа в текстовом виде и, соответственно, результаты расчета формулы также представлены в текстовом виде.  
Однако при любой попытке редактирования формулы она просто остается в виде текста, значение не считается, даже если просто войти в формулу и, ничего не меняя, нажать Enter.  
Я не могу понять, почему перестает считать, чем принципиально отличаются измененная и неизмененная ячейки, если у них остаются одинаковое форматирование и содержимое. А ведь что-то меняется: при попытке "протягивания" формулы с низлежащей ячейки значение снова прекрасно считается, хотя не меняется ни содержимое, ни формат.  
В связи с вышеизложенным хотелось бы узнать, из-за чего такое происходит и как от такого избавляться, если подобное повторится.  
 
К сообщению прикреплен фрагмент скриншота для иллюстрации.  
Версия Excel из MS Office 2007.  
 
P.S. Разумеется, я понимаю, что примененный в формулах алгоритм, мягко говоря, не оптимален. Сами формулы я заменю. Но мне важно понять, из-за чего возникли подобные "глюки" и как с ними бороться в дальнейшем.  
P.P.S. Прошу прощения за "многабукав". :)
Страницы: 1
Наверх