Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Application-defined or object-defined error Добавлено: 26.08.04 20:57  

Автор вопроса:  Poli
Помогите, пожалйста исправить ошибку. Рунается на :
Range(Cells(g, 2), Cells(g, 3)).Copy Worksheets(1).Range(Cells(q, 5), Cells(q, 6))
                   Range(Cells(g, fc)).Copy Worksheets(1).Range(Cells(q, 7))

Копирую ячейки с одного листа(второго) в другой. Переменная g, q, fc - Integer. g = ActiveCell.Row Второго листа, For q = 3 To (w - a), где (w - a) - границы рассматриваемого диапазона в строка, fс - соответствующая колонка второго листа.

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 danik



Вопросов: 2
Ответов: 2
 Профиль | | #1 Добавлено: 26.08.04 21:32
попробуй что-то в этом роде
Sub two()
x = 1
q = 10
With Worksheets(1)
    .Range(.Cells(x, 1), .Cells(x, 5)).Copy
End With
With Worksheets(2)
    .Range(.Cells(q, 1), .Cells(q, 5)).Select
End With
Worksheets(2).Paste

Ответить

Номер ответа: 2
Автор ответа:
 Poli



Вопросов: 6
Ответов: 6
 Профиль | | #2 Добавлено: 26.08.04 23:29
не помогает =(

Пишу x = ActiveCell.Row
        For q = x To (w - a)
          Worksheets(1).Select
          Cells(q, 8).Select
          R = ActiveCell.Value
          Worksheets("кописорт";).Select
          Range(Cells(a, zc), Cells(w, zc)).Select
          'MsgBox a
          'MsgBox zc
          'MsgBox w
          'MsgBox zc
          Set l = Range(Cells(a, zc), Cells(w, zc)).Find(What:=R, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns)
                If Not (l Is Nothing) Then
                   l.Select
                   g = ActiveCell.Row
                   With Worksheets("кописорт";)
                      .Range(.Cells(g, 2), .Cells(g, 3)).Copy
                        End With
                        With Worksheets(1)
                        .Range(.Cells(q, 5), .Cells(q, 6)).Select End With
                        Worksheets(1).Paste
                  
                        With Worksheets("кописорт";)
                        .Range(.Cells(g, fc)).Copy
                        End With
                        With Worksheets(1)
                        .Range(.Cells(q, 7)).Select
                        End With
                        Worksheets(1).Paste
End If
Next



Пишет мне ошибку "Метод Select из класса Range завершен не верно" на строке .Range(.Cells(q, 5), .Cells(q, 6)).Select
а на строке .Range(.Cells(g, fc)).Copy первая ошибка

Ответить

Номер ответа: 3
Автор ответа:
 danik



Вопросов: 2
Ответов: 2
 Профиль | | #3 Добавлено: 27.08.04 11:09
опиши словами условие задачи и что надо сделать.
так легче будет понять.

Ответить

Номер ответа: 4
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #4
Добавлено: 27.08.04 17:25
Если тебе надо копировать только значения (а не форматы, формулы, примечания и т.д.), то делай в цикле что-то типа

ThisWorkbook.Sheets("Лист1";).Cells(i,j).Value = ThisWorkbook.Sheets("Лист2";).Cells(i+m,j-n).Value

Работать так будет быстрее! А еще быстрее, если перед запуском выключаются автоматические вычисления Excel, а по окончании вычисления включаются:

Application.Calculation = xlCalculationManual
...
...
Application.Calculation = xlCalculationAutomatic, а то при каждом твоем шаге он будет пересчитывать суммы, средние и т.п. - все зависимые ячейки..

Ответить

Номер ответа: 5
Автор ответа:
 Dimakart



Вопросов: 2
Ответов: 12
 Профиль | | #5 Добавлено: 27.08.04 18:49
Да действительно описать бы словами задачу. Я подозреваю что реализовать это можно намного проще.

Ответить

Номер ответа: 6
Автор ответа:
 Poli



Вопросов: 6
Ответов: 6
 Профиль | | #6 Добавлено: 29.08.04 15:05
Условие изначально такое. Берется активная книга. В ней 3 листа. На 3-ем листе я нахожу необходимый для обработки диапазон, ссответственно номера всех начальных и конечных ячеек через Сeels(i,j). На первом листе у меня есть точно такой же по колличеству столбцов диапазон. В нем есть столбец со значениями как и на третьем листе, но в другом порядке. Мне надо взять значение с первого листа, найти в третьем и из соответствующей строки, где находится найденное значение, скопировать 2 соответствующих столбца. Их координаты тоже найдены. И так весь столбец. Изначально я хотела сделать это как описано выше. Но меня попросили теперь написать через формулу ПРОСМОТР. Здесь столкнулась с той же ошибкой. И проблемма в том, что у меня все значения ячеек выделены не через обсолютные адреса, а через Cells(a,fa) и эти a,fa находятся в самом начале. Можно ли через формулу выразить это с помощью объявления ячеек через R1C1, тогда меня интересует синтаксис =)

Ответить

Номер ответа: 7
Автор ответа:
 Poli



Вопросов: 6
Ответов: 6
 Профиль | | #7 Добавлено: 29.08.04 20:11
Ругается вот на такую строчку
Range(Cells(q, 7)).FormulaR1C1 = "=LOOKUP(R" & q & "C8;'copysort'!R" & a & "C" & zc & ":R" & w & "C" & zc & ";'copysort'!R" & a & "C" & fc & ":R" & w & "C" & fc & ";)"

Ответить

Номер ответа: 8
Автор ответа:
 Poli



Вопросов: 6
Ответов: 6
 Профиль | | #8 Добавлено: 29.08.04 20:30
На такой вариант не ругается
ActiveCell.FormulaR1C1 = "=LOOKUP(RC8,'copysort'!R11C8:R75C8,'copysort'!R11C7:R75C7)"

А вот как мне вместо числ поставить найденные параметры диапазона???

Ответить

Номер ответа: 9
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #9
Добавлено: 29.08.04 21:31
 .Range(.Cells(q, 5), .Cells(q, 6)).Select End With
 А это не опечатка?

 Может так?
 .Range(.Cells(q, 5), .Cells(q, 6)).Select
 End With

Ответить

Номер ответа: 10
Автор ответа:
 Dimakart



Вопросов: 2
Ответов: 12
 Профиль | | #10 Добавлено: 29.08.04 22:52
У меня вот так перестало ругаться и пошло.
Cells(q, 5).FormulaR1C1 = "=LOOKUP(R" & q & "C8,'copysort'!R" _
& a & "C" & zc & ":R" & w & "C" & zc & ",'copysort'!R" _
& a & "C" & fc & ":R" & w & "C" & fc & ";)"

Ответить

Номер ответа: 11
Автор ответа:
 Dimakart



Вопросов: 2
Ответов: 12
 Профиль | | #11 Добавлено: 29.08.04 23:10
запятая перед кописортом вместо точки с запятой

Ответить

Номер ответа: 12
Автор ответа:
 Dimakart



Вопросов: 2
Ответов: 12
 Профиль | | #12 Добавлено: 29.08.04 23:25
И если указывается одна ячейка Cells(q, 7) , то зачем Range(Cells(q, 7))

Ответить

Номер ответа: 13
Автор ответа:
 Poli



Вопросов: 6
Ответов: 6
 Профиль | | #13 Добавлено: 29.08.04 23:26
Спасибо большущее!!! Все заработало =)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам