Знатокам синтаксиса формул Excel VBA. Как написать формулу

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Аватара пользователя
VictorM
Сообщения: 787
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

31 мар 2008, 00:43

Уважаемые знатоки, есть вопрос:
сижу вот маюсь, не получается, аж заело. :confused:
(Речь о модуле VBA).
Есть ячейка, пусть С3, от нее Offset(0,sdv). Где sdv - моя переменная, пусть пока - 2.

Код: Выделить всё

Range("C3").Offset(0, sdv).Select'Select для наглядности
т.е. все просто и все работает.
А теперь я хочу выделить диапазон (столбец) до строки, ну хотя бы 100. И дальше, что я не пробовал писать - сплошная ошибка.

Код: Выделить всё

Range(("C3").Offset(0, sdv),("C100").Offset(0, sdv)).Select'приблизительно так
понимаю, что где-то ошибка в синтаксисе, но не могу въехать.
Я конечно решил эту проблемку другим путем, но сидит в голове эта формула - на дает покоя.
Подскажите, как ее нужно было написать?
Спасибо.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Pavel55
Сообщения: 405
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

31 мар 2008, 00:53

Код: Выделить всё

Sub Макрос1()
Dim sdv As Long
    sdv = 2
    Range("C3").Offset(0, sdv).Resize(98, 1).Select
End Sub
P.S. но лучше не выделять (делать без метода Select)
Аватара пользователя
VictorM
Сообщения: 787
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

31 мар 2008, 01:01

Pavel55, спасибо!!! :)
А я чё только не пробовал, а о Resize не подумал. Видать заклинило :mad:
P.S. но лучше не выделять (делать без метода Select)
да я его и не выделяю, а сразу копирую Copy, а Select, как я говорил - для наглядности (пока).
Еще раз, спасибо.
Удачи!
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
VictorM
Сообщения: 787
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

09 апр 2008, 11:50

Pavel55, а можно еще вопрос?
У меня в проекте куча конструкций такого типа:

Код: Выделить всё

    With ActiveCell 'считывание данных
    ДатРас = .Offset(0, -14)
    НРКод = .Offset(0, -13)
    Фам = .Offset(0, -12)
    Адрес = .Offset(0, -11)
    Тел = .Offset(0, -10)
    НРТов = .Offset(0, -8)
    НРСум = .Offset(0, -1)
    Дисконт = .Offset(0, 1)
    Заметки = .Offset(0, 2)
    End With
а помещаю данные я вот так:

Код: Выделить всё

ActiveCell.Offset(iзап, 0).Resize(, 9) = Array(ДатРас, НРКод, Фам, Адрес, Тел, НРТов, НРСум, Дисконт, Заметки)
Так вот вопрос - можно ли первую кострукцию привести к подобному виду?
Оно то работает, но хочется "покрасивше" :)
Спасибо.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Pavel55
Сообщения: 405
Зарегистрирован: 20 окт 2006, 11:40
Откуда: Moscow

09 апр 2008, 21:19

я, к сожалению, не знаю (
Аватара пользователя
Aent
Сообщения: 1108
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

09 апр 2008, 23:42

ViktorM, а ДатРас ...Заметки это что: переменные или имена полей формы ?
Как осуществляется иниуиализация этих объектов перед тем как вы применяете =Array(...)?
Аватара пользователя
VictorM
Сообщения: 787
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

10 апр 2008, 00:33

Aent, ДатРас ...Заметки это переменные, которым присваиваютя значения ячеек рабочего листа. Просто я привел только часть кода. Та часть, где они объявляются здесь не присутствует.
Как осуществляется иниуиализация этих объектов перед тем как вы применяете =Array(...)?
? :confused:
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Аватара пользователя
Aent
Сообщения: 1108
Зарегистрирован: 01 окт 2006, 14:52
Откуда: Saratov,Russia
Контактная информация:

10 апр 2008, 10:42

Описка. Имелась в виду инициализация. Но раз это переменные, которым присваиваютя значения ячеек рабочего листа - вопрос отпал.
Teslenko_EA
Сообщения: 520
Зарегистрирован: 04 фев 2007, 18:37
Откуда: Сургут
Контактная информация:

10 апр 2008, 17:53

Здравствуйте VictorM.
Если переменные собрать в массив, то возможно подобная конструкция Вам подойдет

Код: Выделить всё

Sub readData() 
Const sArr = "-14^-13^-12^-11^-10^-8^-1^1^2"
Dim sVar() As String, i%
sVar = Split(sArr, "^")
For i = 0 To UBound(sVar)
    sVar(i) = ActiveCell.Offset(0, sVar(i))
Next
End Sub
Евгений.
Аватара пользователя
VictorM
Сообщения: 787
Зарегистрирован: 23 окт 2006, 01:44
Откуда: Lugansk, Ukraine
Контактная информация:

10 апр 2008, 20:51

Здравствуйте Teslenko_EA, спасибо за код, попробую разобраться.
"Дайте людям рыбы, и вы накормите их на весь день;
научите их ловить рыбу - и вы накормите их на всю жизнь".
Ответить