![]() |
*VBA* | Помогите написать макросы для Excel'я
Пользователю предлагается заполнять определенные ячейки (прямоугольная область) на листе. Данные вводятся по строкам. Подскажите, как сделать, чтобы после заполнения последней ячейки в строке курсор перемещался не вправо, а в нужную ячейку на следующей строке.
[s]Исправлено: ove, 22:51 12-02-2003[/s] |
пожалуйста - переход к ячейкам
|
для этого пишется самый обыкновенный макрос с условием по достижению определенного столбца переместиться в первый столбец на след.строку.
|
Спасибо, но к какому события привязать этот макрос? Не хватает смелости попросить написать код, но хотя бы где посмотреть?
|
Если в Excel Вы заполняете список по строкам, то никаких макросов не надо. Достаточно для сохранения изменений и перехода в ячейку справа постоянно нажимать клавишу Таб. В последнем столбце для сохранения изменений в ячейке нажмите Enter и рамка переместится в начало строки, откуда начали нажимать Таб.:up:
|
чуваки, а где про это можно почитать? про макросы в екселе и все такое прочее?
|
Отлично, только нужна настройка перемещения по ячейкам - в параметрах - "вниз"
Дорогой Guest, спасибо огромное. Пытаюсь написать процедурку - и привязать ее все же только к Enter |
Как на VBA получить доступ к характеристикам (в частности, к размеру) графических файлов (напр., tiff)?
|
как определить первую ячейку области данных для диаграммы??
Добавлено: как определить первую ячейку области данных для диаграммы?? |
Народ помогите кто может!
Мне нужен макрос который проверял бы пуста данная ячейка или нет и если пуста то вносил записи если нет то переходил на следующую ячейку и вставлял записитам. Очень нужно. Подскажите пожалуйста. :sorry: |
to Pelman
Код:
Sub SetIfEmpty() |
Большое спасибо за помощь!!! :)
|
VBA for Excel
Доброго времени суток. У меня проблема возникла , нужно в таблице определить первый пустой столбец, если кто знает - подскажите. Заранее благодарен.
|
SS1001
Попробуйте вот так: Код:
Sub ShowFirstEmptyColumn() |
VBA for Excel
Спосибо огромное, хотя я и нашел уже способ, только немного другой. Всеравно попробую, может в контексте с другим кодом этот вариант будет лучше.
|
SS1001
И как же? Поделитесь, плз. |
Мне важно было что бы код искал пустой столбец в соответствии с этой строкой
...... Range("A6").Select ActiveCell.Offset(0, 1).Select Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(0, 1).Select Loop Selection.EntireColumn.Select ......... |
SS1001
Наверное, вы не совсем правильно сформулировали задачу в своем первом посте. Т.е. надо найти первую же пустую (даже если после нее есть данные) ячейку в определенной строке (а не целый столбец). Код:
Range("A6").End(xlToRight).Select |
Запуск макроса из другой книги
Есть две книги - первая и вторая. Мне нужно в процедуре, находящейся в модуле первой книги, прописать вызов процедуры, находящейся в модуле второй книги. Как это можно сделать?
Суть такова: программа из второй книги должна запускаться при открытии этой книги только если книга открыта программно при нажатии на кнопку в первой книге. Использование отдельных книг, листов макросов и надстроек не подходит, т.к. пользоваться будут люди, ничего в макросах/VBA/настройках Excel не понимающие, а выставить всем все собственноручно я физически не смогу. Поэтому нужен чистый код. |
For LLIBED
Насколькоя понял, тебе нужно что-то вроде этого!!! ![]() ![]() ![]() |
Народ, Подскажите как разрешить ситуацию:
на одном из листов сохранен запрос к фоксовской базе -строка SQL : Select * from... Прописан макрос меняющий команду (в цикле) SQL на update , предположим. Если в свойствах запроса на листе ставить"фоновое обновление" то каждый раз доходя до строки кода где переопределяется commandtext выскакивает ошибка "данная операция не дрпускается во время фонового обновления", если в свойствах запросаа опцию ФО убрать, то VBA ругается на отсутствие объекта, причем опять же при изменении commandtext |
Народ! Помогите кто может!
мне нужен макрос в VBA который копировал бы фамилии на листы, имя которых бы совпадало с первой буквой фамилии. Например: "Иванов" - в лист "И", "Петров" - в лист "П". Очень нужно! Помогите пожалуйста! Заранее спасибо! |
Margarittka, Вам нужно чтобы фамилии оставались и на первом листе или устраивает, чтобы после набора первой буквы, осуществился переход на требуемый лист?
|
Margarittka, алфавитные листы можно создать тоже с помощью макроса
Codru, я так понял, что список уже есть, по выполнению требуемого VBA макроса должно происходить копирования и сортировка по листам. |
Спасибо Admiral и Codru за помощь!!!!!!
Мне действительно нужно, чтобы фамилии оставались и на первом листе. SOS!!! Кто может-помогите!!! Заранее спасибо!!!!!!!!! |
Может вам попробовать всё это разместить на одном листе - 65535 строк это ведь много. Просто упорядочить общий список пофамильно. И сделать макрос по поиску нужной фамилии в общем списке, добавлению новой фамилии, удалению ненужной фамилии, импорту нового списка в общий список, "защиту" от ошибок, пустых строк и тд? Что Вы дальше будете делать с рассртированными по листам фамилиями на каждом листе, или Вам достаточно их раскидать по алфавитным листам - а дальше трава не расти?
|
Нужно просто рассортировать
|
Возможно нужное решение в прикреплённом файле
|
Gerdewski, всё работает. На листах Б и Д расположены лишние кнопки "Очистить листы" и "Раскопировать" соответственно.
|
Цитата:
Видимо в "формате объекта" (кнопки) на закладке "свойства" нужно поставить галку "не перемещать и не изменять размеры". |
Я тоже его поробовал раскопировать. В конце получил вопрос - В буфере имеется большой список данных - сохранить его? Это при одном единственном столбце в Листе1. А если столбцов будет к примеру - 32 с разными данными? Попробуйте поэкспериментировать - Незабуксует программа? :blink:
Можно попробовать ещё вот так: Код:
Sheets(1).select |
Цитата:
Код:
For i = 1 To 32 |
Pliomera, да конечно, но то наочние для новичков, которые ещё не знают про Chr$, а про массивы уже знают.
|
Доброго времени суток всем присутствующим.
Кто-нибудь может помочь с такой проблемкой: Есть две книги file1 и file2, каждая с двумя столбцами, первый из которых это идентификатор, второй - значения; вобщем надо значения из первой книги переместить во вторую (при совпадении ячеек из первого столбца). Я использовал следующий макрос, но работает он крайне медлено при большом количестве строк(понятно, при прямом переборе то). Вообщем, как можно более эффективно и быстрее это сделать? Код:
i = 1 |
Aizec, ВПР?
|
Цитата:
|
ВПР - это функция, точно не помню работает ли она с разными книгами, но думаю да.
|
Strange_V Спасибо, но это не подходит - я ведь не знаю содержимого ячеек.
|
Если Вы не знаете содержимое ячеек, значит Вы не можете знать сколько раз может совпасть идентификатор из первого файла с перебираемыми идентификаторами во втором файле (если только идентификатор - это не числа по порядку). А у вас как только они совпадают (i,1).value = (j,1).value - происхлдит выход из цикла переборки и берётся следующий идентификатор из первого файла (i,1).
Кроме того у вас каждый раз при "exit Do" - рушится цикл переборки хотя текущий его счётчик "j" запоминается и далее уже при i = i+1 - снова создается новый Do ...Loop c запомненным "j", плюс ещё каждый раз происходит сравнение с "непустым" значением - проверка на конец списка. Попробуйте вот так: Код:
S1=Workbooks(file2).Worksheets("List").Cells(1, 1).currentregion.rows.count |
azbest Спасибо.
И у меня еще один вопрос возник: как импортировать в Excel не весь текстовый файл, а только текст заключенный в кавычки ""? Потом его еще надо будет после перевода обратно вставить. |
Извините, в этом помочь не могу. :drug:
|
Спасибо всем!!!!!!!!!!!!!!!
Все работает просто потрясающе!!!!!!!!!!!!!!!!!!!! |
Добрый день.
Помогите пожалуйста. Вопрос такой: Есть Книга в Ecxel, в ней 3 листа... 1-й лист - опросник; 2-ой лист - обрабатывает данные опроса, 3-й должен содержать в себе (по строкам) ФИО из 1-ого листа и данные из 2-ого листа. Должно быть опрошено 60 чел. и соответственно на 3-ем листе должна появиться таблица из 60 строк с ФИО и данными опроса по каждому. На 1-ом листе имеется кнопка Сохранить, после ввода данных каждым участником нажатие этой кнопки должно приводить к перемещению данных относящихся к данному участнику опроса в таблицу на 3-ем листе, а опросник приводиться в исходный вид (очищаться). Основной вопрос в следующем, как добиться того, чтобы данные о каждом следующем участнике записывались в следующую строку. Советам по другим моментам грамотного написания данного макроса буду рада. Заранее спасибо:-) |
Цитата:
|
Доброго времени суток всем. Помогите пожалуйста.
Требуется каждую ячейку выделенного блока скопировать на отдельный лист книги. т.е. одная ячейка- один лист. Примерно вот так. Саша- ячейка на лист1 Петя-ячейка на лист2 Миша-ячейка на лист3 и.т.д. Заранее спасибо Доброго времени суток всем. Помогите пожалуйста. Требуется каждую ячейку выделенного блока скопировать на отдельный лист книги. т.е. одная ячейка- один лист. Примерно вот так. Саша- ячейка на лист1 Петя-ячейка на лист2 Миша-ячейка на лист3 и.т.д. Заранее спасибо. |
vik,
Код:
Sub CellsCopy() |
Pliomera,
Спасибо!!!!! То что надо! |
Пожалуйста помогите.
Нужен макрос для Excel, чтоб в документе в каждой заполненной ячейке содержимое брал в одинарные кавычки и перед началом ставил пробел, пример : пробел'0000' Буду очень признателен всем кто посодействует! |
MR.TOR, ячейки должны задаваться или же просто нужен обход всех ячеек листа? Как пример - для диапазона в 500 строк и 500 столбцов:
Код:
Sub Макрос1() |
Delirium спаибо Вам большое. Очень сильно выручили! Этот макрос для Excel, это то что мне нужно для моей роботы. Большое человеческое спасибо!
|
MR.TOR, всегда рады помочь :)
|
Помогите пожалуйста написать макрос. Мне нужно что бы из всех книг Excel удалялись все строки в которых первый столбец содержит МИ ( например МИ №1 или МИ №3 или МИ25), причем такие строки идут вперемешку с тем что надо оставить(а это все остальное).
Например Х| A | B | 1| МИ 10 | 25 | 2| РФ | 100 | В данном примере нужно чтобы удалилась первая строка, а вторая осталась Вот что я на ваял Код:
Sub MySub() |
Большой Кол, всего навсего использовали не тот цикл, потому и не удаляло. Рабочий код:
Код:
Dim x As Worksheet |
ребята программисты, помогите плиз, нужно в книге выделить цветом на 2-х листах ячейки с одинаковыми записями (я выделил их вручную как бы я хотел что б это делалось). А еще лучше чтоб отобранные данніе сопоставлялись в отдельнои листе. Помогите с макросом. Заранее благодарен
Прилагаю файл (записей много потому он большой). |
BonoU2, по каким полям проводить сверку? В выделенном примере на листе выделена запись с номером 001602. На первом листе 2 строки с таким номером.
|
сравнения с листа 803 - ТОЛЬКО по столбцам e,f и листа Новичівська тоже ТОЛЬКО столбцы e,f , но при етом мне надо результат (я сделал вручную) как на листе1 - в виде столбцов, возможно так? заранее благодарен. (прикрепил переделланый чучуть)
|
Вложений: 1
Макрос запускается по сочетанию клавиш Ctrl+E. После отработки выводит сообщение Done и открывается результативный лист.
В архиве 2 файла, один в формате Excel 2003, другой - в формате Excel 2007. Они идентичны. |
Delirium огромное спасибо, а как сравнить только по столбцам f ? пожалуйста дайте цикл макроса ибо как мне использовать на других файлах?
|
BonoU2, открываем Excel, жмем Alt+F11, открывается окно макросов, переходим на вкладку Modules - там и будет исходный текст нашего макроса. Ниже приведен его текст:
Код:
' Код:
If Sheets("803").Cells(i, 5) = Sheets("Новичівська").Cells(j, 5) And Sheets("803").Cells(i, 6) = Sheets("Новичівська").Cells(j, 6) Для использования в других файлах: ОТкрываем документ, идем Сервис-Макросы - Начать запись. Перед началом записи выбираем сочетание на клавиатуре для запуска. Начинаем запись и тут же останавливаем. Запускаем редактор (Alr+F11) и вставляем наш код. Следует учесть, что в макросе идет привязка к номерам столбцов, поэтому, если структура документа другая, то необходимо будет предварительно подправить код. |
Delirium Извените что надоедаю.вроде бы переделал так ка Вы говорили но что-то у меня не идет, останавливается, посмотрите пожалуйста вложение, я в коде переименовал листы и только по F сравниваю, правильно ли я сделал? и в дальнейшем если я просто в етот файл буду вставлять другие значения соответственно в лист 1 и 2 будет ли работать код? Заранее благодарен
|
BonoU2, код необходимо вставить не в "Эта книга", а в Module1, так, чтобы код был между Sub и End Sub. Затем идем Сервис-макрос-безопасность - выбираем наш макрос и назначаем ему клавишу или просто жмем Выполнить.
|
Люди, натолкните на мысль, как сделать.
В таблице есть строки, где данные забиты в два уровня: "275,83 40,66" Вот так, но это не объединеные ячейки. Одна ячейка. Мне надо из таких строк сделать две, разделив данные. Т.е. из этого: ![]() Должно получиться это: ![]() В ячейке что бы написать второй строкой жмем ALT+Enter - это что перевод каретки называется? По нему отслеживать? |
Цитата:
|
Delirium за Макрос вЕликое спасибо, все работает ка Вы говорили!
Меня тоже интересует как автоматом сделать то что вынес на обговор surgutfred о переводах каретки, иногда такое тоже нужно... И у меня еще вопрос (извените что надоедаю, файл (вложение) с одинаковыми столбцами в листах : Вовківецька-25, Вербовецька-99, Новичівська-116. Нужно на лист ЗАГАЛЬНА скопировать все данные с етих листо, то есть не делать копирование данных вручную ( у меня таких листов будет много и данные постоянно добавляются), хочу заметить что шапка на всех листах одинакова что б при автомат. копировании она не повторялась в листе ЗАГАЛЬНА. ??? |
...и еще такой вопрос, у меня вместо подщета формул в екселе 2003 отображаются сами формулы, то есть =СУММ(D34:D58) , а должно считать, не подскажмте как исправить???
|
Цитата:
Цитата:
|
BonoU2, так этот файл ничем не отличается от того, что я делал ранее для вас. Надо только поменять условия на номера столбцов, по которым искать совпадения и дописать столбцы, которые надо копировать.
|
Вложений: 1
Delirium так там ниче сравнивать не нужно, нужно чтоб результат вышел вот такой (вложение, лист ЗАГАЛЬНА) и все???
|
конструкция IF Else
примерно так это должно выглядеть Код:
Sub такая-то () (если необходимо привязать к событию, то там сложнее, и все-же) конкретней и я пример кода дам, на примере легче разобраться... читайте справку если займетесь всерьез, советую найти учебник Уокенбаха - он очнь доступно на примере Excel вводит в VBA |
Прошу помощи, ибо в VBA к сожалению почти не понимаю.
Смысл проблемы вот в чем: из сторонней программы я передаю в excel файл, в котором числа и даты сохранены как текст. Найдено решение в виде Sub В_Число() With ActiveSheet.UsedRange .Replace ",", "." arr = .Value .NumberFormat = "General" .Value = arr End With End Sub Проблема в другом, как сделать настройку, вывести это все в виде значка на панель в Excele, подключить, проверять нет ли такой установленной уже и максимально упростить для подключения другими пользователями. Плз, помогите. Макросы пробовал записывать - выходит ерунда. |
BURJ, назначьте макрос (программу) кнопке. И версию Office озвучьте, пожалуйста.
|
Цитата:
|
okshef, все назначил, это все понятно. КАК АВТОМАТИЗИРОВАТЬ процесс назначения этой кнопки? Т е создать такую надстройку которая при добавлении все делала.
ЗЫ. 2000 |
Цитата:
|
кострукция
цикл Do while (сам определись до какого момента выполнять) конструкция if - Else (проверишь пуста или нет такая-то Range, Offset - сместишься) н\п Код:
Sub First () |
RUVATA, к чему ваше последнее сообщение, дублирующее 69 сообщение ? Если предлагаете решение проблемы, озвучивайте хотя бы вкратце просьбы, иначе непонятно, к чему относить текст.
|
извиняюсь... :o
э-т ответ на #10... я че-т проглазел, что тут ужо 8 страниц... гость недавний... уж прощайте |
Время: 03:33. |
Время: 03:33.
© OSzone.net 2001-