Строки и столбцы

Программирование на Visual Basic for Applications
alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Строки и столбцы

Сообщение alleonid » 14.09.2005 (Ср) 8:51

Написал функцию для Excel.
Вопрос...
Как определить число строк и число столбцов по выделению (убрать лишние аргументы?)

Function ДВИНТ(Массив_данных, Аргумент_по_вертикали, Аргумент_по_горизонтали, Число_строк, Число_столбцов)
' Двойная интерполяция таблицы, занесенной в Рабочую Книгу
' (первые строка и столбец выделенного массива данных содержат аргументы
' табулированной функции в возрастающем свержу вниз и слева направо порядке;
' верхний левый элемент - нуль

Dim Массив()
ReDim Массив(1 To Число_строк, 1 To Число_столбцов)
For i = 1 To Число_строк
For j = 1 To Число_столбцов
Массив(i, j) = WorksheetFunction.Index(Массив_данных, i, j)

Next j
Next i

i = 1
j = 1

Do
x1 = Массив(i, 1)
x2 = Массив(i + 1, 1)
i = i + 1
Loop Until Аргумент_по_вертикали >= x1 And Аргумент_по_вертикали <= x2

Do
y1 = Массив(1, j)
y2 = Массив(1, j + 1)
j = j + 1
Loop Until Аргумент_по_горизонтали >= y1 And Аргумент_по_горизонтали <= y2

i = i - 1
j = j - 1


a1 = Массив(i, j)
a2 = Массив(i, j + 1)
a3 = Массив(i + 1, j)
a4 = Массив(i + 1, j + 1)


res1 = a1 + (a3 - a1) * (Аргумент_по_вертикали - x1) / (x2 - x1)
res2 = a2 + (a4 - a2) * (Аргумент_по_вертикали - x1) / (x2 - x1)
ДВИНТ = res1 + (res2 - res1) * (Аргумент_по_горизонтали - y1) / (y2 - y1)
End Function

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

Сообщение uhm » 14.09.2005 (Ср) 9:01

Если у тебя первый аргумент - это несколько ячеек, а не одна, тогда ты можешь обращаться к Массив_данных.Rows.Count и Массив_данных.Columns.Count. По хорошему, нужно еще проверять, является ли диапазон связным (Массив_данных.Areas.Count <=1).
Быть... или не быть. Вот. В чём вопрос?

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 14.09.2005 (Ср) 9:05

тактактактактак...
Слушай uhm голубчик а поподробнее можешь?
Можешь вставить мне код.?


uhm писал(а):Если у тебя первый аргумент - это несколько ячеек, а не одна, тогда ты можешь обращаться к Массив_данных.Rows.Count и Массив_данных.Columns.Count. По хорошему, нужно еще проверять, является ли диапазон связным (Массив_данных.Areas.Count <=1).

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

Сообщение uhm » 14.09.2005 (Ср) 10:14

Убери из аргументов функции Число_строк и Число_столбцов, а в первых строках функции напиши

Код: Выделить всё
Число_строк = Массив_данных.Rows.Count
Число_столбцов = Массив_данных.Columns.Count



Дальше без изменений. Надеюсь, заработает :)
Быть... или не быть. Вот. В чём вопрос?

alleonid
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 122
Зарегистрирован: 14.07.2005 (Чт) 7:01

Сообщение alleonid » 14.09.2005 (Ср) 10:30

Большое спасибо.
Все работает, просто замечательно.

uhm писал(а):Число_строк = Массив_данных.Rows.Count
Число_столбцов = Массив_данных.Columns.Count


Вернуться в VBA

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

Сейчас этот форум просматривают: Mail.ru [бот] и гости: 63

    TopList