Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.10.2007, 16:54   #1
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию Скопировать строку, содержащую активную ячейку.

НАДО Сабж! Как правильно будет звучать эта строчка?
Если в двух словах, то
Cells.Find......................... .....нашел нужную мне ячейку, т.е курсор на ней стоит. теперь мне нужно скопировать строчку, содержащую эту ячейку.(точнее даже надо будет скопировать несколько строчек ниже заданной тоже, но это уже не суть вопроса)

я так понимаю что сначала надо задать диапазон для копирования
потом ввести i J которые будут координатами активной ячейки(т.к я не знаю как подругому выцепить координаты активной ячейки и потом их применить, естественно просто числа я подставить немогу. т.к каждый раз это будут разные ячейки...), и от этого уже запускать цикл....

iLastRow = Application.WorksheetFunction.Count A(ws.Range("A:A"))
jLastColumn = Application.WorksheetFunction.Count A(ws.Range("A:A"))
For i = ActiveCell.Row To iLastRow Step 1
Next i
For j = ActiveCell.Column To jLastColumn
Next j
Rows(i, j).Select - вот тут должна быть строчка копирования.....

в каком месте я лох?
ICQ:203884299

Последний раз редактировалось Iren; 08.10.2007 в 16:57.
Iren вне форума
Старый 08.10.2007, 17:39   #2
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Может я не очень хорошо понял вопрос... вот так у мя копируется 5-я строчка

Код:
Sub Макрос1()
Dim i&
    i = 5
    Rows(i).Copy
End Sub
А что значит Rows (i, j) ? Может вы путаете с Cells(i, j)?
Rows - ряд может быть от 1 до 65536 (Office 2003) и второго аргумета, вроде, у ряда нет, а вот у ячейки есть Cells(ряд, столбец).
Pavel55 вне форума
Старый 09.10.2007, 08:35   #3
madmot
Форумчанин
 
Регистрация: 04.09.2007
Сообщений: 155
По умолчанию

Sub CelectAndCopyRange()
Dim strSelectTop As String, strSelectBottom As String
'адрес выделенной (найденной) ячеки
strSelectTop = ActiveCell.Address
'адрес ячеки на две строки ниже и на две колонки левее
strSelectBottom = ActiveCell.Offset(2, 2).Address
'само копирование
Range(strSelectTop & ":" & strSelectBottom).Copy
End Sub
madmot вне форума
Старый 09.10.2007, 12:45   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Offset(2, 2).Address не всегда возвратит, цитирую "адрес ячеки на две строки ниже и на две колонки левее", например, если активной "вдруг" окажется ячейка "IV65536" (XL2000), то ...

Кроме того, свойство Offset учитывает об'единённые ячейки, т.е. если активной будет, например, ячейка "C3" и эта ячейка будет об'единена с другими, для примера, пусть это будет диапазон "С3:E5", то если верить словам предыдущего оратора - адрес смещённой ячейки будет "E5", однако, на самом деле - адрес конечно будет "G7"

Поэтому, если говорить о ячейке, "смещённой" на две строки вниз и два столбца влево, то более уместно говорить о любом из двух нижеприведённых вариантов :

Код:
iAddress = Range("C3")(3, 3).Address
iAddress = Range("C3").Item(3, 3).Address
iAddress = Range("C3").Cells(3, 3).Address
Более того, весь вышеопубликованный макрос можно заменить одной единственной строкой, учитвая, при этом, что копировать часть об'единённых ячеек невозможно (впрочем, если параметры форматирования не важны, то от копирования можно и избавиться, т.е. Range("G15:I17").Value = Range("C3").Resize(3, 3).Value)

Код:
Range("C3").Resize(3, 3).Copy 'ActiveCell.Resize()
pashulka вне форума
Старый 09.10.2007, 14:42   #5
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Pavel55 Посмотреть сообщение
Может я не очень хорошо понял вопрос... вот так у мя копируется 5-я строчка
Код:
Sub Макрос1()
Dim i&
    i = 5
    Rows(i).Copy
End Sub
А что значит Rows (i, j) ? Может вы путаете с Cells(i, j)?
Rows - ряд может быть от 1 до 65536 (Office 2003) и второго аргумета, вроде, у ряда нет, а вот у ячейки есть Cells(ряд, столбец).
Pavel55, вот вы указываете i=5 а как же быт ьмне с таком случае, у меня же координаты отсутствуют. т.к известно что данная ячейка является активной.
Rows и cells я конечно спутала.. но все равно итог не меняется от этого...
ICQ:203884299
Iren вне форума
Старый 09.10.2007, 14:52   #6
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию

Цитата:
Сообщение от madmot Посмотреть сообщение
Sub CelectAndCopyRange()
Dim strSelectTop As String, strSelectBottom As String
'адрес выделенной (найденной) ячеки
strSelectTop = ActiveCell.Address
'адрес ячеки на две строки ниже и на две колонки левее
strSelectBottom = ActiveCell.Offset(2, 2).Address
'само копирование
Range(strSelectTop & ":" & strSelectBottom).Copy
End Sub
Это решение определенно подходит но есть уточнение
возможно ли strSelectBottom приравнять к результатом второго поиска. всвязи с моим ламерством спрашиваю, мне надо задать критерий поиска чтобы после первой найденной ячейки которая стала активной в том же столбце F(он будет неизменным) искалась первая ячейка с пустым значением, это и будет strSelectBottom, посколько ваше предложенное ( strSelectBottom = ActiveCell.Offset(2, 2).Address)совершенно мне неподходит, т.к я незнаю сколько строк каждый раз будет копироваться, колличетсво будет разным
ICQ:203884299

Последний раз редактировалось Iren; 09.10.2007 в 15:30.
Iren вне форума
Старый 09.10.2007, 15:09   #7
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

Хм. ну. какая разница ) я же просто пример вам дал ) Не нравится вам i=5, давайте напишу так )

Код:
Sub Макрос1()
Dim i&
    i = ActiveCell.Column 'номер столбца активной ячейки
    Rows(i).Copy
End Sub
Pavel55 вне форума
Старый 09.10.2007, 15:23   #8
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Pavel55 Посмотреть сообщение
Хм. ну. какая разница ) я же просто пример вам дал ) Не нравится вам i=5, давайте напишу так )

Код:
Sub Макрос1()
Dim i&
    i = ActiveCell.Column 'номер столбца активной ячейки
    Rows(i).Copy
End Sub
во клева так попробую. ибо если бы мне мозгов хватило я сама доперла бы что надо туда вписать а так неделю мучаюсь...спасибо!
ICQ:203884299
Iren вне форума
Старый 09.10.2007, 15:35   #9
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию

2madmot
Код:
Windows("PriceRSI.xls").Activate
    Sheets("Price RSI").Select
        Cells.Find(What:="сканеры", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Select
        ActiveCell.Offset(1, 5).Select
до сюда все работает как надо а вот дальше....чтотонетак......

Код:
    Dim strSelectTop As String, strSelectBottom As String
        strSelectTop = ActiveCell.Address
        strSelectBottom = Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate
        Range(strSelectTop & ":" & strSelectBottom).Copy
ругается на последнюю строчку.....он наверное непонимает что именно надо выделить.. а надо выделить строки с
strSelectTop по strSelectBottom (можно невключая последнюю)
ICQ:203884299

Последний раз редактировалось Iren; 10.10.2007 в 11:01.
Iren вне форума
Старый 09.10.2007, 17:29   #10
Iren
Пользователь
 
Регистрация: 08.10.2007
Сообщений: 15
По умолчанию

Вопрос снят! если что вот полный код того что я хотела(ну малоли кому)
Код:
Sub принтеры()
Windows("PriceRSI.xls").Activate
    Sheets("Price RSI").Select
        Cells.Find(What:="принтеры", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Select
        ActiveCell.Offset(1, 5).Select
        i = ActiveCell.Row
        Sheets("Price RSI").Select
        Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False).Select
        j = ActiveCell.Row
       Rows(i & ":" & j).Select
    Selection.Copy
    Windows("Прайс_СТ.xls").Activate
    Sheets("Принтеры").Select
    Rows("2:2").Select
    ActiveSheet.Paste
ICQ:203884299

Последний раз редактировалось Iren; 10.10.2007 в 11:00.
Iren вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скопировать в буфер обмена Dj_smart JavaScript, Ajax 8 15.05.2008 19:16
Help (Составить запись, содержащую сведения о сдаче группой студентов экзамена) Forro Паскаль, Turbo Pascal, PascalABC.NET 2 08.01.2008 12:15
Перенос содержимого грида в активную базу SpiDer87 БД в Delphi 13 24.12.2007 11:30
как скопировать файл Scorpeon Общие вопросы Delphi 1 19.04.2007 13:45
как скопировать? zetrix Microsoft Office Excel 0 30.10.2006 18:52