Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Попытка присвоить значение ячейке в функции выдает #ЗНАЧ - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Попытка присвоить значение ячейке в функции выдает #ЗНАЧ
4007 Дата: Вторник, 17.09.2013, 20:12 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
Создаю пустую таблицу.
В VBA создаю модуль с единственной ф-цией:

[vba]
Код
Public Function MUSOR()
Range("A1") .Value = 222
MsgBox "111"
End Function
[/vba]

В ячейку A1 заношу 333
В ячейку A2 заношу =musor()

Вижу, что в ячейке А1 что было, то и осталось, Msgbox не сработал, в ячейке А2 - #ЗНАЧ
Стопорю в ф-ции на операторе Range("A1") .Value = 222
Спрашиваю в ImmediateWindow
[vba]
Код
? Range("A1") .Value
[/vba]
333

Где грабли? Голову сломал!
 
Ответить
СообщениеСоздаю пустую таблицу.
В VBA создаю модуль с единственной ф-цией:

[vba]
Код
Public Function MUSOR()
Range("A1") .Value = 222
MsgBox "111"
End Function
[/vba]

В ячейку A1 заношу 333
В ячейку A2 заношу =musor()

Вижу, что в ячейке А1 что было, то и осталось, Msgbox не сработал, в ячейке А2 - #ЗНАЧ
Стопорю в ф-ции на операторе Range("A1") .Value = 222
Спрашиваю в ImmediateWindow
[vba]
Код
? Range("A1") .Value
[/vba]
333

Где грабли? Голову сломал!

Автор - 4007
Дата добавления - 17.09.2013 в 20:12
KuklP Дата: Вторник, 17.09.2013, 21:35 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Где грабли?
Между стулом и монитором :D
Формула не может изменять другие ячейки. Она может только вернуть вычисленное значение в ячейку, где находится.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
Сообщение
Где грабли?
Между стулом и монитором :D
Формула не может изменять другие ячейки. Она может только вернуть вычисленное значение в ячейку, где находится.

Автор - KuklP
Дата добавления - 17.09.2013 в 21:35
4007 Дата: Вторник, 17.09.2013, 21:54 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
Хорошо.
А что сделать для того, чтобы во время при вычисления ф-ции в ячейке поменять значения в других ячейках, к-рые зависят от параметров этой ф-ции?
 
Ответить
СообщениеХорошо.
А что сделать для того, чтобы во время при вычисления ф-ции в ячейке поменять значения в других ячейках, к-рые зависят от параметров этой ф-ции?

Автор - 4007
Дата добавления - 17.09.2013 в 21:54
KuklP Дата: Вторник, 17.09.2013, 21:58 | Сообщение № 4
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Не понимаю Вашего вопроса. В Вашей функции нет никаких параметров и значения она не возвращает. Вы чего-то недоговариваете. Хотите помощи, выкладывайте пример в файле. Что есть и что хочу. Перед этим желательно прочитать Правила.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Вторник, 17.09.2013, 21:59
 
Ответить
СообщениеНе понимаю Вашего вопроса. В Вашей функции нет никаких параметров и значения она не возвращает. Вы чего-то недоговариваете. Хотите помощи, выкладывайте пример в файле. Что есть и что хочу. Перед этим желательно прочитать Правила.

Автор - KuklP
Дата добавления - 17.09.2013 в 21:58
4007 Дата: Вторник, 17.09.2013, 22:09 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 40% ±

Excel 2003
По жизни мне нужно:[vba]
Код
Public Function OPRED28(PROC, N_ROW)
' PROC - процент к текущим суммам по смете
' N_ROW - строка, где находится ячейка с ф-цией
' Сначала берем процент PROC от постоянного буфера и записываем в A и B в строку с вызовом ф-ции
' Сумму показывем как рез-т ячейки с вызовом ф-ции

Sheets(1).Range("D" & N_ROW).Value = Sheets(2).Range("A30") .Value * PROC / 100
Sheets(1).Range("E" & N_ROW).Value = Sheets(2).Range("B30") .Value * PROC / 100

OPRED28 = Sheets(1).Range("D" & N_ROW).Value + Sheets(1).Range("E" & N_ROW).Value

End Function
[/vba]Пример вызова этой ф-ции из ячейки:
Код
=OPRED28(3.1;ячейка("строка";H21))

Этот вызов с разными параметрами генерится в программе на ACCESS

Поскольку это заведомо неверно, то как написать верно?
 
Ответить
СообщениеПо жизни мне нужно:[vba]
Код
Public Function OPRED28(PROC, N_ROW)
' PROC - процент к текущим суммам по смете
' N_ROW - строка, где находится ячейка с ф-цией
' Сначала берем процент PROC от постоянного буфера и записываем в A и B в строку с вызовом ф-ции
' Сумму показывем как рез-т ячейки с вызовом ф-ции

Sheets(1).Range("D" & N_ROW).Value = Sheets(2).Range("A30") .Value * PROC / 100
Sheets(1).Range("E" & N_ROW).Value = Sheets(2).Range("B30") .Value * PROC / 100

OPRED28 = Sheets(1).Range("D" & N_ROW).Value + Sheets(1).Range("E" & N_ROW).Value

End Function
[/vba]Пример вызова этой ф-ции из ячейки:
Код
=OPRED28(3.1;ячейка("строка";H21))

Этот вызов с разными параметрами генерится в программе на ACCESS

Поскольку это заведомо неверно, то как написать верно?

Автор - 4007
Дата добавления - 17.09.2013 в 22:09
KuklP Дата: Вторник, 17.09.2013, 22:41 | Сообщение № 6
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Это по-Вашему файл-пример?
Не используйте функцию, для изменения других ячеек. Используйте макрос(Sub). А функцией вычисляйте, что нужно. Это все. Ухожу из темы.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеЭто по-Вашему файл-пример?
Не используйте функцию, для изменения других ячеек. Используйте макрос(Sub). А функцией вычисляйте, что нужно. Это все. Ухожу из темы.

Автор - KuklP
Дата добавления - 17.09.2013 в 22:41
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!