На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 67418628
9978
Hosts 3609021
2058
Visitors 53571168
9638

95


Главная / Поддержка / Форумы / Макро

Форум «Макро»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация


Тема: «Не получается соединить воедино макрос , Собранный из нескольких работающих макросов макрос не работает » в форуме: Макро   Просмотров: 1274
 
Марк Рябов
Заглянувший
 
Всего сообщений: 4
Дата регистрации: 06.05.2023
Создано: 06.05.2023 22:17:30
 
 
Здравствуйте, пишу макрос для курсового проекта и столкнулся с такой проблемой, что нужно создать столбец назовём его "deltaU" куда будут фиксироваться разность между, значением U до инъекции в узел Q и после. При создании такого столбца он просто не отображается ни в настройках параметров форм, ни в выборе колонок, но при удалении условия "if spNode.Cols.Find(ResultNa­me) < 0 Then" показывается окно ошибки, что такой столбец уже существует.

P.S. блок-схему и код прилагаю

Код

Set spNode=Rastr.Tables("node­")

Set sptip=spNode.Cols("tip")
Set spQg=spNode.Cols("qg")
Set spUhom=spNode.Cols("uhom"­)
Set spVras=spNode.Cols("vras"­)
'Set spNy=spNode.Cols("ny")
ResultName= "deltaU"
Set spXL=CreateObject("Excel.­Application")
spXL.SheetsInNewWorkbook=­1
spXL.Workbooks.Add
spXL.Worksheets(1).Name  = "Узлы"
spXL.Visible=true

if spNode.Cols.Find(ResultNa­me) < 0 Then
  spNode.Cols.Add ResultName, PR_REAL
  end if
  for i=0 to spNode.Size - 1
    if sptip.Z(i)=1 Then
       if spUhom.Z(i)=110 Then
       'Rastr.PrintP ("Узел не оп и не баланси ") & spNy.Z(i)
       beforU=spVras.Z(i)
       spQg.Z(i)=spQg.Z(i)+100
       Rastr.rgm("p")
       afterU=spVras.Z(i)
       dU=afterU-beforU
       spQg.Z(i)=spQg.Z(i)-100
       'Rastr.PrintP dU
       elseif spUhom.Z(i)=220 Then
       'Rastr.PrintP ("Узел не оп и не баланси ") & spNy.Z(i)
       beforU=spVras.Z(i)
       spQg.Z(i)=spQg.Z(i)+400
       Rastr.rgm("p")
       afterU=spVras.Z(i)
       dU=afterU-beforU
       spQg.Z(i)=spQg.Z(i)-400
       'Rastr.PrintP dU
       End if
    End if
       next
  
for col=0 to spNode.Cols.Count-1
spXL.Worksheets(1).Cells(­1,col+1)=spNode.Cols(col)­.Prop(FL_ZAG)
for row=0 to spNode.Size - 1
spXL.Worksheets(1).Cells(­2+row,col+1)=spNode.Cols(­col).Z(row)
next
next


[img]https://wampi.ru/image/RK­3TE44[/img]

Ещё выдаёт такую "некритичную ошибку"
[img]https://wampi.ru/image/RK­wevv0[/img]
 
Профиль
Наверх
Nick_A
Посетитель
 
Всего сообщений: 45
Дата регистрации: 30.09.2021
Создано: 10.05.2023 12:10:35
 
 
Здравствуйте.

1. Новая колонка у меня появилась в выборе колонок в таблице узлы, т.е. ее можно добавить на экран. Попробуйте после работы макроса закрыть таблицу и открыть ее заново.

2. Ошибка действительно выскакивает. Лень было ее детектить. Связано наверное с доступом к ячейке по несуществующему индексу. Вместо этого я бы рекомендовал использовать экспорт в csv файл, тогда экспортироваться будут только необходимые колонки, а не вообще все. В доках есть соответствующая команда.

3. Учите тот факт, что после перебора последнего узла (пусть будет узел 220 кВ), вы добавили 400 Мвар, рассчитали режим, обновили переменную dU (именно обновили, а не добавили например в массив значение), потом отняли 400 Мвар. Но заново режим не пересчитали. Поэтому при экспорте у вас в эксель идет несбалансированный режим. Все параметры посчитаны для нагрузки q+400 в этом последнем узле, но нагрузка указана q.

Надеюсь, помог немного, удачи Вам)
 
Профиль
Наверх
Станислав Богданов
Модератор
 
Всего сообщений: 61
Дата регистрации: 11.10.2012
Создано: 10.05.2023 12:33:00
 
 
Ошибка возникает из-за обращения к техническому столбцу.

Не стоит использовать перебор всех столбцов по индексу (в таблице
Узлы 100+ столбцов), используйте только необходимые по имени.
 
Профиль
Наверх



Читают тему
гостей: 1, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019