Вопрос "чайника" : VBA в Excell

Программирование на Visual Basic for Applications
Dmi3
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 28.06.2006 (Ср) 10:16
Откуда: Волгоград

Вопрос "чайника" : VBA в Excell

Сообщение Dmi3 » 28.06.2006 (Ср) 10:44

Прошу помощи в решении следующей задачи:
На листе ищем ячейку со значением "Конец" (Пусть она в B20)
Далее необходимо заполнить значения одинаковой формулой ("Формула") ячейки диапазона A1:X, где X это ячейка слева от "Итого" (Т.е. A20)
Сам додумал вот до чего :)

Dim s As String
Cells.Find(What:="Конец").Activate
s = ActiveCell.Offset(0, -1)
//Range("A8:s").Value = "Формула"//
Тут VBA меня посылает.... :)

Прошу сильно не ругаться т.к. это мой дебют

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 28.06.2006 (Ср) 10:50

Используй запись макроса, выполни все эти действия руками, а потом посмотри на код, сгенерированный в VBA. Там наверняка будет много лишнего, но, скорее всего, действия, необходимые тебе, тоже будут :)
Быть... или не быть. Вот. В чём вопрос?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Re: Вопрос "чайника" : VBA в Excell

Сообщение Nicky » 28.06.2006 (Ср) 10:57

Dmi3 писал(а):Прошу помощи в решении следующей задачи:
На листе ищем ячейку со значением "Конец" (Пусть она в B20)
Далее необходимо заполнить значения одинаковой формулой ("Формула") ячейки диапазона A1:X, где X это ячейка слева от "Итого" (Т.е. A20)
Сам додумал вот до чего :)

Dim s As String
Cells.Find(What:="Конец").Activate
s = ActiveCell.Offset(0, -1)
//Range("A8:s").Value = "Формула"//
Тут VBA меня посылает.... :)

Прошу сильно не ругаться т.к. это мой дебют

Код: Выделить всё
Range(cells(8,1),Cells.Find(What:="Конец").Offset(0, -1)).Value = "Формула"

Dmi3
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 28.06.2006 (Ср) 10:16
Откуда: Волгоград

Сообщение Dmi3 » 28.06.2006 (Ср) 11:14

uhm
Естественно, я так и пытался сделать...
не получилось т.к. нижняя ячейка диапазона всегда разная..
Сорри, если туплю.
В любом случае, спасибо!

Nicky
Как просто и красиво, спасибо огромное!

2 All
Ну а в моём примере где ошибка?
Блин и так и сяк пытался синтаксис править, всё равно ругается

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 28.06.2006 (Ср) 11:21

Dmi3 писал(а):2 All
Ну а в моём примере где ошибка?
Блин и так и сяк пытался синтаксис править, всё равно ругается

("A8:s") -> ("A8:" & s) - это не готовое решение, это - направление мысли

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 28.06.2006 (Ср) 11:26

Во-первых, при записи макроса ручками тоже можно искать слово "Конец".

Во-вторых, для определения "крайней" ячейки диапазона существуют специальные методы объекта Range: End(xlDown), End(xlToRight), либо для некоторых случаев SpecialCells (xlCellTypeLastCell). Возможно, для этой конкретной задачи они не подходят.

В-третьих, метод offset возвращает Range, а не String.

В-четвертых, даже если бы он возвращал String (т. е. если бы использовался метод Address), строка "A8:s" не превратилась бы магическим образом в нужную. s и "s" - абсолютно разные вещи.

Рекомендую почитать какой-нибудь учебник по программированию, гораздо проще будет потом.
Быть... или не быть. Вот. В чём вопрос?

Dmi3
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 28.06.2006 (Ср) 10:16
Откуда: Волгоград

Сообщение Dmi3 » 28.06.2006 (Ср) 11:41

Спасибо всем ещё раз!
Обязательно куплю учебник.
Если можете порекомендовать какой-то хороший учебник по VBA для Access и Excell буду очень признателен!


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 49

    TopList