Даже Незнаю Как Это Назвать))

Программирование на Visual Basic for Applications
Zazamuh
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 18.01.2007 (Чт) 8:20

Даже Незнаю Как Это Назвать))

Сообщение Zazamuh » 18.01.2007 (Чт) 10:15

Добрый Вечер. Очень Нужна Помощь...Я Новичек В VB, Полазил По Форуму Нашел Много Полезного. Но Вот Что То Не Получается :( Есть Такая Задача:

Надо Чтобы При Запуске Макроса Добавлялась Строка И В Ячейке (Координаты Которой Я Задаю Относительно Активной Ячейки На Момент Запуска Макроса) Автоматически Получалась Формула С Новыми Координатами, Относительно Формулы В Ячейке На 1 Выше. Понимаю Что Запутал Но Может Вам Что Скажет Таой Оператор ( Selection.AutoFill Destination:=("A1":"A4"), Type:=xlFillDefault). Я Написал Вот Это:
Код: Выделить всё
Sub Макрос12()

Sub Макрос12()
Dim cur_range As Range
Dim NewRange As Range
           Set cur_range = Selection
                     cur_range.Select
    Selection.EntireRow.Insert
    Set cur_range = cur_range.Offset(-2, 7)
           cur_range.Activate
            Set NewRange = Range(cur_range, cur_range.Offset(1, 0)).Select
    Selection.AutoFill Destination:=NewRange, Type:=xlFillDefault
End Sub


Выдает Ошибку В Строке Selection.AutoFill Destination:=NewRange, Type:=xlFillDefault....Подскажите Что Не Так...Только Пожалуста "На Пальцах" :) Заранее Спасибо

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 18.01.2007 (Чт) 10:36

Формулы задавай в стиле R1C1, тогда это будет проще. И перестань каждое слово с заглавной буквы писать.
Lasciate ogni speranza, voi ch'entrate.

Krasnaja Shapka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 26.10.2006 (Чт) 12:13
Откуда: Киев

Сообщение Krasnaja Shapka » 18.01.2007 (Чт) 12:05

я например даже не понимаю как он у тебя до этого не ругается...

что это за масло маслянное:
Set cur_range = Selection
cur_range.Select
если cur_range это выделенное, то зачем его выделять заново?

вот тут еще:
Set NewRange = Range(cur_range, cur_range.Offset(1, 0)).Select
что значит переменная типа range = методу select???

ктоме того, если почитать внимательно хелп по AutoFill то:
Destination Required Range object. The cells to be filled. The destination must include the source range.


и еще внятно напиши что надо... что означает формула с новыми координатами? от ввода новых строк формулы не сбиваются...
Если ясность вашего объяснения исключает ложное толкование, все равно кто-то поймет вас неправильно.

Zazamuh
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 18.01.2007 (Чт) 8:20

Сообщение Zazamuh » 18.01.2007 (Чт) 14:56

Попробую обьяснить...допустим ячейка А1 содержит число 10, в ячейках B1, B2, B3 числа 1, 2, 3 соответственно. Я пишу формулу В Ячейке С1 " =$A$1+B1". Потом чтобы в ячейке С2 посчиталась формула "=$A$1+B2", я просто перетаскиваю за нижний правый угол ячейку С1 вниз. Вот именно этот шаг (автоматическое получение формулы в нижней ячейке) я и пытаюсь сделать макросом. R1C1 я пока не понял, скачал руководство буду читать. То что тафталогия это я из примера какого то в инете взял :oops: Про то что после range стоит select так я ненашел как может используется оператор ragne, поэтому тоже взял из примера. Буду Читать Про AutoFill. Но проблема в том что мне нужно этот макрос получить очень :( срочно. Подскажите как корректно мне написать операцию автоматического получения формулы. Заранее спасибо 8)

namomelkor
Начинающий
Начинающий
 
Сообщения: 10
Зарегистрирован: 18.01.2007 (Чт) 18:21

Сообщение namomelkor » 18.01.2007 (Чт) 18:52

Range("C1").AutoFill Destination:=Range("C1:C3")

Zazamuh
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 18.01.2007 (Чт) 8:20

Сообщение Zazamuh » 19.01.2007 (Пт) 1:20

Агромное спасибо! получилось! Теперь буду учит С 0 :) Вот что получилось:
Код: Выделить всё
Sub Макрос12()
'
' Макрос12 Макрос
' Макрос записан 10.01.2007 (Эцелоп)
'

Dim cur_range As Range
           Set cur_range = Selection
           cur_range.Select
    Selection.EntireRow.Insert
    Set cur_range = cur_range.Offset(-2, 7)
           cur_range.Activate
        Selection.AutoFill Destination:=Range(cur_range, cur_range.Offset(1, 0))
    Set cur_range = cur_range.Offset(2, -7)
    cur_range.Select
    Range(cur_range, cur_range.Offset(0, 6)).Select
    Selection.Copy Destination:=Range(cur_range.Offset(-1, 0), cur_range.Offset(-1, 6))
    Range(cur_range, cur_range.Offset(0, 6)).Select
    Selection.ClearContents
    cur_range.Select
End Sub


Может очень коряво, но работает)

P.S. Отличный Сайт! Оч! полезный.

Krasnaja Shapka
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 87
Зарегистрирован: 26.10.2006 (Чт) 12:13
Откуда: Киев

Сообщение Krasnaja Shapka » 19.01.2007 (Пт) 13:00

мало того что коряво... я просто даже слова такого не знаю настолько оно коряво... :D
Если ясность вашего объяснения исключает ложное толкование, все равно кто-то поймет вас неправильно.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 89

    TopList