Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Автоматическое заполнение ячейки на другом листе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическое заполнение ячейки на другом листе (Макросы/Sub)
Автоматическое заполнение ячейки на другом листе
dmgust2704 Дата: Среда, 17.06.2015, 08:12 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем привет и хорошего дня! Я сюда пришёл, конечно же, за помощью. У меня было задание: давался сводный лист с компаниями в сводном листе были заголовки и одна огромная таблица, компаний в ней было 44. Я разбил таблицу на отдельные листы, т.е. данные одной компании находились на одном листе, другой компании на другом листе и т.д. Задание заключалось в автоматическом заполнении сводного листа по кнопке, т.е. я ввожу данные в лист компании №13, например, и в сводном листе в таблице заполнялись нужные ячейки, там где были данные о компании №13, всё это делалось по нажатии кнопки(но с заданием я не совсем справился, т.к. макрос выполнялся через Ctrl+q). Теперь, мне нужно чтобы всё также заполнялось, но автоматически, т.е. достаточно просто написать в листе №13 и всё, и данные уже были в сводном. Возможно так сделать? Вот код по предыдущему заданию:
[vba]
Код
Option Explicit

Sub PerenosTarget()
Dim TargetRow As Long
Dim TargetColumn As Integer
Dim FoundNomer As Range
Dim FoundOkno As Range
Dim FoundOknoRow As Long

TargetRow = ActiveCell.Row
TargetColumn = ActiveCell.Column
With Sheets("Ñâîä") '
Set FoundNomer = .Columns(1).Find("8602/" & ActiveSheet.Name, , xlValues, xlWhole)

Set FoundOkno = .Columns(1).Find(What:=Cells(ActiveCell.Row, 1), After:=FoundNomer, LookIn:=xlValues, _
LookAt:=xlWhole, SearchDirection:=xlPrevious)
FoundOknoRow = FoundOkno.Row
.Cells(FoundOknoRow, TargetColumn) = ActiveCell
End With
End Sub
[/vba]

код записан в стандартном модуле.


Сообщение отредактировал dmgust2704 - Среда, 17.06.2015, 08:37
 
Ответить
СообщениеВсем привет и хорошего дня! Я сюда пришёл, конечно же, за помощью. У меня было задание: давался сводный лист с компаниями в сводном листе были заголовки и одна огромная таблица, компаний в ней было 44. Я разбил таблицу на отдельные листы, т.е. данные одной компании находились на одном листе, другой компании на другом листе и т.д. Задание заключалось в автоматическом заполнении сводного листа по кнопке, т.е. я ввожу данные в лист компании №13, например, и в сводном листе в таблице заполнялись нужные ячейки, там где были данные о компании №13, всё это делалось по нажатии кнопки(но с заданием я не совсем справился, т.к. макрос выполнялся через Ctrl+q). Теперь, мне нужно чтобы всё также заполнялось, но автоматически, т.е. достаточно просто написать в листе №13 и всё, и данные уже были в сводном. Возможно так сделать? Вот код по предыдущему заданию:
[vba]
Код
Option Explicit

Sub PerenosTarget()
Dim TargetRow As Long
Dim TargetColumn As Integer
Dim FoundNomer As Range
Dim FoundOkno As Range
Dim FoundOknoRow As Long

TargetRow = ActiveCell.Row
TargetColumn = ActiveCell.Column
With Sheets("Ñâîä") '
Set FoundNomer = .Columns(1).Find("8602/" & ActiveSheet.Name, , xlValues, xlWhole)

Set FoundOkno = .Columns(1).Find(What:=Cells(ActiveCell.Row, 1), After:=FoundNomer, LookIn:=xlValues, _
LookAt:=xlWhole, SearchDirection:=xlPrevious)
FoundOknoRow = FoundOkno.Row
.Cells(FoundOknoRow, TargetColumn) = ActiveCell
End With
End Sub
[/vba]

код записан в стандартном модуле.

