Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 29 мар 2024, 11:39

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Не могу присвоить формулу ячейке
СообщениеДобавлено: 24 июл 2015, 17:00 
Не в сети
Бывалый

Зарегистрирован: 19 июн 2015, 22:18
Сообщений: 114
Использую Visio c: 2013
Очков репутации: 21

Добавить очки репутацииУменьшить очки репутации
Код:
Public Sub aaa()
    Dim s As Shape
   
    Set s = ActiveDocument.Pages(1).Shapes(1)
   
    s.Cells("User.N1").Formula = "=IF(True,1,0)"
   
End Sub


Вылетает в ошибку!


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Не могу присвоить формулу ячейке
СообщениеДобавлено: 24 июл 2015, 17:16 
Не в сети
Бывалый

Зарегистрирован: 19 июн 2015, 22:18
Сообщений: 114
Использую Visio c: 2013
Очков репутации: 21

Добавить очки репутацииУменьшить очки репутации
Ура, нашел! Вспомнил я же уже мучился с этим в Excel.

Код:
Public Sub aaa()
    Dim s As Shape   
    Set s = ActiveDocument.Pages(1).Shapes(1)   
    Set c = s.Cells("User.N1")
    c.Formula = "=IF(True;1;0)"
End Sub


Все дело в разделителях в формуле IF. В Excel с ЕСЛИ такая же засада. Если ручками вводишь формулу, то разделитель ","
А если в макросе - ";"

Формула была сложнее: получилась вот такая:

Код:
"=IF(AND(FORMULAEXISTS(Prop.N1);LEN(Prop.N1)>0);SETF(GetRef(TheDoc!User.N1);Prop.N1);0)"


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Не могу присвоить формулу ячейке
СообщениеДобавлено: 24 июл 2015, 19:42 
Не в сети
Ветеран
Аватара пользователя

Зарегистрирован: 28 апр 2013, 14:03
Сообщений: 963
Откуда: Вена, Австрия
Использую Visio c: 1998
Очков репутации: 100614

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

Shape.Formula учитывает языкоыве настройки. У тебя наверное стоит русский, поэтому точка с запятой.
Чтобы работать в английской локали (независимо от пользовательских настроек или языка системы) в visio есть shape.FormulaU.

_________________
Полезные инструменты для создания диаграмм Visio:
https://unmanagedvisio.com/


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Не могу присвоить формулу ячейке
СообщениеДобавлено: 24 июл 2015, 19:45 
vin писал(а):
=IF(True,1,0)
а смысл какой в этой формуле?


Пожаловаться на это сообщение
Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Не могу присвоить формулу ячейке
СообщениеДобавлено: 24 июл 2015, 22:45 
Не в сети
Бывалый

Зарегистрирован: 19 июн 2015, 22:18
Сообщений: 114
Использую Visio c: 2013
Очков репутации: 21

Добавить очки репутацииУменьшить очки репутации
nbelyh писал(а):
Shape.Formula учитывает языкоыве настройки. У тебя наверное стоит русский, поэтому точка с запятой.
Чтобы работать в английской локали (независимо от пользовательских настроек или языка системы) в visio есть shape.FormulaU.

Спасибо, понял.
Код:
Public Sub aaa()
    Dim s As Shape
    Set s = ActiveDocument.Pages(1).Shapes(1)
    Set c = s.Cells("User.N1")
    c.FormulaU = "=IF(True,1,0)"
End Sub

Заработало.

Гость писал(а):
а смысл какой в этой формуле?

Смысла нет - это проба разделителей.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB