Вам ведь на форуме дали правильный ответ. Если что-то не устраивает, то это значит надо точнее формулировать вопрос, о чем неоднократно было сказано. Если бы вели себя более уважительно, то получили бы нужный результат. Слова "пожалуйста", "спасибо", "извините" очень помогают при подобном общении.
Там как то меня не правильно поняли, уважаю всех кто обратил внимание на мой вопрос и благодарю всех тех кто попробовал ответить но у них получилось не то... разве не так?
Первый ответ я сейчас не могу посмотреть (нет Экселя под рукой). Во втором ответе на форуме приведена программа, которая копирует в буфер строки, содержающие ячейки с заданным словом. И это можно считать правильным ответом на ваш вопрос, если соответствующим образом понимать формулировку этого вопроса.
Если вы считаете, что "получилось не то", то это значит, что вы другим образом понимаете формулировку своего вопроса. Но это не значит, что другие люди будут понимать его точно так же. Поэтому все и повторяют вам, что вопрос надо формулировать более детально. Чтобы избежать различий в его понимании. Полезно бывает привести пример.
Например, что вы понимаете под строкой? В том ответе, который был дан, под строкой понимается строка таблицы, то есть горизонтальная последовательность ячеек таблицы (текущего листа). Что значит "строка с нужным словом"?
Претензии к вам и возникают из-за того, что вы не потрудились более подробно изложить ваш вопрос, и сейчас вдруг оказывается, что "получилось не то". В итоге, это привело к тому, что люди бесполезно потратили свое время на написание ненужной программы, только из-за того, что вы не пояснили детали вашего вопроса.
Вот не поленился и специально проверил. У меня эта программа работает, как ожидалось. Выделяет и копирует в буфер строки с заданным словом. В оригинале там в качестве слова указано "Вася". Чтобы строка выделялась надо, чтобы какая-то ячейка содержало в точности такое же слово, как указано в программе, и ничего кроме этого слова. И кстати в программе лучше сделать исправление. Вместо строки
ra.Copy
можно написать
If Not ra Is Nothing Then ra.Copy Else MsgBox "Ничего не найдено!" End If
тогда не будет вылетать, если ничего не найдено, выдавать сообщение об этом.
В разделе разработчик создается новый макрос "НайтиСкопировать", вставляете туда "Sub НайтиСкопировать() Dim ra As Range For Each iCell In ActiveSheet.UsedRange.Cells If iCell.Value = "involight" Then If ra Is Nothing Then Set ra = iCell.EntireRow Else Set ra = Union(ra, iCell.EntireRow) End If Next iCell
ra.Copy End Sub" Сохранить его, за тем выполнить, ведь так?
Скорее всего, это означает, что заданное слово не находится. Выше я писал, чтобы заменить строку ra.Copy на фрагмент программы. Тогда вместо этой ошибки должно появляться окно с сообщений, что ничего не найдено. И попробуйте другое слово или число, возможно, в ячейке есть еще пробелы, тогда слово не будет находиться.
Вот посмотрите, код : Sub НайтиСкопировать() Dim ra As Range For Each iCell In ActiveSheet.UsedRange.Cells If iCell.Value = "Pioneer" Then If ra Is Nothing Then Set ra = iCell.EntireRow Else Set ra = Union(ra, iCell.EntireRow) End If Next iCell
If Not ra Is Nothing Then ra.Copy Else MsgBox "Не найдено!" End If End Sub
В пустой ячейке напишите Pioneer и проверьте, находит или нет. Если не находит, то в программе замените "Pioneer" на "1" и в пустую ячейку таблицы напишите число 1. Проверьте. Потом попробуйте поменять iCell.Value на iCell.Text
Сейчас опять нет возможности в Экселе открыть. Поэтому сейчас посмотреть не могу. Но вообще советую написать на том форуме, что все заработало, и поблагодарить за помощь. После этого попробуйте задать вопрос там на форуме, что может ограничивать работу макроса в этом файле. И может быть стоить там же извиниться за несколько агрессивный стиль общения. Если бы почаще добавляли слова "пожалуйста" и "спасибо", то там бы к вам совсем другим образом отнеслись, и не понадобилось бы приносить извинения. Попробуйте прочитать еще раз свой разговор там, поставив себя на место участников форума.
Для работы с макросами нужно включить панель разработчика. http://office.microsoft.com/ru-ru/excel-help/HA101819080.aspx
Первоначально будет проще, если Вы позволите Экселю записать Ваши действия. Для этого, на панели разработчика нужно нажать кнопку запись макроса, дать ему имя и запустить запись. По окончании действий нажать кнопку остановить запись.
Затем нажать кнопку "Макросы" и нажать кнопку "Изменить" по отношению к записанному Вами макросу.
Вы попадёте в редактор Visual Basic, в котором будут записаны Ваши действия на языке Visual Basic. Определите, какая строчка за какое действие отвечает, подправьте нужным образом и макрос можно запускать.
Visual Basic позволяет делать много вещей, на изучение которых могут уйти многие месяцы. Полностью язык называется Visual Basic for Applications, под этим именем по нему можно задавать вопросы на программистских сайтах.
Вот тут (http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=list&FID=1) Вам обязательно помогут с макросом, если Вы разместите пост в соответствии с правилами, т.е. не так, как сейчас. Сейчас слишком мало исходных данных.
no subject
Date: 2014-03-13 05:25 pm (UTC)Прямо сейчас совсем нет времени, но если вдруг никто не напишет, то я могу вспомнить былое :)
no subject
Date: 2014-03-13 05:28 pm (UTC)Кажется вы единственный.
Порекомендуйте где можно об этом почитать?
no subject
Date: 2014-03-13 05:31 pm (UTC)no subject
Date: 2014-03-18 09:37 am (UTC)no subject
Date: 2014-03-18 10:50 pm (UTC)no subject
Date: 2014-03-19 07:21 am (UTC)no subject
Date: 2014-03-19 12:54 pm (UTC)Во втором ответе на форуме приведена программа, которая копирует в буфер строки, содержающие ячейки с заданным словом. И это можно считать правильным ответом на ваш вопрос, если соответствующим образом понимать формулировку этого вопроса.
Если вы считаете, что "получилось не то", то это значит, что вы другим образом понимаете формулировку своего вопроса. Но это не значит, что другие люди будут понимать его точно так же. Поэтому все и повторяют вам, что вопрос надо формулировать более детально. Чтобы избежать различий в его понимании. Полезно бывает привести пример.
Например, что вы понимаете под строкой? В том ответе, который был дан, под строкой понимается строка таблицы, то есть горизонтальная последовательность ячеек таблицы (текущего листа). Что значит "строка с нужным словом"?
Претензии к вам и возникают из-за того, что вы не потрудились более подробно изложить ваш вопрос, и сейчас вдруг оказывается, что "получилось не то". В итоге, это привело к тому, что люди бесполезно потратили свое время на написание ненужной программы, только из-за того, что вы не пояснили детали вашего вопроса.
no subject
Date: 2014-03-19 03:47 pm (UTC)no subject
Date: 2014-03-19 04:50 pm (UTC)Выделяет и копирует в буфер строки с заданным словом. В оригинале там в качестве слова указано "Вася". Чтобы строка выделялась надо, чтобы какая-то ячейка содержало в точности такое же слово, как указано в программе, и ничего кроме этого слова.
И кстати в программе лучше сделать исправление.
Вместо строки
ra.Copy
можно написать
If Not ra Is Nothing Then
ra.Copy
Else
MsgBox "Ничего не найдено!"
End If
тогда не будет вылетать, если ничего не найдено, выдавать сообщение об этом.
no subject
Date: 2014-03-19 04:53 pm (UTC)no subject
Date: 2014-03-19 05:08 pm (UTC)no subject
Date: 2014-03-19 05:25 pm (UTC)Dim ra As Range
For Each iCell In ActiveSheet.UsedRange.Cells
If iCell.Value = "involight" Then
If ra Is Nothing Then Set ra = iCell.EntireRow Else Set ra = Union(ra, iCell.EntireRow)
End If
Next iCell
ra.Copy
End Sub"
Сохранить его, за тем выполнить, ведь так?
no subject
Date: 2014-03-19 05:37 pm (UTC)Что происходит при выполнении?
no subject
Date: 2014-03-19 05:42 pm (UTC)no subject
Date: 2014-03-19 05:58 pm (UTC)Выше я писал, чтобы заменить строку ra.Copy на фрагмент программы.
Тогда вместо этой ошибки должно появляться окно с сообщений, что ничего не найдено.
И попробуйте другое слово или число, возможно, в ячейке есть еще пробелы, тогда слово не будет находиться.
no subject
Date: 2014-03-19 06:28 pm (UTC)Sub НайтиСкопировать()
Dim ra As Range
For Each iCell In ActiveSheet.UsedRange.Cells
If iCell.Value = "Pioneer" Then
If ra Is Nothing Then Set ra = iCell.EntireRow Else Set ra = Union(ra, iCell.EntireRow)
End If
Next iCell
If Not ra Is Nothing Then
ra.Copy
Else
MsgBox "Не найдено!"
End If
End Sub
"Не найдено!" только получается.
Есть ли другой вариант?
no subject
Date: 2014-03-19 06:52 pm (UTC)Если не находит, то в программе замените "Pioneer" на "1" и в пустую ячейку таблицы напишите число 1. Проверьте.
Потом попробуйте поменять iCell.Value на iCell.Text
no subject
Date: 2014-03-19 07:21 pm (UTC)В новом файле-примере, только.
Что может ограничивать работу этого макроса в файле?
В этом (http://www.invask.ru/downloads/Rozn_prise.xls)
Почему не могу в нем нормально работать?
no subject
Date: 2014-03-19 08:05 pm (UTC)Но вообще советую написать на том форуме, что все заработало, и поблагодарить за помощь.
После этого попробуйте задать вопрос там на форуме, что может ограничивать работу макроса в этом файле.
И может быть стоить там же извиниться за несколько агрессивный стиль общения. Если бы почаще добавляли слова "пожалуйста" и "спасибо", то там бы к вам совсем другим образом отнеслись, и не понадобилось бы приносить извинения. Попробуйте прочитать еще раз свой разговор там, поставив себя на место участников форума.
no subject
Date: 2014-03-20 03:41 am (UTC)no subject
Date: 2014-03-13 05:39 pm (UTC)Первоначально будет проще, если Вы позволите Экселю записать Ваши действия. Для этого, на панели разработчика нужно нажать кнопку запись макроса, дать ему имя и запустить запись. По окончании действий нажать кнопку остановить запись.
Затем нажать кнопку "Макросы" и нажать кнопку "Изменить" по отношению к записанному Вами макросу.
Вы попадёте в редактор Visual Basic, в котором будут записаны Ваши действия на языке Visual Basic. Определите, какая строчка за какое действие отвечает, подправьте нужным образом и макрос можно запускать.
Visual Basic позволяет делать много вещей, на изучение которых могут уйти многие месяцы. Полностью язык называется Visual Basic for Applications, под этим именем по нему можно задавать вопросы на программистских сайтах.
no subject
Date: 2014-03-14 08:12 am (UTC)Сейчас слишком мало исходных данных.
no subject
Date: 2014-03-14 08:14 am (UTC)no subject
Date: 2014-03-14 08:23 am (UTC)Вот нафига Вам строки в буфер? Вы же явно их потом куда-то вставлять будете. Может сразу вставить?
Нужное слово находится в одном столбце или в разных? Если в одном, то макрос не нужен, достаточно автофильтра.
Ячейка содержит и другие слова? Или нужное слово одно в ячейке? От этого зависит как организовывать поиск/автофильтр.
Версия эксель/офиса? Что работает в одной версии, может не работать в другой.
Эти вопросы я могу продолжать бесконечно.
no subject
Date: 2014-03-18 09:36 am (UTC)