Страницы: 1
RSS
заполнение приказа и журнала по инвентаризации
 
Помогите, пожалуйста, с заполнением документов по инвентаризации (см. файл). На Вашем форуме прочитала заполнение бланка по записи из списка, задача похожая, но ставит в тупик заполнение должностей и фио комиссии...
 
Сделал при помощи макросов.  
 
1)Скачайте этот файл: http://excelvba.ru/XL_Files/Sample__09-06-2010__11-15-28.zip  
2)Перейдите на лист ИНВ_23  
3) Дважды щелкните на любой ячейке в столбце 7 (там, где состав комиссии)  
(т.е. вы щелкаете по ячейке со списком членов комиссии)  
 
Макрос активирует лист ПРИКАЗ, и заполнит необходимые поля.  
Председателем комиссии считается первый её член.  
 
При щелчке на пустой ячейке все поля очищаются.  
Проверяйте.
 
ВНИМАНИЕ: макросы должны быть разрешены до открытия файла  
(меню Сервис - Макрос - Безопасность - Низкая)  
 
вот весь код:  
 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)  
   If Target.Column = 7 And Target.Row > 5 Then Cancel = True: Заполнить Target.Text  
End Sub  
 
Sub Заполнить(ByVal СписокЧленов As String)  
   Dim ra1 As Range, ra2 As Range: Set ra1 = [комиссия]: Set ra2 = [ФИО]
   ra1.Value = "": ra2.Value = "": i = 1  
   For Each Член In Split(СписокЧленов, ",")  
       Член = Trim(Член): Должность = Split(Член, " ")(0): ФИО = Split(Член, " ")(1)  
       ra1.Areas(i).Cells(1) = LCase(Должность)  
       ra2.Areas(i).Cells(1) = ФИО  
       i = i + 1  
   Next Член  
   pr.Activate  
End Sub
 
{quote}{login=EducatedFool}{date=09.06.2010 09:17}{thema=}{post}{/post}{/quote}  
 
Хорошо, только инициалы теряются. Можно так:  
ФИО = Replace(Член, Должность, "", , 1, vbTextCompare)
 
Спасибо, проверила, работает, а с поправкой выводятся и инициалы  
Но...    
если должность из 2-х и более слов, то не срабатывает, признак окончания поля " ". Как можно это обойти, кроме как радикального (например, ставить после должности "-"), а то пользователи у нас не очень аккуратные...
 
А если так попробовать?  
(ФИО - последние 2 слова, Должность - всё остальное)  
 
Sub Заполнить(ByVal СписокЧленов As String)  
   Dim ra1 As Range, ra2 As Range: Set ra1 = [комиссия]: Set ra2 = [ФИО]
   ra1.Value = "": ra2.Value = "": i = 1  
   For Each Член In Split(СписокЧленов, ",")  
       arr = Split(Trim(Член), " ")  
       ФИО = arr(UBound(arr) - 1) & " " & arr(UBound(arr))  
       Должность = LCase(Trim(Replace(Член, ФИО, "")))  
       ra1.Areas(i).Cells(1) = Должность  
       ra2.Areas(i).Cells(1) = ФИО  
       i = i + 1  
   Next Член  
   pr.Activate  
End Sub  
 
 
PS: Все варианты всё равно не предусмотришь - пользователи могут и про пробелы забыть...
 
{quote}{login=EducatedFool}{date=10.06.2010 06:11}{thema=}{post}Все варианты всё равно не предусмотришь - пользователи могут и про пробелы забыть...{/post}{/quote}  
 
Эт точно. Инициалов тоже может не быть, а пробелов несколько подряд.  
Вот вариант, в котором фамилией считается слово с прописной буквы. В примере я вписал несколько косяков.
Страницы: 1
Читают тему
Наверх