Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/26: Рейтинг темы: голосов - 26, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 7
1

Нужно чтоб одна кнопка работала на всех листах.

21.12.2011, 14:00. Показов 4622. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Первая просьба - http://www.relib.com/forums/thread881181.aspx...
Я ввёл Вас в заблуждение: я писал не макросы, а непосредственно через редактор VBA.
Не хочу, чтобы плодами моего раздумья пользовался кто-нить ещё.
Обработанные данные рассылаются различным людям, и каждый раз приходится стирать весь текст VBA вручную из обработанного файла. Нельзя ли это как-нибудь автоматизировать?

И второй вопрос, позвольте уж быть наглым до конца, а?
В процессе работы производятся некоторые операции на всех трёх листах книги. С помощью ОДНОЙ кнопки на первом листе ничего сделать не удаётся - не хочет выполнять действия на 2-м и 3-м личтах. При переносе соответствующих кодов под кнопки на каждый лист - всё работает идеально.
Нельзя ли с этим как-то бороться?

Премного благодарен всем, кто хоть чем-нить поможет...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2011, 14:00
Ответы с готовыми решениями:

как сделать, чтоб кнопка работала?
есть форма с кнопкой, как сделать, чтоб кнопка работала?

У меня 6 кнопок, а я хочу чтоб 1 кнопка работала а все остальные были не доступны
вот дапустим , у меня 6 кнопок инструкция обновить чит не работает чит скачать нужные...

Что нужно установить, чтоб на Viste работала справка Delphi?
Ребят, может, кто кинет мне на электронку exe-шник Delphi? Мне надо, чтоб справка работала...Может,...

Нужно чтобы кнопка работала определённое время
кнопка считает количество нажатий на неё и передает количество нажатий в метку, нужно сделать...

15
2 / 2 / 1
Регистрация: 10.04.2011
Сообщений: 415
21.12.2011, 14:14 2
И еще раз тебе повторю - какой же ты жадный!!!!!
Сам даже не можешь внимательно прочитать все ответы и грамотные ссылки и решить свою проблему. Да чего там - о высоте твоего "мастерства" можно судить и по тому, что ты считаешь написанный автоматически макрос и sub [italic]непосредственно через редактор VBA[/italic] разными вещами, и по тому, что ты не можешь сделать переход с одного листа на другой внутри своей "гениальной" программы, завязанной на кнопку на листе. И при этом имеешь наглость заявлять, что не хочешь давать пользоваться плодами своего труда другим! Я фигею с такой простоты! Да я здесь людям выложил в исходниках целую СУБД, которую моя компания успешно продает за весьма серьезные бабки, чтобы люди могли на реально работающих примерах узнать больше о возможностях Excel. Даже я, работающий в VBA 7 лет, частенько нахожу здесь нетривиальные ответы на многие вопросы (глянь хотя бы пост на 55 сообщений - вот реальный плод коллективного разума и поиска!).
Не буду тебе отвечать. Во-первых, ответ на твой вопрос уже дан в твоем предыдущем посте. А во-вторых, не люблю жадин!
0
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 7
21.12.2011, 16:17  [ТС] 3
Уважаемый, я Вам что, на хвост наступил? По-моему я ничем не заслужил такого отношения к себе с Вашей стороны. Если Вы хотите кого-то облить упрёками, то, извините, это не ко мне.
Мне нет никакого дела до того, что Вы предлагаете свой продукт другим. На здоровье. Я НЕ ХОЧУ, чтобы моё "творчество" досталось моему руководству. Почему? Да потому, что на меня повесят обязанности писать скрипты для всех, совершенно не поощряя ни временем для этого, ни материально.
Спасибо Вам за Ваш "тёплый отзыв"! Всего Вам хорошего!

P.S. Нельзя так с совершенно незнакомым человеком, по крайней мере - неприлично.
0
Сумрак
21.12.2011, 16:57 4
хех... можно... я уже вроде говорил, в эту тему или не в эту..но чтото уж больно похоже... Зачем тебе в книге макросы... если ты не хочешь чтоб ими пользовались другие?...Положи их в свою книгу и вызывай его от туда просто указывай какую книгу обрабатывать... Я тут вообще не вижу проблеммы.
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 7
21.12.2011, 17:14  [ТС] 5
Уважаемый Сумрак!
Я начал программировать месяц назад. Это Вам о чём-то говорит? Я думаю, что да.
Тем более, что автозапись макроса и написание его через редактор у меня почему-то не аналогичны(хотя винды и офис лицензионные).
Я просто просил помощи, а не высказывал желания, чтобы меня облили грязью.
Я перелопачиваю кучу литературы, но до сих пор ответа не нашёл. Неужели, если бы я сам мог решить данную проблему, я бы обращался за помощью...
А Вы говорите, что "можно"... По-моему, уважаемый Johny Walker просто сам себя унизил, написав такой ответ.
Извините, если отвлёк... Я думал, что тут помогут...
0
Сумрак
21.12.2011, 17:22 6
Я ввёл Вас в заблуждение: я писал не макросы, а непосредственно через редактор VBA.
1/ Мда...Прошу прощения.. сейчас Вы точно ввели в заблуждение... что Вы писали и чем?
Если Вы пользовались Рекордером(Я так понял что не им), то записанная процедура:
Visual Basic
1
2
3
Sub Макрос1()
Selection.value=Empty
end sub
(Прошу не указывать, сам знаю, что макрорекрдер так не умеет писать, это пример)

Ничем не отличается от написанного мной
Visual Basic
1
2
3
sub AAA()
Selection.value=Empty
end sub
Макрос, процедура, это одно и тоже.:-)

2/ сооздай свой тулбар и ложи на него кнопки, им присвой макросы(функции, процедуры, программы и т.д.) Пример. Клик по 1 кнопке обработь -Обработь все 3 листа Активной книги. и все.

Посмотрите, тут куча топиков обращения к листам и книгам через обьекты.
Обьявляя обьектные переменые, Вы можете спокойно в данном сеансе напрямую обращаться к любому открытому в данный момент листу, книге или другому обьекту.
0 / 0 / 0
Регистрация: 26.04.2011
Сообщений: 7
21.12.2011, 17:32  [ТС] 7
Господа!
Давайте закроем вопрос, а?

Я постараюсь докопаться до всего сам.
[bold]Спасибо Вам за всё...[/bold]
0
2 / 2 / 1
Регистрация: 10.04.2011
Сообщений: 415
21.12.2011, 17:32 8
Если обидел - извини.
Насчет руководства - спорный вопрос. ...на меня повесят обязанности... - неправильно себя поставил. В трудовом договоре должен быть список обязанностей и оговорена оплата за их выполнение.
Немного и себе :-) То, что сейчас продается, возникло именно из того уровня, что сейчас есть у тебя. Я решил автоматизировать свою работу, и мое руководство это оценило, поощрив и материально и временем. Я тоже начинал с записи макросов и анализа получаемого кода, потом купил книжку. А сколько я просидел ночей за домашним компом, осваивая эксель, кропая первые нелепые программы (с нынешней точки зрения)...Зато теперь мы с круглыми глазами говорим клиентам о том, как трудоемка наша работа, поэтому она такая дорогая, и они нам верят, потому что вручную это было бы действительно долго и дорого.
Умение использовать больше возможностей MS Office, заложенных в него разработчиками - это твое конкурентное преимущество. Не стоит его ни скрывать, ни приуменьшать свои усилия, необходимые для освоения программирования, а четко заявить о цели автоматизации.
В твоем случае нарушена логика - ты автоматизируешь только свою работу, пытаясь, видимо, за счет этого поменьше работать. Но с точки зрения твоих работодателей повышение производительности твоего труда им ненужно в таком виде: любая программа должна использоваться на благо компании, принося тебе дивидены в виде уважения коллег и повышения зарплаты. Если же твоя зарплата не зависит от успешности работы компании в целом - я бы из такой компании ушел.
Все вышесказанное - ИМХО, с которым ты можешь не согласиться.
ЗЫ что же касается вопросов:
В обоих случаях у тебя одна и та же проблема, изначально заложенная в эксель разработчиками. Ее суть - в смешивании в одной книге КОДА и ДАННЫХ что подходит для макроса, но совершенно не катит в серьезных вопросах. Все, что тебе нужно сделать - это РАЗДЕЛИТЬ их. Вариантов предложили тебе уже много и раньше, например, использовать личную книгу макросов. Я для себя сделал просто отдельную книгу, где пишу все полезные примочки. Скорее всего, попробовав такой вариант, ты обнаружил, что доступа к обрабатываемым ячейкам нет, и это естественно - прямая адресация типа Range("A1") или Cells(2,3) работает с текущей Активной книгой и Активным листом.
Решение очень простое: вначале каждой процедуры описать несколько переменных, которые отвечают за рабочие диапазоны:
Visual Basic
1
2
3
4
5
6
7
8
' ...
Dim R1 as Range, R2 as Range
' ...
Set R1 = Workbooks("Рабочая книга.xls").Range("Лист1!A1")
Set R2 = Workbooks("Рабочая книга.xls").Range("Лист2!A1")
R1(2,2).Value = "Я на листе 1"
R2(2,2).Value = "Я на листе 2"
' ...
Самое интересное, что этот код будет работать, даже если его поместить в книгу с именем "Книга макросов.xls", потом перейти (сделать активной) твою рабочую, а нажав Alt+F8, вызвать макрос из "Книга макросов.xls"
И не нужно будет удалять код из рабочей книги, которую ты обрабатываешь своим скриптом, потому что его там просто нет!
А теперь представь, что ты написал скрипты для всех своих коллег, положил из в "Книга макросов.xls" и отдал им. Они, веселые и довольные, выполняют день изо дня обработку своих рабочих файлов. Вдруг ты находишь ошибку в своей программе. Ты ее моментально исправляешь и отдаешь новую версию коллегам. При этом тебе не нужно писать скрипты для всех, чтобы сохранить наработанное коллегами в предыдущие дни.
Удачи!
0
Сумрак
21.12.2011, 17:34 9
Зря Вы обижаетесь, в любой литературе, по VBA... "ПЕРВЫЙ лозунг не верте Макрорекрдеру он Вас обманет". Вашего Опонента обидели не Вы как, конкретно ЧЕЛОВЕК. А Ваше отношение, Вы месяц как програмировать начали А уже первый код написанный руками, прячете как золотую жилу. Тут много было дискуссий по поводу эксплуатации VBA программистов. Но платить Вам должны не соратники по работе а начальство. Вы наоборот должны ему(начальству) пояснить и показать как Вы много затратили сил на создание такого полезного кода, как вы много пользы принесли, и это сделали Вы лично а не сам Excel(как в прочем они почти все так думают). У меня на работе "Personal" уже больше мега весит.
МОжет мне Вашему предприятию его продать... :-))))
Сумрак
21.12.2011, 17:36 10
:-) to Johny Walker это я и хотел сказать, у Вас это нагляднее получилось..
Сумрак
21.12.2011, 18:06 11
>>>Уважаемый Сумрак!
Я начал программировать месяц назад. Это Вам о чём-то говорит? Я думаю, что да.
хех.. можно понастальгирую... :-))) тут меня многие поймут...:-)))
После синего экрана, появилась Wинда 3.11 Это был ПРАЗДНИК, конечно можно смеятся, вся Ось занимала несколько дискет высокой плотности, далее - супер... Win95 и соответственно первый офис, вот тут и свершилось мое знакомство с VBA дедушкой - WordBasic 2(Раньше комп как печатную машинку использовали). Поверь мне, вот тут было где помучится, нет ни литературы не инета нет ничего, только корявая справка на техническом английском - и то ни о чем. Я каждый день обходил все книжные магазины ближайших районов в поисках хоть какойто книженции, и вот через пол года мне попалась одна. Как раз По WB2. Вот с тех пор я наверное и подсел на VB :-) И первая моя прога была - из шаблона вызывается форма, в нее вводятся необходимые данные, потом они вставляются в документ - т.е. автоматизация делопроизводства. И у меня небыло даже в мыслях просить за это деньги, я просто был рад - что симпатичная девушка - которая печатала эти договора, стала больше уделять мне внимание, из-за освободившегося времени. :-))
Это так оффтоп - настальгия. :-)
Сумрак
21.12.2011, 18:19 12
Да пример Авторекрдера:
Запустите макрорекордер, выполните поиск по всей книге.
Запустите получившуюся процедуру.
И каков будет результат?
1 / 1 / 1
Регистрация: 18.06.2008
Сообщений: 329
21.12.2011, 18:44 13
Неужели будет отформатирован диск???
)
0
2 / 2 / 1
Регистрация: 10.04.2011
Сообщений: 415
22.12.2011, 12:34 14
Неплохой учебник по VBA шаг за шагом:
http://www.firststeps.ru/, далее [bold]VBA by Step[/bold]
0
3 / 3 / 0
Регистрация: 08.09.2011
Сообщений: 111
22.12.2011, 13:36 15
To Johny Walker

Спасибо за ссылку!
Классный учебник! Когда искал ничего подобного найти не мог!
Пришлось использовать Уокенбаха, но он по сравнению с этим тяжеловат во всех смыслах.
0
Терминатор
22.12.2011, 20:57 16
Цитата Сообщение от Tsvet
Пришлось использовать Уокенбаха, но он по сравнению с этим тяжеловат во всех смыслах.
Эх...
Не торопитесь. Значить всё ещё в переди.
Лично я перед Джон Уокенбахом снимаю шляпу.
22.12.2011, 20:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2011, 20:57
Помогаю со студенческими работами здесь

Нужно чтоб одна подкатегория меню не скрывалась
Нужно чтоб одна подкатегория меню не скрывалась. То есть у меня создана стандартное выпадающее...

Как сделать, чтоб на изображении поместить 4 кнопки и чтоб каждая работала?
У меня такая проблема, на изображении разместила 4 кнопки, но из-за того что указано position:...

Нужно скрыть файлы на флешке так чтоб не одна душа не смогла их найти)
нужно скрыть файлы на флешке так чтоб не одна душа не смогла их найти))программы типа Lock Folder...

Нужно, чтобы одна кнопка выполняла функцию другой кнопки
Нужно, чтобы одна кнопка выполняла функцию другой кнопки private void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru