Страницы: 1
RSS
Создание отчета через форму
 
Добрый день, подскажите, пожалуйста,как реализовать следующее:    
есть табличные данные, изменяются каждый день, на форме 2 поля для ввода даты и выбор наименования, подскажите как сделать, чтобы при нажатии кнопки подтягивались  и подсчитывались данные с разных листов. на примере наверное понятнее  
   
Заранее спасибо
 
Добрый день!  
Нужна ваша помощь! Подскажите пжста как это делается т.е. в прикрепленном файле есть кнопочка «отобразить форму ввода» кнопку на подобие этого.
 
{quote}{login=Caste}{date=05.08.2009 09:03}{thema=}{post}Добрый день!  
Нужна ваша помощь! Подскажите пжста как это делается т.е. в прикрепленном файле есть кнопочка «отобразить форму ввода» кнопку на подобие этого.{/post}{/quote}  
Рисуете свою форму111, пишите макрос с Form111.Show , и цепляете его на кнопочку, Вы об этом?
 
{quote}{login=Микки}{date=05.08.2009 09:19}{thema=Re: }{post}{quote}{login=Caste}{date=05.08.2009 09:03}{thema=}{post}Добрый день!  
Нужна ваша помощь! Подскажите пжста как это делается т.е. в прикрепленном файле есть кнопочка «отобразить форму ввода» кнопку на подобие этого.{/post}{/quote}  
Рисуете свою форму111, пишите макрос с Form111.Show , и цепляете его на кнопочку, Вы об этом?{/post}{/quote}  
 
да, вы можете мне по почте написать? muhashov@bc.kz  
заранее благодарен!
 
Зачем по почте, это всем интересно. Для этого он и форум...
 
форма
 
{quote}{login=Caste}{date=05.08.2009 10:33}{thema=}{post}форма{/post}{/quote}  
у и попробуйте сами форму нарисовать Прайст описал как, с выпадающим списком все просто -- токо нарисуйте его прообраз на любом другом листе , а с заполнением строки еще проще ВПР() рулит, токо надо попросить  Прайста или еще кого чтоб макрос написал по событию изменения ячейки с телефоном при значении ВПР(телефон;)=НД, кот вызовет форму -Вашу для заполнения строки... и я поучусь очередной раз
 
:) я деже незнаю как рисовать!.. :) т.е. что для чего, некоторые понял но ... щас попробую
 
может вы попробуете что то сделать?! если что то нужно будет переделывать я подскажу.  
спасибо Вам!
 
Подскажите п-ж, есть форма, вопросы с которыми сам пока не могу справится обозначил в файле.
 
{quote}{login=Nik}{date=05.08.2009 11:55}{thema=Прошу тоже помощи по форме}{post}Подскажите п-ж, есть форма, вопросы с которыми сам пока не могу справится обозначил в файле.{/post}{/quote}  
Забыл обозначить ещё 1 вопрос.  
Нужно что бы при выборе Региона, были доступны получатели и отправители соответствующие этому региону.
 
если вас не затруднит можете по пороядку написать действия создания формы ввода и его привязки к кнопочке!?
 
{quote}{login=Nik}{date=05.08.2009 12:03}{thema=Re: Прошу тоже помощи по форме}{post}{quote}{login=Nik}{date=05.08.2009 11:55}{thema=Прошу тоже помощи по форме}{post}Подскажите п-ж, есть форма, вопросы с которыми сам пока не могу справится обозначил в файле.{/post}{/quote}  
Нужно что бы при выборе Региона, были доступны получатели и отправители соответствующие этому региону.{/post}{/quote}  
А это какие - "соответствующие"? Вам нужно создать по крайней мере три именованных диапазона (лучше динамических). Показать какой список соответствует нужному региону. Если получатели и отправители - разные списки, тогда потребуется ещё три диапазона - для каждого региона по два.
 
{quote}{login=Caste}{date=05.08.2009 12:25}{thema=}{post}если вас не затруднит можете по пороядку написать действия создания формы ввода и его привязки к кнопочке!?{/post}{/quote}  
 
Запуск формы осуществляется по коду (Модуля):  
 
Public Sub ВызовФормы()  
UserForm1.Show  
End Sub  
 
После этого нужно нарисовать на странице Excel кнопку и назначить ей макрос, он появится автоматом после написания кода.  
 
 
А сама форма рисуется через Insert- UserForm.  
 
Только нужно сначала нарисовать форму, потом написать код для запуска, и далее привязать его к кнопке.  
 
Сам только 3-й день, как стал изучать VBA
 
