Подскажите что не так в коде 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 конечно
Причина обращения: