Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 13.10.2008, 18:56   #1
usgaz@list.ru
 
Регистрация: 13.10.2008
Сообщений: 5
По умолчанию Автоматическое заполнение данных из другого листа

Есть два листа, в одном размещены данные о договорах (№, дата, контрагент и т.д.) они размещены в строку по каждому договору.
Второй лист - карточка к такому договору и в различные ячейки заполняются данные из предыдущего листа.
Как сделать так, чтобы эти данные заполнялись автоматически и оператору достаточно было только указать номер строки из которой заполнить эти данные?
Спасибо!
KYAN
usgaz@list.ru вне форума
Старый 14.10.2008, 02:06   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Приложите файл с данными (заполните по нескольку строк на каждом листе так, как это должно выглядеть в дальнейшем).

Цитата:
Сообщение от usgaz@list.ru Посмотреть сообщение
оператору достаточно было только указать номер строки
Как именно оператор будет указывать номер строки?
двойным щелчком на ячейке в этой строке, или выделением строки с последующим нажатием на какую-либо кнопку, или как-то еще?
EducatedFool вне форума
Старый 15.10.2008, 15:11   #3
usgaz@list.ru
 
Регистрация: 13.10.2008
Сообщений: 5
По умолчанию

ВТОРОЙ ЛИСТ - регистрация
ПЕРВЫЙ ЛИСТ - карточка. Те поля, которые в нем помечены желтым цветом должны заполняться из второго листа.
Приведен пример по второй строке второго листа!


Как оператор будет указывать номер строки - совсем не важно - можно в отдельной ячейке или в каком-нибудь поле...

Заранее благодарен за помощь!
Вложения
Тип файла: rar ЖУРНАЛ ДОГОВОРОВ.rar (9.3 Кб, 131 просмотров)
KYAN

Последний раз редактировалось usgaz@list.ru; 15.10.2008 в 15:18.
usgaz@list.ru вне форума
Старый 15.10.2008, 17:04   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

См. вложение.

Для заполнения регистрационной карточки выполните двойной щелчок мышью на странице "Регистрация" в столбце 1 по любой ячейке
(по ячейке с регистрационным номером этой карточки)

Макросы в Excel должны быть включены.
Вложения
Тип файла: rar ЖУРНАЛ ДОГОВОРОВ.rar (15.0 Кб, 257 просмотров)
EducatedFool вне форума
Старый 15.10.2008, 17:31   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Есть и другой вариант - с формулами.

На листе КАРТОЧКА в зеленую ячейку вводите нужный регистрационный номер, и все поля заполняются.

См. вложение:
Вложения
Тип файла: rar ЖУРНАЛ ДОГОВОРОВ 2.rar (11.4 Кб, 275 просмотров)
EducatedFool вне форума
Старый 16.10.2008, 09:21   #6
usgaz@list.ru
 
Регистрация: 13.10.2008
Сообщений: 5
По умолчанию

Спасибо огромное! Выручили по полной!
KYAN
usgaz@list.ru вне форума
Старый 16.10.2008, 09:32   #7
usgaz@list.ru
 
Регистрация: 13.10.2008
Сообщений: 5
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
См. вложение.

Для заполнения регистрационной карточки выполните двойной щелчок мышью на странице "Регистрация" в столбце 1 по любой ячейке
(по ячейке с регистрационным номером этой карточки)

Макросы в Excel должны быть включены.
Можешь еще подсказать как отредактировать данный вариант? Названия листов на которые ссылается и проч.
KYAN
usgaz@list.ru вне форума
Старый 16.10.2008, 11:38   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Щелкаем правой кнопкой мыши на ярлычке листа "Регистрация", и выбираем пункт Исходный текст

В открывшемся редакторе VBA видим:

Код:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    On Error Resume Next
    If Target.Column = 1 And Target.Row > 1 Then
        Select Case MsgBox("Заполнить регистрационную карточку?", vbYesNo + vbQuestion, "Подтвердите действие")
            Case vbYes
                Cancel = True
                Dim sh As Worksheet, c1 As Range: Set sh = ActiveWorkbook.Worksheets("КАРТОЧКА")
                If sh Is Nothing Then Beep 100, 100: MsgBox "Отсутствует лист КАРТОЧКА", vbCritical, "Ошибка": Exit Sub
                Set c1 = Target.EntireRow.Cells(1)

                ' на всякий случай сначала очищаем ячейки (чтобы заведомо избавиться от прежних данных)
                sh.Range("RegNumber").FormulaR1C1 = ""
                sh.Range("ContractNumber").FormulaR1C1 = ""
                sh.Range("ContractDate").FormulaR1C1 = ""
                sh.Range("RegDate").FormulaR1C1 = ""
                sh.Range("Agent").FormulaR1C1 = ""
                sh.Range("ContractType").FormulaR1C1 = ""
                sh.Range("DateExpired").FormulaR1C1 = ""

                ' записываем значения (полям в КАРТОЧКЕ присвоены имена)
                sh.Range("RegNumber").Value = c1.Offset(, 0).Value
                sh.Range("ContractNumber").Value = c1.Offset(, 1).Value
                sh.Range("ContractDate").Value = c1.Offset(, 2).Value
                sh.Range("RegDate").Value = c1.Offset(, 3).Value
                sh.Range("Agent").Value = c1.Offset(, 4).Value
                sh.Range("ContractType").Value = c1.Offset(, 5).Value
                sh.Range("DateExpired").Value = c1.Offset(, 6).Value

                sh.Activate    ' активируем лист КАРТОЧКА
                Beep 800, 50
            Case Else
                Cancel = False
        End Select
    End If
End Sub
В нём строка Set sh = ActiveWorkbook.Worksheets("КАРТОЧКА ") отвечает за определение листа, на котором расположена карточка.
Если надо переименовать лист, замените "КАРТОЧКА" на "Новое название листа"

Лист "Регистрация" можно переименовывать без изменений кода.


Строка If Target.Column = 1 And Target.Row > 1 Then определяет ячейки, двойной щелчок по которым вызывает выполнение кода.

В данном случае Target.Column = 1 означает, что обрабатывается 1-й столбец, а Target.Row > 1 - что номер строки должен быть больше 1 (начиная с 2 и дальше)
EducatedFool вне форума
Старый 17.10.2008, 10:41   #9
usgaz@list.ru
 
Регистрация: 13.10.2008
Сообщений: 5
По умолчанию

Благодарю!!!
KYAN
usgaz@list.ru вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Структура данных и защита листа Legame Microsoft Office Excel 47 25.06.2019 11:03
Автоматическое формировании таблицы данных из множества файлов Ivann Microsoft Office Excel 16 28.03.2009 21:23
Dblookupcombobox автоматическое заполнение в случае одного значения 1sal1 БД в Delphi 1 07.10.2008 21:41
Автоматический перенос данных из общего листа в другие InvoiceControl Microsoft Office Excel 3 02.10.2008 13:21
Макрос по копированию данных из другого фаила Devourer12345 Microsoft Office Excel 30 17.07.2008 04:54