Подскажите что не так в коде VBA в Excel

Function USER1(cell As Range)
Dim CellValue As Range
CellValue = Worksheets("Лист1").Range("A1:M24").Value
'MsgBox CellValue
'Debug.Print CellValue
USER1 = CellValue
End Function

Очень нужно из функции с ячейками работать. А не хочет программа с такой функцией работать и все.

причем в окне быстрого запуска код Worksheets("Лист3").Range("A1:M24") = Worksheets("Лист1").Range("A1:M24").Value работает, но нужно чтобы то же самое делалось из функции.

[Удален]
eugene771 >>:
Function USER1(cell As Range)
Dim CellValue As Range
CellValue = Worksheets("Лист1").Range("A1:M24").Value
'MsgBox CellValue
'Debug.Print CellValue
USER1 = CellValue
End Function

Очень нужно из функции с ячейками работать. А не хочет программа с такой функцией работать и все.

причем в окне быстрого запуска код Worksheets("Лист3").Range("A1:M24") = Worksheets("Лист1").Range("A1:M24").Value работает, но нужно чтобы то же самое делалось из функции.

У Вас случайно в ячейке не котировка из мт4?

laanaa0708 >>:

У Вас случайно в ячейке не котировка из мт4?

У меня работа с таблицей котировок из квика, да вот только из функции с одной ячейкой работать получается а сразу со всей таблицей нет. А вот из окна быстрого запуска все проходит нормально.

А вы попробуйте использовать вместо Range() Cells()
eugene771 писал(а) >>
Dim CellValue As Range
CellValue = Worksheets("Лист1").Range("A1:M24").Value

А что, по Вашему мнению, должно присвоиться переменной CellValue? Какое из 312 значений?

Worksheets("Лист3").Range("A1:M24") = Worksheets("Лист1").Range("A1:M24").Value

312 значений Листа 1 копируются в 312 ячеек Листа 3. Все корректно.

Вам, видимо, необходимо написать 2 воложенных цикла по строкам+по столбцам. А относительно Range или Cells - как Вам будет удобнее (естественно Cells, хотя кто знает :) - в цикле по буквам русского алфавита может быть своя прелесть :) ) формировать номер ячейки.

SergNF >>:

А что, по Вашему мнению, должно присвоиться переменной CellValue? Какое из 312 значений?

312 значений Листа 1 копируются в 312 ячеек Листа 3. Все корректно.

Вам, видимо, необходимо написать 2 воложенных цикла по строкам+по столбцам. А относительно Range или Cells - как Вам будет удобнее (естественно Cells, хотя кто знает :) - в цикле по буквам русского алфавита может быть своя прелесть :) ) формировать номер ячейки.


xrust
писал(а) >>
А вы попробуйте использовать вместо Range() Cells()

Не подходит здесь Cells, вот код улучшил но не работает пока:

Function USER1(C As Range)
Set CellValue = Worksheets("Лист3").Range("A1:M24")
CellValue = Worksheets("Лист1").Range("A1:M24").Value
USER1 = CellValue
End Function


А здесь тоже вроде бы все корректно и при вводе аргумента функции выбираю диапозон A1:M24, а не хочет работать почему то.

Здесь без Calls не обойтись. Нужно не диапазон весь швырять в одну переменную, а поячеячно (каждую ячейку) переносить. Для этого необходимы вложенные цыклы. Посмотрите наглядный пример, как я работаю с ячейками и их обработкой: 'Сохраняйте и анализируйте параметры оптимизации в Excel'
EvgeTrofi >>:
Здесь без Calls не обойтись. Нужно не диапазон весь швырять в одну переменную, а поячеячно (каждую ячейку) переносить. Для этого необходимы вложенные цыклы. Посмотрите наглядный пример, как я работаю с ячейками и их обработкой: 'Сохраняйте и анализируйте параметры оптимизации в Excel'

А что это за функция Calls???

Читай справку. Там всё написано. Здесь можно русскую справку скачать: http://evs.ucoz.ru/load/4-1-0-12

EvgeTrofi >>:

Читай справку. Там всё написано. Здесь можно русскую справку скачать: http://evs.ucoz.ru/load/4-1-0-12


Ты наверное имел ввиду все таки Cells, потому что и в этом справочнике команда Calls нет.

да. прошу прощения. Cells конечно