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

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 12:42

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


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


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

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 09:54 
Не в сети

Зарегистрирован: 26 авг 2021, 11:52
Сообщений: 13
Использую Visio c: 2020
Уровнь квалификации: новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Добрый день!

До моих начинающих осваивать VBA мозгов не доходит :wall: :wall: :wall: , почему у одних пользователей кол-во шейпов считается корректно, а у других билиберда какая-то.

Помогите, пожалуйста, оптимизировать код :oops:

Код:
Option Explicit
Sub Buba_summ()
Dim shp As Visio.Shape
Dim s As String
Dim P1 As Integer
Dim P2 As Integer
Dim P3 As Integer
For Each shp In Application.ActivePage.Shapes
On Error Resume Next
s = shp.Cells("Prop.Name").ResultStr(visUnitsString)
If s = "P1" Then
            P1 = P1 + 1
        ElseIf s = "P2" Then
            P2 = P2 + 1
        ElseIf s = "P3" Then
            P3 = P3 + 1
       Else
        End If
Next shp
ActivePage.Shapes("SUMMP1").Cells("Prop.Summ").FormulaForce = P1
ActivePage.Shapes("SummP2").Cells("Prop.Summ").FormulaForce = P2
ActivePage.Shapes("SummP3").Cells("Prop.Summ").FormulaForce = P3
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 10:36 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
mallie4ka писал(а):
До моих начинающих осваивать VBA мозгов не доходит , почему у одних пользователей кол-во шейпов считается корректно, а у других билиберда какая-то.
а что именно не работает ?
а с какой целью вы сравниваете строковую переменную s c переменными P1, P2, P3 (объявлены как целые), которые вы оборачиваете в кавычки ?

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 10:49 
Не в сети

Зарегистрирован: 26 авг 2021, 11:52
Сообщений: 13
Использую Visio c: 2020
Уровнь квалификации: новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Цель: Подсчёт кол-ва определенных типов шейпов (например оборудование 1, 2, 3 и т.д) на листе в примере их указано 3, в полном коде 28 :roll:
Ошибка: Считает кол-во некорректно (но не всегда и не у всех пользователей)

S - содержит тип шейпа, по данному параметру перебираются шейпы на листе и считается их кол-во.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 10:50 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
с целью все понятно. наверно вы не успели прочесть мое дополнение
Surrogate в сообщении #16189 писал(а):
нашел статью VisioGuy 15 летней давности Legend Shapes, там все расписано.
не пробовали, перетащить фигуру из любого стенсила на фигуру Легенда? необходимо подтвердить добавление фигуры в условные обозначения и будет вам счастье без ShapeSheet и кода!!!

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 10:57 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
mallie4ka писал(а):
на листе в примере их указано 3, в полном коде 28
думаю будет не лишним, в начале выполнения кода сбрасывать счетчик
Код:
P1 = 0
P2 = 0
P3 = 0

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 11:01 
Не в сети

Зарегистрирован: 26 авг 2021, 11:52
Сообщений: 13
Использую Visio c: 2020
Уровнь квалификации: новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Ушла пробовать...Спасибо :oops:


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 11:54 
Не в сети

Зарегистрирован: 26 авг 2021, 11:52
Сообщений: 13
Использую Visio c: 2020
Уровнь квалификации: новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
думаю будет не лишним, в начале выполнения кода сбрасывать счетчик
Проблему это не полечило, но спасибо за совет


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 12:01 
Не в сети
Content manager
Content manager
Аватара пользователя

Зарегистрирован: 02 окт 2009, 01:01
Сообщений: 5043
Откуда: оттуда
Использую Visio c: 1998
Отрасль: Интеграция системных интеграторов
Должность: Дизайнер по оформлению документации
Уровнь квалификации: Форматирование документов MS Word
mallie4ka писал(а):
Проблему это не полечило
Изображение
а это хоть попробовали ?

_________________
База знаний ShapeSheet
Мой Youtube-канал @surrogate-tm
Мои трафареты


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 12:02 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Код в принципе кривой из-за того, что игнорируются ошибки.
Какое значение получит s, если в шейпе отсутствует Prop.Name? А Вы его все равно обрабатываете.
Имеет смысл сначала проверить наличие строки Prop.Name и принимать s только при ее наличии.


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 12:18 
Не в сети
Administrator

Зарегистрирован: 30 авг 2009, 11:02
Сообщений: 2253
Очков репутации: 100626

Добавить очки репутацииУменьшить очки репутации
Попробуйте вот такой код. Он должен работать лучше
Код:
Option Explicit
Sub Buba_summ()
Dim shp As Visio.Shape
Dim s As String
Dim P1 As Integer
Dim P2 As Integer
Dim P3 As Integer
For Each shp In Application.ActivePage.Shapes
    'On Error Resume Next
    If shp.CellExists("Prop.Name", 0) Then
   
    s = shp.Cells("Prop.Name").ResultStr(visUnitsString)
        If s = "P1" Then
                P1 = P1 + 1
            ElseIf s = "P2" Then
                P2 = P2 + 1
            ElseIf s = "P3" Then
                P3 = P3 + 1
        Else
        End If
    End If
Next shp
Debug.Print P1, P2, P3
'ActivePage.Shapes("SUMMP1").Cells("Prop.Summ").FormulaForce = P1
'ActivePage.Shapes("SummP2").Cells("Prop.Summ").FormulaForce = P2
'ActivePage.Shapes("SummP3").Cells("Prop.Summ").FormulaForce = P3
End Sub


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 12:30 
Не в сети

Зарегистрирован: 26 авг 2021, 11:52
Сообщений: 13
Использую Visio c: 2020
Уровнь квалификации: новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Surrogate писал(а):
а это хоть попробовали ?
Да, испробовала, считает, но при его использовании снова придётся возиться с импортом и внешним видом самой легенды :(


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: помогите исправить код
СообщениеДобавлено: 07 сен 2021, 12:31 
Не в сети

Зарегистрирован: 26 авг 2021, 11:52
Сообщений: 13
Использую Visio c: 2020
Уровнь квалификации: новичок
Очков репутации: 0

Добавить очки репутацииУменьшить очки репутации
Tumanov писал(а):
Попробуйте вот такой код. Он должен работать лучше
СПАСИБИЩЕ, особенно за объяснение в чем косяк !!!! Полечилась беда)))


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

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



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

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


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

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