Как сделать сайт:
  HTML
  JavaScript
  PHP
  CMS
Microsoft Office:
  Word
  Excel
  VBA
Просто о сложном
Список форумов on-line-teaching.com on-line-teaching.com
Онлайн курсы MS Office: Word, Excell. Как сделать сайт: HTML, JS, PHP
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

VBA и Exel

 
Начать новую тему   Ответить на тему    Список форумов on-line-teaching.com -> Excel: общие вопросы
Предыдущая тема :: Следующая тема  
Автор Сообщение
velas
Prizivnik - draftee
Prizivnik - draftee


Зарегистрирован: 07.04.2009
Сообщения: 5

СообщениеДобавлено: Вт Апр 07, 2009 2:34 pm    Заголовок сообщения: VBA и Exel Ответить с цитатой

Подскажите пожалуйста. Есть пользовательская функция
MainFunction(A1:A10 as ???) as variant
dim Col() as variant
dim result as double
.
.
.
MainFunction = result
end function
Как из заданного диапазона (не выделенного) передать значения в массив Col
Зараннее благодарен
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Евгений
Prizivnik - draftee
Prizivnik - draftee


Зарегистрирован: 18.03.2009
Сообщения: 6
Откуда: Москва

СообщениеДобавлено: Ср Апр 29, 2009 8:57 am    Заголовок сообщения: Ответить с цитатой

не совсем ясен вопрос. Исходя из приведенного кода, у вас используется динамический массив, а диапазон значений - столбец. Так? Тогда для случая А1:А10 получим
Код:

Dim Col(), i%
For i = 1 To 10
ReDim Preserve Col(i)
Col(i) = Range("A" & i).Value
Next i
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
velas
Prizivnik - draftee
Prizivnik - draftee


Зарегистрирован: 07.04.2009
Сообщения: 5

СообщениеДобавлено: Пн Май 04, 2009 8:28 am    Заголовок сообщения: Ответить с цитатой

Спасибо за ответ, задачку решил вот так, но чтобы совсем стала универсальной (региональные стандарты и т.д.) необходимо вскрыть родную библиотеку макросов EXEl или писать собственные DLL

Attribute VB_Name = "Geo"
Option Explicit
Option Base 1
'Поиск максимального по модулю значения в массиве
Function FindAbsMax(Rng As Range) As Variant
Const Zerro As Integer = 0
Const One As Integer = 1
Const NillStr As String = ""
Dim iCol As Long
Dim iRow As Long
Dim CountRowData As Long
Dim CountColData As Long
Dim Data() As Variant
Dim Result As Double
Dim iRowResult As Long
Dim iColResult As Long

'RangeTxt = Rng.Address(rowAbsolute:=False, ColumnAbsolute:=False)
CountRowData = Rng.Rows.Count
CountColData = Rng.Columns.Count
If (CountColData = 1) And (CountRowData = 1) Then
FindAbsMax = "Err Is not Array"
Exit Function
End If
ReDim Data(CountRowData, CountColData)
Data = Rng.Value
iColResult = One
iRowResult = One
Result = Zerro
For iRow = One To CountRowData
For iCol = One To CountColData
If IsNumeric(Data(iRow, iCol)) And (Data(iRow, One) <> NillStr) Then
If Abs(Data(iRow, iCol)) >= Result Then
Result = Abs(Data(iRow, iCol))
iRowResult = iRow
iColResult = iCol
End If
End If
Next iCol
Next iRow
FindAbsMax = Data(iRowResult, iColResult)
End Function
'Поиск минимального по модулю значения в массиве
Function FindAbsMin(Rng As Range) As Variant
Const Zerro As Integer = 0
Const One As Integer = 1
Const NillStr As String = ""
Dim iCol As Long
Dim iRow As Long
Dim CountRowData As Long
Dim CountColData As Long
Dim Data() As Variant
Dim Result As Double
Dim iRowResult As Long
Dim iColResult As Long

'RangeTxt = Rng.Address(rowAbsolute:=False, ColumnAbsolute:=False)
CountRowData = Rng.Rows.Count
CountColData = Rng.Columns.Count
If (CountColData = 1) And (CountRowData = 1) Then
FindAbsMin = "Err Is not Array"
Exit Function
End If
ReDim Data(CountRowData, CountColData)
Data = Rng.Value
iColResult = One
iRowResult = One
Result = Zerro
For iRow = One To CountRowData
For iCol = One To CountColData
If IsNumeric(Data(iRow, iCol)) And (Data(iRow, One) <> NillStr) Then
If Abs(Data(iRow, iCol)) <= Result Then
Result = Abs(Data(iRow, iCol))
iRowResult = iRow
iColResult = iCol
End If
End If
Next iCol
Next iRow
FindAbsMin = Data(iRowResult, iColResult)
End Function
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Женя Львов
Prizivnik - draftee
Prizivnik - draftee


Зарегистрирован: 20.08.2009
Сообщения: 2
Откуда: Украина

СообщениеДобавлено: Чт Авг 20, 2009 10:38 am    Заголовок сообщения: Ответить с цитатой

ПОМОГИТЕ ПОЖАЛУЙСТА ПО VBA.
В ЯЧЕЙКУ ЕКСЕЛЬ НУЖНО ВНЕСТИ ТАКУЮ ФУНКЦИЮ через макрос:
=СМЕТА("701 [,1112]";A;B)
Когда я ее вношу, то она записивается как строка и необходимо щелкать по ячейке. как сделать, чтоб ячейка воспринимала её как формулу???????? спасибо!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов on-line-teaching.com -> Excel: общие вопросы Часовой пояс: GMT + 2
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group
Русская поддержка phpBB