{quote}{login=Caste}{date=05.08.2009 12:25}{thema=}{post}если вас не затруднит можете по пороядку написать действия создания формы ввода и его привязки к кнопочке!?{/post}{/quote}  
Уже писал Прайст  
Да собственно ответ-то уже есть(Микки в кратце написал весь процесс).  
Более подробно.  
-Заходите в редактор VBA(Alt+F11)->Insert->UserForm.  
-Делаете с ней все, что хотите.  
-Затем Insert->Module, в котором создаете новую процедуру с одной строчкой - UserForm1.Show  
Имя формы, естесственно свое.  
-Затем на листе создаете кнопку(или другой объект) и назначаете ей(ему) макрос(тот, что с одной строчкой).  
-Все.
 
quote}  
А это какие - "соответствующие"? Вам нужно создать по крайней мере три именованных диапазона (лучше динамических). Показать какой список соответствует нужному региону. Если получатели и отправители - разные списки, тогда потребуется ещё три диапазона - для каждого региона по два.{/post}{/quote}  
 
Соответсвующие, это если выбрать например "Питер", то в строке отправитель, и получатель станет только доступно "Василиса". А если "Казань", то Татьяна.  
 
Просто у меня был файл который работал по формулам, а теперь хочу всё это окультурить.
 
{quote}{login=Nik}{date=05.08.2009 11:55}{thema=Прошу тоже помощи по форме}{post}Подскажите п-ж, есть форма, вопросы с которыми сам пока не могу справится обозначил в файле.{/post}{/quote}  
Типа того, только диапазоны лучше динамические
 
{quote}{login=Nik}{date=05.08.2009 12:42}{thema=Re: Re: Re: Прошу тоже помощи по форме}{post}quote}  
А это какие - "соответствующие"? Вам нужно создать по крайней мере три именованных диапазона (лучше динамических). Показать какой список соответствует нужному региону. Если получатели и отправители - разные списки, тогда потребуется ещё три диапазона - для каждого региона по два.{/post}{/quote}  
 
Соответсвующие, это если выбрать например "Питер", то в строке отправитель, и получатель станет только доступно "Василиса". А если "Казань", то Татьяна.  
 
Просто у меня был файл который работал по формулам, а теперь хочу всё это окультурить.{/post}{/quote}  
 
Составьте таблицу  
Казань Москва  
Отпр1   Отпр1  
Отпр2   Отпр4  
Отпр3   Отпр5  
 
И т.д. где в комбокс 1 выберете диапазон с городами    
а В код формы вписать типа того :  
 
Private Sub ComboBox1_Change()  
   If ComboBox1.Value = "Казань" Then  ' Для Руководства  
       ComboBox2.RowSource = "...."  
       ComboBox2.Value = ""  
   End If  
   If ComboBox1.Value = "Москва" Then  ' Для СИД  
       ComboBox2.RowSource = "....."  
       ComboBox2.Value = ""  
 
И так для каждого города -очень муторно
 
The_Prist    
 
в строке    
If CDate(.Cells(li, 1)) = CDate(TextBox1) And .Cells(li, 4) = NPO Then _  
 
выдает ошибку "13", Type mismatch  
из-за чего это может быть?  
 
Спасибо
 
{quote}{login=Микки}{date=05.08.2009 01:02}{thema=Re: Re: Re: Re: Прошу тоже помощи по форме}{post}{quote}{login=Nik}{date=05.08.2009 12:42}{thema=Re: Re: Re: Прошу тоже помощи по форме}{post}quote}  
А это какие - "соответствующие"? Вам нужно создать по крайней мере три именованных диапазона (лучше динамических). Показать какой список соответствует нужному региону. Если получатели и отправители - разные списки, тогда потребуется ещё три диапазона - для каждого региона по два.{/post}{/quote}  
 
Соответсвующие, это если выбрать например "Питер", то в строке отправитель, и получатель станет только доступно "Василиса". А если "Казань", то Татьяна.  
 
Просто у меня был файл который работал по формулам, а теперь хочу всё это окультурить.{/post}{/quote}  
 
Составьте таблицу  
Казань Москва  
Отпр1   Отпр1  
Отпр2   Отпр4  
Отпр3   Отпр5  
 
И т.д. где в комбокс 1 выберете диапазон с городами    
а В код формы вписать типа того :  
 
Private Sub ComboBox1_Change()  
   If ComboBox1.Value = "Казань" Then  ' Для Руководства  
       ComboBox2.RowSource = "...."  
       ComboBox2.Value = ""  
   End If  
   If ComboBox1.Value = "Москва" Then  ' Для СИД  
       ComboBox2.RowSource = "....."  
       ComboBox2.Value = ""  
 
И так для каждого города -очень муторно{/post}{/quote}  
 
 
 
Выражаю огромную благодарность.
 
вот примерно накидал посмотрите пжста.  
ФИО работника нужно выбрать из списка.  
можноли сделать так чтоб при вводе номера телефона остально выходила автоматом если до этого был введен этот клиент?!
 
а нет вот верный вариант, придыдущи считать не верным    
заранее спасибо за помощь!
 
{quote}{login=Микки}{date=05.08.2009 12:53}{thema=Re: Прошу тоже помощи по форме}{post}{quote}{login=Nik}{date=05.08.2009 11:55}{thema=Прошу тоже помощи по форме}{post}Подскажите п-ж, есть форма, вопросы с которыми сам пока не могу справится обозначил в файле.{/post}{/quote}  
Типа того, только диапазоны лучше динамические{/post}{/quote}  
 
 
Огромное Спасибо.
 
{quote}{login=The_Prist}{date=05.08.2009 01:07}{thema=}{post}Ячейка .Cells(li, 1) либо пустая, либо значение в ней не является датой.{/post}{/quote}  
 
 
Все получилось,работает.Спасибо огромное
 
{quote}{login=Caste}{date=05.08.2009 02:16}{thema=}{post}а нет вот верный вариант, придыдущи считать не верным    
заранее спасибо за помощь!{/post}{/quote}  
 
вот я примерно сделал..  
а как сделать так чтоб после нажатия "ОК" форма ввода закрылась?  
Private Sub cmndbOK_Click()  
   Dim lLastRow As Long  
   lLastRow = Cells(Rows.Count, 2).End(xlUp).Row  
   Cells(lLastRow + 1, 2) = Cells(lLastRow, 2) + 1    '№п/п  
   Cells(lLastRow + 1, 3) = Date + Time 'Дата/время  
   Cells(lLastRow + 1, 4) = Me.txtbPhoneNumber    'Номер тел.  
   Cells(lLastRow + 1, 5) = Me.cmbxFIOWorker    'ФИО работника  
   Cells(lLastRow + 1, 6) = Me.txtbFIOClient    'ФИО клиента  
   Cells(lLastRow + 1, 7) = Me.txtbCallTarget    'Цель звонка  
   Cells(lLastRow + 1, 8) = Me.txtbDuration    'Длительность  
End Sub  
 
 
Private Sub UserForm_Initialize()  
   Dim NoDupes As New Collection, Item  
   Dim lLastRow As Long, li As Long  
   lLastRow = Cells(Rows.Count, 5).End(xlUp).Row  
   For li = 6 To lLastRow  
       If Cells(li, 5) <> "" Then  
           On Error GoTo NEXT_  
           NoDupes.Add Cells(li, 5), CStr(Cells(li, 5))  
           cmbxFIOWorker.AddItem Cells(li, 5)  
       End If  
NEXT_:  
   Next li  
   On Error GoTo 0  
End Sub
 
ОГРОМНОЕ СПАСИБО!!!! The_Prist!!!  
видите ли у меня нет вообще базового знания программирования... я только только учусь :)    
спасибо!!!
 
{quote}{login=Микки}{date=05.08.2009 12:40}{thema=Re: }{post}{quote}{login=Caste}{date=05.08.2009 12:25}{thema=}{post}если вас не затруднит можете по пороядку написать действия создания формы ввода и его привязки к кнопочке!?{/post}{/quote}  
Уже писал Прайст  
Да собственно ответ-то уже есть(Микки в кратце написал весь процесс).  
Более подробно.  
-Заходите в редактор VBA(Alt+F11)->Insert->UserForm.  
-Делаете с ней все, что хотите.  
-Затем Insert->Module, в котором создаете новую процедуру с одной строчкой - UserForm1.Show  
Имя формы, естесственно свое.  
-Затем на листе создаете кнопку(или другой объект) и назначаете ей(ему) макрос(тот, что с одной строчкой).  
-Все.{/post}{/quote}  
 
Invalid outside procedure - не даёт он мне вставить форму в файл. Подскажите, в чём ошибаюсь?
 
Захожу в VBA, Insert UserForm, делаю с ней, что хочу, как написано в рекомендациях. Затем Insert Module ввожу одну строку UserForm1.Show. и входя в Excel выдаёт такую ошибку.
 
Всё равно не понимаю, как вытащить в Excel форму, которую я создал? Автоматом она у меня там не появляется.
 
The_Prist, спасибо Вам. Вот где собака то порылась - ALT+F8...
Страницы: 1
Наверх