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

Вход

Регистрация

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

 

= Мир MS Excel/Функция не пересчитывает. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Функция не пересчитывает. (Макросы/Sub)
Функция не пересчитывает.
Kobrasol Дата: Пятница, 19.09.2014, 03:39 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Добрый день! Не нашел решение своей проблеме. Может уже и обсуждалось.
Написал две простые функции:
[vba]
Код

Function objFileDate(n1)
'If Dir(n1) <> "" Then Range(n2) = FileDateTime(objFile)
If Dir(n1) = "" Then objFileDate = "не создан"
If Dir(n1) <> "" Then objFileDate = "создан"
End Function

Function DateFile(oFile As String)
If Dir(oFile) = "" Then DateFile = ""
If Dir(oFile) <> "" Then DateFile = FileDateTime(oFile)
End Function
[/vba]
На листе "Лист1" вписал вот такой код:
[vba]
Код

Private Sub Worksheet_Activate()
Calculate
End Sub
[/vba]
Проблема в том что если переключится между листами функции не пересчитываются.
Для проверки создал два файла на диске "C:\" "test1.txt" и "test2.txt".
Захожу на "лист2" переименовываю "test2.txt" на "test3.txt".
Перехожу на "лист1" значения во второй строке не изменились.
В чем может быть проблема? Или я не правильно функции написал?
К сообщению приложен файл: test_function.xlsm (13.9 Kb)
 
Ответить
СообщениеДобрый день! Не нашел решение своей проблеме. Может уже и обсуждалось.
Написал две простые функции:
[vba]
Код

Function objFileDate(n1)
'If Dir(n1) <> "" Then Range(n2) = FileDateTime(objFile)
If Dir(n1) = "" Then objFileDate = "не создан"
If Dir(n1) <> "" Then objFileDate = "создан"
End Function

Function DateFile(oFile As String)
If Dir(oFile) = "" Then DateFile = ""
If Dir(oFile) <> "" Then DateFile = FileDateTime(oFile)
End Function
[/vba]
На листе "Лист1" вписал вот такой код:
[vba]
Код

Private Sub Worksheet_Activate()
Calculate
End Sub
[/vba]
Проблема в том что если переключится между листами функции не пересчитываются.
Для проверки создал два файла на диске "C:\" "test1.txt" и "test2.txt".
Захожу на "лист2" переименовываю "test2.txt" на "test3.txt".
Перехожу на "лист1" значения во второй строке не изменились.
В чем может быть проблема? Или я не правильно функции написал?

Автор - Kobrasol
Дата добавления - 19.09.2014 в 03:39
gling Дата: Пятница, 19.09.2014, 07:42 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2519
Репутация: 674 ±
Замечаний: 0% ±

2010
Она и при F9 не пересчитывает


ЯД-41001506838083

Сообщение отредактировал gling - Пятница, 19.09.2014, 07:45
 
Ответить
СообщениеОна и при F9 не пересчитывает

Автор - gling
Дата добавления - 19.09.2014 в 07:42
Kobrasol Дата: Пятница, 19.09.2014, 08:51 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
Цитата
Она и при F9 не пересчитывает

Не пересчитывает. :(
 
Ответить
Сообщение
Цитата
Она и при F9 не пересчитывает

Не пересчитывает. :(

Автор - Kobrasol
Дата добавления - 19.09.2014 в 08:51
RAN Дата: Пятница, 19.09.2014, 09:31 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
[vba]
Код
Function objFileDate(n1)
Application.Volatile
'If Dir(n1) <> "" Then Range(n2) = FileDateTime(objFile)
If Dir(n1) = "" Then objFileDate = "не создан"
If Dir(n1) <> "" Then objFileDate = "создан"
End Function
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение[vba]
Код
Function objFileDate(n1)
Application.Volatile
'If Dir(n1) <> "" Then Range(n2) = FileDateTime(objFile)
If Dir(n1) = "" Then objFileDate = "не создан"
If Dir(n1) <> "" Then objFileDate = "создан"
End Function
[/vba]

Автор - RAN
Дата добавления - 19.09.2014 в 09:31
_Boroda_ Дата: Пятница, 19.09.2014, 09:43 | Сообщение № 5
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Допишите в код функции
[vba]
Код
Application.Volatile
[/vba]
или код не менять, а одну из функций написать примерно как в приложенном файле
Код
=objFileDate("C:\"&A1)&ТЕКСТ(ТДАТА();";;;")
К сообщению приложен файл: test_function_1.xlsm (15.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДопишите в код функции
[vba]
Код
Application.Volatile
[/vba]
или код не менять, а одну из функций написать примерно как в приложенном файле
Код
=objFileDate("C:\"&A1)&ТЕКСТ(ТДАТА();";;;")

Автор - _Boroda_
Дата добавления - 19.09.2014 в 09:43
Kobrasol Дата: Пятница, 19.09.2014, 10:11 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2003
RAN, _Boroda_ спасибо работает. Думаю тему можно закрыть. hands
 
Ответить
СообщениеRAN, _Boroda_ спасибо работает. Думаю тему можно закрыть. hands

Автор - Kobrasol
Дата добавления - 19.09.2014 в 10:11
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Функция не пересчитывает. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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