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

Вход

Регистрация

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

 

= Мир MS Excel/Выполнение макроса на другом листе - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выполнение макроса на другом листе (Макросы/Sub)
Выполнение макроса на другом листе
VadimVV Дата: Четверг, 23.10.2014, 16:27 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Добрый день.
Я не силен в синтаксисе программирования.
Вопрос простой. Создал макрос, который показывает результат в определенной ячейке.
В теле макроса это выглядит так [vba]
Код
Selection.TextToColumns Destination:=Range("F1375")
[/vba] Т.е. он мне разбивает текст по столбцам начиная с ячейки F1375. Я хочу, чтобы он делал эту процедуру на Листе 2, начиная с ячейки A1.

Полностью макрос такой
[vba]
Код
Selection.TextToColumns Destination:=Range("F1375"), DataType:=xlDelimited _
          , TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
          Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
          :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
          Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
          ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1)), _
          TrailingMinusNumbers:=True
End Sub
[/vba]
 
Ответить
СообщениеДобрый день.
Я не силен в синтаксисе программирования.
Вопрос простой. Создал макрос, который показывает результат в определенной ячейке.
В теле макроса это выглядит так [vba]
Код
Selection.TextToColumns Destination:=Range("F1375")
[/vba] Т.е. он мне разбивает текст по столбцам начиная с ячейки F1375. Я хочу, чтобы он делал эту процедуру на Листе 2, начиная с ячейки A1.

Полностью макрос такой
[vba]
Код
Selection.TextToColumns Destination:=Range("F1375"), DataType:=xlDelimited _
          , TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
          Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
          :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
          Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
          ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1)), _
          TrailingMinusNumbers:=True
End Sub
[/vba]

Автор - VadimVV
Дата добавления - 23.10.2014 в 16:27
Rioran Дата: Четверг, 23.10.2014, 16:51 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
VadimVV, здравствуйте.

Попробуйте в Вашем коде заменить Range("F1375") на ThisWorkbook.Worksheets(2).Range("A1")


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеVadimVV, здравствуйте.

Попробуйте в Вашем коде заменить Range("F1375") на ThisWorkbook.Worksheets(2).Range("A1")

Автор - Rioran
Дата добавления - 23.10.2014 в 16:51
_Boroda_ Дата: Четверг, 23.10.2014, 17:03 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Лист 2 не обязательно второй по счету. Поэтому не Worksheets(2), а Worksheets("Лист2")
А вообще текст по столбцам напрямую с другими листами не работает


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЛист 2 не обязательно второй по счету. Поэтому не Worksheets(2), а Worksheets("Лист2")
А вообще текст по столбцам напрямую с другими листами не работает

Автор - _Boroda_
Дата добавления - 23.10.2014 в 17:03
VadimVV Дата: Четверг, 23.10.2014, 17:33 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Да, действительно не работает. При замене на Worksheets всё равно результат в этом же листе в первой ячейке выдает.

Ок, можно ли тогда сделать так, чтобы результат выполнения макроса воспроизводился в ячейке, которая идет правее от той, к которой применяется макрос?

Т.е. если у меня данные в ячейке А5, то результат нужен с ячейки А6. Ячейки динамичные (т.е., следующие данные могут быть в ячейке A155, данные нужны с ячейки А156).
 
Ответить
СообщениеДа, действительно не работает. При замене на Worksheets всё равно результат в этом же листе в первой ячейке выдает.

Ок, можно ли тогда сделать так, чтобы результат выполнения макроса воспроизводился в ячейке, которая идет правее от той, к которой применяется макрос?

Т.е. если у меня данные в ячейке А5, то результат нужен с ячейки А6. Ячейки динамичные (т.е., следующие данные могут быть в ячейке A155, данные нужны с ячейки А156).

Автор - VadimVV
Дата добавления - 23.10.2014 в 17:33
VadimVV Дата: Четверг, 23.10.2014, 17:55 | Сообщение № 5
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Т.е. я так понимаю, Range ("F1375") надо заменить на что-то типа Range (ActiveCell+2) или как-то так. Но не знаком с синтаксисом.
 
Ответить
СообщениеТ.е. я так понимаю, Range ("F1375") надо заменить на что-то типа Range (ActiveCell+2) или как-то так. Но не знаком с синтаксисом.

Автор - VadimVV
Дата добавления - 23.10.2014 в 17:55
RAN Дата: Четверг, 23.10.2014, 18:03 | Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
напрямую с другими листами не работает

Накривую
[vba]
Код
Sub Мяу()
     Dim aa&
     aa = Cells.Find("*", , , , 2, xlPrevious).Column + 2
     Selection.TextToColumns Destination:=Cells(1, aa), DataType:=xlDelimited _
                           , TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                             Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
                    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
                    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
                    ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1)), _
                    TrailingMinusNumbers:=True
     Cells(1, aa).CurrentRegion.Copy Sheets(2).Cells(1, 1)
     Cells(1, aa).CurrentRegion.Clear
     ActiveSheet.UsedRange
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
напрямую с другими листами не работает

Накривую
[vba]
Код
Sub Мяу()
     Dim aa&
     aa = Cells.Find("*", , , , 2, xlPrevious).Column + 2
     Selection.TextToColumns Destination:=Cells(1, aa), DataType:=xlDelimited _
                           , TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                             Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
                    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
                    Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
                    ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1)), _
                    TrailingMinusNumbers:=True
     Cells(1, aa).CurrentRegion.Copy Sheets(2).Cells(1, 1)
     Cells(1, aa).CurrentRegion.Clear
     ActiveSheet.UsedRange
End Sub
[/vba]

Автор - RAN
Дата добавления - 23.10.2014 в 18:03
VadimVV Дата: Четверг, 23.10.2014, 18:16 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Спасибо, работает :)

Ещё такой вопрос. у меня другой макрос добавляет пустые строки, начиная с той строки, которая выделена мышкой. Т.е. при нажатии горячей клавиши, начинают добавляться строки. Чтобы упростить задачу добавления нужного количества строк, как надо изменить макрос, чтобы он добавлял то кол-во строк, которое указано в ячейке А2. (в ячейке А2 суммируются непустые значения первой строки с помощью =счётз)?

Сам макрос на добавления одной пустой строки такой
Код
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
 
Ответить
СообщениеСпасибо, работает :)

Ещё такой вопрос. у меня другой макрос добавляет пустые строки, начиная с той строки, которая выделена мышкой. Т.е. при нажатии горячей клавиши, начинают добавляться строки. Чтобы упростить задачу добавления нужного количества строк, как надо изменить макрос, чтобы он добавлял то кол-во строк, которое указано в ячейке А2. (в ячейке А2 суммируются непустые значения первой строки с помощью =счётз)?

Сам макрос на добавления одной пустой строки такой
Код
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

Автор - VadimVV
Дата добавления - 23.10.2014 в 18:16
RAN Дата: Четверг, 23.10.2014, 18:47 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
VadimVV, вероятность получения правильного ответа обратно пропорциональна количеству нарушений правил форума.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеVadimVV, вероятность получения правильного ответа обратно пропорциональна количеству нарушений правил форума.

Автор - RAN
Дата добавления - 23.10.2014 в 18:47
VadimVV Дата: Пятница, 24.10.2014, 09:55 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 20% ±

Excel 2007
Вот пример

Поясню.
По нажатию горячей клавиши ctrl+a на листе 2 начиная с первой ячейки все данные формируются по столбцам.
В ячейке А2 считается кол-во заполненных ячеек.
Теперь хотелось бы по горячей клавише сделать макрос, который добавляет пустые строки, начиная с активной строки на Листе1, в том количестве, которое считается в ячейке А2.

Далее я макросом очищаю первую строку на Листе2, разбиваю на ячейки данные из Наименования 2, добавляю пустые строки после Наименования 2 и так далее.
К сообщению приложен файл: 4265405.xlsm (0.0 Kb)


Сообщение отредактировал VadimVV - Пятница, 24.10.2014, 15:26
 
Ответить
СообщениеВот пример

Поясню.
По нажатию горячей клавиши ctrl+a на листе 2 начиная с первой ячейки все данные формируются по столбцам.
В ячейке А2 считается кол-во заполненных ячеек.
Теперь хотелось бы по горячей клавише сделать макрос, который добавляет пустые строки, начиная с активной строки на Листе1, в том количестве, которое считается в ячейке А2.

Далее я макросом очищаю первую строку на Листе2, разбиваю на ячейки данные из Наименования 2, добавляю пустые строки после Наименования 2 и так далее.

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

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