Автор - dmgust2704
Дата добавления - 17.06.2015 в 08:12
dmgust2704 Дата: Среда, 17.06.2015, 08:21 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
"Ñâîä" - это свод
 
Ответить
Сообщение"Ñâîä" - это свод

Автор - dmgust2704
Дата добавления - 17.06.2015 в 08:21
ShAM Дата: Среда, 17.06.2015, 08:31 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
1. Еще бы файл увидеть.
2. Код нужно оформить тегами, нажав # чуть выше окна для текста сообщений.
3.
"Ñâîä" - это свод
Чтобы такого не было, копируйте код при русской раскладке.
 
Ответить
Сообщение1. Еще бы файл увидеть.
2. Код нужно оформить тегами, нажав # чуть выше окна для текста сообщений.
3.
"Ñâîä" - это свод
Чтобы такого не было, копируйте код при русской раскладке.

Автор - ShAM
Дата добавления - 17.06.2015 в 08:31
dmgust2704 Дата: Среда, 17.06.2015, 08:41 | Сообщение № 4
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вот, обрезанный файл, но чтобы увидеть суть задания, достаточно. Реализовать макрос здесь придётся через вкладку "разработчик".
К сообщению приложен файл: 0297787.rar (36.8 Kb)
 
Ответить
СообщениеВот, обрезанный файл, но чтобы увидеть суть задания, достаточно. Реализовать макрос здесь придётся через вкладку "разработчик".

Автор - dmgust2704
Дата добавления - 17.06.2015 в 08:41
ShAM Дата: Среда, 17.06.2015, 09:11 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1347
Репутация: 249 ±
Замечаний: 0% ±

Excel 2010
Если правильно понял, в модуль ЭтаКнига:
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim TargetRow As Long
Dim TargetColumn As Integer
Dim FoundNomer As Range
Dim FoundOkno As Range
Dim FoundOknoRow As Long
Application.EnableEvents = False
   TargetRow = Target.Row            'строка измененной ячейки
   TargetColumn = Target.Column      'столбец измененной ячейки
     With Sheets("Свод")                 'надо перенести содержимое измененной ячейки на лист Свод
       'ищем в столбце А строку с 8602/имя листа
       Set FoundNomer = .Columns(1).Find("8602/" & ActiveSheet.Name, , xlValues, xlWhole)
       'ищем окно № на листе Свод, соответствующее окну измененной ячейки
       Set FoundOkno = .Columns(1).Find(What:=Cells(Target.Row, 1), After:=FoundNomer, LookIn:=xlValues, _
                    LookAt:=xlWhole, SearchDirection:=xlPrevious)
       FoundOknoRow = FoundOkno.Row
       .Cells(FoundOknoRow, TargetColumn) = Target.Value
     End With
Application.EnableEvents = True
End Sub
[/vba]
 
Ответить
СообщениеЕсли правильно понял, в модуль ЭтаКнига:
[vba]
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim TargetRow As Long
Dim TargetColumn As Integer
Dim FoundNomer As Range
Dim FoundOkno As Range
Dim FoundOknoRow As Long
Application.EnableEvents = False
   TargetRow = Target.Row            'строка измененной ячейки
   TargetColumn = Target.Column      'столбец измененной ячейки
     With Sheets("Свод")                 'надо перенести содержимое измененной ячейки на лист Свод
       'ищем в столбце А строку с 8602/имя листа
       Set FoundNomer = .Columns(1).Find("8602/" & ActiveSheet.Name, , xlValues, xlWhole)
       'ищем окно № на листе Свод, соответствующее окну измененной ячейки
       Set FoundOkno = .Columns(1).Find(What:=Cells(Target.Row, 1), After:=FoundNomer, LookIn:=xlValues, _
                    LookAt:=xlWhole, SearchDirection:=xlPrevious)
       FoundOknoRow = FoundOkno.Row
       .Cells(FoundOknoRow, TargetColumn) = Target.Value
     End With
Application.EnableEvents = True
End Sub
[/vba]

Автор - ShAM
Дата добавления - 17.06.2015 в 09:11
dmgust2704 Дата: Среда, 17.06.2015, 10:03 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Если правильно понял, в модуль ЭтаКнига:


Нет, не в ЭтаКнига, а в Module1 в папке Modules. Сейчас попробую переставить код.
 
Ответить
Сообщение
Если правильно понял, в модуль ЭтаКнига:


Нет, не в ЭтаКнига, а в Module1 в папке Modules. Сейчас попробую переставить код.

Автор - dmgust2704
Дата добавления - 17.06.2015 в 10:03
dmgust2704 Дата: Среда, 17.06.2015, 11:45 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
FoundOknoRow = FoundOkno.Row

После ваших правок вылазит ошибка после ввода в ячейку: Run-time error '91':
Object variable or With Block variable not set. Знаете в чём дело?
 
Ответить
Сообщение
FoundOknoRow = FoundOkno.Row

После ваших правок вылазит ошибка после ввода в ячейку: Run-time error '91':
Object variable or With Block variable not set. Знаете в чём дело?

Автор - dmgust2704
Дата добавления - 17.06.2015 в 11:45
Kuzmich Дата: Среда, 17.06.2015, 15:20 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 712
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
dmgust2704
Код из сообщения №5 надо вставить в модуль Эта книга.
Module1 удалите.
А почему перестали эту тему обсуждать на Планете Excel?
 
Ответить
Сообщениеdmgust2704
Код из сообщения №5 надо вставить в модуль Эта книга.
Module1 удалите.
А почему перестали эту тему обсуждать на Планете Excel?

Автор - Kuzmich
Дата добавления - 17.06.2015 в 15:20
dmgust2704 Дата: Среда, 17.06.2015, 16:37 | Сообщение № 9
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Я там пароль забыл <_<
 
Ответить
СообщениеЯ там пароль забыл <_<

Автор - dmgust2704
Дата добавления - 17.06.2015 в 16:37
dmgust2704 Дата: Среда, 17.06.2015, 16:49 | Сообщение № 10
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
С этим кодом у меня ничего не выходит, как я не пытался..
 
Ответить
СообщениеС этим кодом у меня ничего не выходит, как я не пытался..

Автор - dmgust2704
Дата добавления - 17.06.2015 в 16:49
Kuzmich Дата: Среда, 17.06.2015, 16:58 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 712
Репутация: 156 ±
Замечаний: 0% ±

Excel 2003
[vba]
Код
С этим кодом у меня ничего не выходит
[/vba]
Что именно не выходит?
В коде надо ограничить диапазон на каждом листе,где можно производить изменения, и лист Свод исключить из листов изменений
 
Ответить
Сообщение[vba]
Код
С этим кодом у меня ничего не выходит
[/vba]
Что именно не выходит?
В коде надо ограничить диапазон на каждом листе,где можно производить изменения, и лист Свод исключить из листов изменений

Автор - Kuzmich
Дата добавления - 17.06.2015 в 16:58
dmgust2704 Дата: Среда, 17.06.2015, 17:03 | Сообщение № 12
Группа: Пользователи
Ранг: Прохожий
Сообщений: 8
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
У меня 44 листа. Это на каждом нужно проделывать?
 
Ответить
СообщениеУ меня 44 листа. Это на каждом нужно проделывать?

Автор - dmgust2704
Дата добавления - 17.06.2015 в 17:03
KSV Дата: Среда, 17.06.2015, 17:20 | Сообщение № 13
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Это на каждом нужно проделывать?

Зачем на каждом?
Вам же сразу написали
в модуль ЭтаКнига


см. вложенный файл
К сообщению приложен файл: 6960830.zip (39.7 Kb)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Это на каждом нужно проделывать?

Зачем на каждом?
Вам же сразу написали
в модуль ЭтаКнига


см. вложенный файл

Автор - KSV
Дата добавления - 17.06.2015 в 17:20
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Автоматическое заполнение ячейки на другом листе (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!