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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 27.08.2007, 10:22   #1
SlimBr0ther
Пользователь
 
Регистрация: 23.07.2007
Сообщений: 19
Вопрос Не работает "уравнение" :(

Error 1004
Application-defined or object-defined error

Ругается на следующую строчку:

Worksheets("Общий").Range(Cells(13, 1), Cells(13, 9)) = Worksheets("4x16x4").Range(Cells(13 , 1), Cells(13, 9))

Что может быть? Уже голову сломал...

P.S. в справке указан пример:
Worksheets("Sheet1").Range(Cells(1, 1), Cells(5, 3)). _
Font.Italic = True

Меняю имя листа, но тоже ругается Как же так, даже пример из справки не работает!!!
Office 2002 - может поетому?

Последний раз редактировалось SlimBr0ther; 27.08.2007 в 10:44.
SlimBr0ther вне форума
Старый 27.08.2007, 10:43   #2
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

а если вот так ? )

Код:
Worksheets("4x16x4").Range("A13:I13").Copy Worksheets("Общий").Range("A13:I13")
Pavel55 вне форума
Старый 27.08.2007, 10:45   #3
SlimBr0ther
Пользователь
 
Регистрация: 23.07.2007
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Pavel55 Посмотреть сообщение
а если вот так ? )

Код:
Worksheets("4x16x4").Range("A13:I13").Copy Worksheets("Общий").Range("A13:I13")
это работает, но дело в том, что мне нужно в операторе Range использовать переменые, а в таком формате оного не получается
Или может я просто не знаю как?
Как-то можно использовать оператор Range примерно в следующем виде:
Код:
Начало = Cells(1, 1)
Конец = Cells(2,2)
Range("НАчало;Конец").ClearCcontents

Последний раз редактировалось SlimBr0ther; 27.08.2007 в 11:08.
SlimBr0ther вне форума
Старый 27.08.2007, 11:14   #4
Pavel55
Форумчанин
 
Регистрация: 21.08.2007
Сообщений: 292
По умолчанию

у мя тоже так не работает с Cells )

А вот так не пойдёт?

Код:
Sub Макрос2()
Dim FirstCol$, LastCol$, iRow&
    FirstCol = "A"
    LastCol = "I"
    iRow = 13
    Worksheets("4x16x4").Range(FirstCol & iRow & ":" & LastCol & iRow).Copy Worksheets("Общий").Range(FirstCol & iRow & ":" & LastCol & iRow)
End Sub
Pavel55 вне форума
Старый 27.08.2007, 11:22   #5
SlimBr0ther
Пользователь
 
Регистрация: 23.07.2007
Сообщений: 19
По умолчанию

Супер, щас попробую... думаю должно заработать

P.S. ДА, заработало... спасибо агромнейшее

Последний раз редактировалось SlimBr0ther; 27.08.2007 в 11:25.
SlimBr0ther вне форума
Старый 27.08.2007, 14:05   #6
infinitiv
Пользователь
 
Регистрация: 05.12.2006
Сообщений: 23
По умолчанию

Объект Range можно задать не только с помощью "A1:B1" и т. д. но и так: Range(Cells(1,1),Cells(2,1)), где указаны координаты левой верхней и правой нижней ячеек через прямое написание номеров строк и столбцов. В данном случае диапазон начинается с ячейки, находящейся на пересечении первой строки и первого столбца, а заканчивается ячейкой, находящейся на пересечении второй строки и первого столбца.
Номер строк и столбцов можно указать через числовые переменные.
infinitiv вне форума
Старый 27.08.2007, 20:16   #7
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Цитата:
Сообщение от SlimBr0ther
Как же так, даже пример из справки не работает!!!
Справка, всё-таки, существует не для бездумного копирования примеров, поэтому, если немного изучить об'ектную модель Excel, то станет очевидным, что Cells(13, 1) ссылается на ячейку активного листа, а стало быть конструкция : Worksheets("Sheet1").Range(Cells(1, 1), Cells(5, 3)) есть не что иное, как : ActiveWorkbook.Worksheets("Sheet1") .Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(5, 3))

Стало быть - вышеприведённый пример может работать только при условии, что в активной рабочей книге, в момент выполнения этой инструкции, активным будет рабочий лист с именем "Sheet1"

Что касается решений, то если не искать обходных путей, то с точки зрения об'ектной модели обсуждаемого приложения, наиболее правильным будет второй из нижеопубликованных вариантов решения.

Вариант I.

Код:
 iRow = 13
iMinColumn = 1
iMaxColumn = 9
iAddress = Range(Cells(iRow, iMinColumn), Cells(iRow, iMaxColumn)).Address
'Этот способ будет работать только при условии, что
'в момент выполнения этой инструкции - активным является лист, имеющий ячейки
 
Worksheets("Общий").Range(iAddress).Value = Worksheets("4x16x4").Range(iAddress).Value
Вариант II.
Код:
Dim iSource As Worksheet, iDestination As Worksheet
Set iSource = Worksheets("4x16x4")
Set iDestination = Worksheets("Общий")
 
iDestination.Range(iDestination.Cells(13, 1), iDestination.Cells(13, 9)).Value = _
iSource.Range(iSource.Cells(13, 1), iSource.Cells(13, 9)).Value ' и т.п.

Последний раз редактировалось pashulka; 27.08.2007 в 21:01.
pashulka вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Word 2003 не работает "Параметры" tatav Microsoft Office Word 4 01.04.2008 15:00
Работает ли при "SQL dialect 3" оператор DISTINCT? 3lander БД в Delphi 1 12.10.2007 00:21
не корректно работает функция "если" (+) zetrix Microsoft Office Excel 0 30.10.2006 19:19