Перейти к публикации

Макрос. Хочу создать


Рекомендованные сообщения

В модуле.

дома создавал hide/show в модуле, писал имя формы-точку-а он ничего не предлагал выбрать. Просто вспоминая бейсик, там в свойствах проекта можно было выбрать первую форму, в дельфи каждую под форму нужно декларировать чтоб увидеть. Тут как-то всё еще проще.

На работе всё получилось.

Ссылка на сообщение
Поделиться на других сайтах


Да, надо показывать(show) нужную в данный момент форму, а остальные прятать (hide). Форма которая должна появляться первой "прописывается" в модуле

Насколько я понял модальных форм у вас не будет.

Ссылка на сообщение
Поделиться на других сайтах

дома создавал hide/show в модуле, писал имя формы-точку-а он ничего не предлагал выбрать. Просто вспоминая бейсик, там в свойствах проекта можно было выбрать первую форму, в дельфи каждую под форму нужно декларировать чтоб увидеть. Тут как-то всё еще проще.

На работе всё получилось.

hide/show - это только спрятать/показать, а требуется еще и загрузка формы! :

---

This example uses the Load statement to load a Form object. To try this example, paste the code into the Declarations section of a Form object, and then press F5 and click the Form object.

Sub Form_Click ()

Dim Answer, Msg ' Declare variable.

Unload Form1 ' Unload form.

Msg = "Form1 has been unloaded. Choose Yes to load and "

Msg = Msg & "display the form. Choose No to load the form "

Msg = Msg & "and leave it invisible."

Answer = MsgBox(Msg, 4) ' Get user response.

If Answer = 6 Then ' Evaluate answer.

Show ' If Yes, show form.

Else

Load Form1 ' If No, just load it.

Msg = "Form1 is now loaded. Choose OK to display it."

MsgBox Msg ' Display message.

Show ' Show form.

End If

End Sub

---

Ссылка на сообщение
Поделиться на других сайтах

hide/show - это только спрятать/показать, а требуется еще и загрузка формы! :

Для полноты картины.

При использовании метода Show, если форма не была загружена, форма всегда сначала автоматом загружается, а потом отображается. То есть, как бы вполняется Load + Show.

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

Ссылка на сообщение
Поделиться на других сайтах
  • 1 месяц спустя...

Всем привет.

Решил понять работу макросов (потребность в создании макроса).

Надо считать строку, и дописать в нее какую-то инфо, НО с сохранением старой, в определенном порядке.

Для примера выбрал обозначение крепежа по ГОСТ.

Поясню:

Есть запись:

Болт М 6 х 8 ГОСТ 7798-70

Надо:

Болт М6-6gх8.58.016 ГОСТ7798-70

с учетом ненужных пробелов.

Макрос мне написал:

Range("C3").Select

ActiveCell.FormulaR1C1 = "'Болт М6-6gх8.58.016 ГОСТ7798-70"

Range("C4").Select

End Sub

Он действует только на эту строку и только эту форму записи.

Что делать дальше - :confused_1:

Посоветуйте книгу доступную для "чайника" для выполнения моей задачи, что-ли.

Ссылка на сообщение
Поделиться на других сайтах

Всем привет.

Решил понять работу макросов (потребность в создании макроса).

Надо считать строку, и дописать в нее какую-то инфо, НО с сохранением старой, в определенном порядке.

Для примера выбрал обозначение крепежа по ГОСТ.

Поясню:

Есть запись:

Болт М 6 х 8 ГОСТ 7798-70

Надо:

Болт М6-6gх8.58.016 ГОСТ7798-70

с учетом ненужных пробелов.

Макрос мне написал:

Range("C3").Select

ActiveCell.FormulaR1C1 = "'Болт М6-6gх8.58.016 ГОСТ7798-70"

Range("C4").Select

End Sub

Он действует только на эту строку и только эту форму записи.

Что делать дальше - :confused_1:

Посоветуйте книгу доступную для "чайника" для выполнения моей задачи, что-ли.

Приобретите одну из книг Гарнаева. Для начинающих самое то.
Ссылка на сообщение
Поделиться на других сайтах

Решил понять работу макросов (потребность в создании макроса).

Для этого придется научится разбираться в программировании в целом, вероятно вам надо будет сначала ознакомится с каким нибудь языком програмирования. Советую занятся бейсиком, т.к. он изначально разрабатывлася как язык для обучения и к тому же используется для написания макросов под MSOficce.

В интернете достаточно много статей и учебных пособий по нему с примерами и исходными кодами.

Ссылка на сообщение
Поделиться на других сайтах

В интернете достаточно много статей и учебных пособий по нему с примерами и исходными кодами.

Примеров подходящих не нашел, а так азы изучаю.

Некоторые моменты мне понятны, но вот мозгов немного не хватает.

Например как из 1 ячейки считать всю надпись, и дописать то, что надо только после определенной инфо, которая тоже меняется?

Ссылка на сообщение
Поделиться на других сайтах

Примеров подходящих не нашел, а так азы изучаю.

...

Это удивительно - примеров по VB - тысячи...

Посмотрите специализированные сайты по VB и VBA.

Например тут:

<noindex>http://bbs.vbstreets.ru/</noindex>

<noindex>http://www.sql.ru/forum/actualtopics.aspx?bid=22</noindex>

<noindex>http://www.google.ru/custom?hl=ru&inla...%E5%ED%ED%EE%EC</noindex>

Можно еще сделать поиск по фразе типа "VBA в Excel"...

Ссылка на сообщение
Поделиться на других сайтах

Например как из 1 ячейки считать всю надпись, и дописать то, что надо только после определенной инфо, которая тоже меняется?

Я опишу алгоритм словами а Вы уже сами переведети в программный код, заодно и потренеруетесь.

Во первых у вас должен быть массив "определенной инфо, которая тоже меняется" где перечисленны все возможные варианты - назовем его "Массив".

Берем надпись из ячейки

Смотрим есть ли вхождение в надпись элемента Массива (сначала первого, потом второго и так далее)

Если есть то

..................разделяем надпись на две части: первая -все что до вхождения, вторая - все остальное.

..................записываем в ячейку = первая часть + то что надо дописать + вторая часть

..................выходим

Если нету то переходим на след элемент массива.

Если все элементы масива перебраны то выходим.

Ссылка на сообщение
Поделиться на других сайтах

Я опишу алгоритм словами а Вы уже сами переведети в программный код, заодно и потренеруетесь.

Во первых у вас ...

Вот мой ранний пример(набросок), когда я этим занимался:

to_kobold.zip

Исполняемый файл: `XLS_v3_WS2007.exe`. Если какие ошибки будут, то надо иметь VB и запускать файл `SP_XLS_WS2007.vbp` (можно прямо из ТС).

А так, весь код в файлах " *.bas "...

Ну и желательно изучить работу этой программки в пошаговом режиме(`F8`).

А также изучить систему адресации к ячейкам таблицы Excel...

Например:

"Public Sub ExpExcel()

'======================================================= иициализация Excel

If xl Is Nothing Then

Set xl = CreateObject("Excel.Application")

Else

Set xl = GetObject(, "Excel.Application")

End If

xl.Visible = True

fileTMPL = "C:\Program Files\SolidWorks\data\templates\SpA4_1.xlt" ' проверка есть ли шаблон

'''' fileTMPL = "F:\Program Files\SolidWorks\data\templates\SpA4_1.xlt"

If Dir(fileTMPL) <> "" Then

Set wb = xl.Workbooks.Add(fileTMPL)

Else

Set wb = xl.Workbooks.Add

MsgBox "Файл шаблона не найден!", , "Error587!"

Set xl = Nothing

Exit Sub

End If ' нет шаблона - завершение работы!

On Error Resume Next

Set ws = wb.Worksheets("Sheet1")

Set ws = wb.Worksheets("Лист1")

'======================================================= иициализация Excel END

'======================================================= запсиь в Excel

ws.Range("B1").Value = "Comp Name from FM" <<<<====заполнение ячеек Excel`a

ws.Range("C1").Value = "Configuration"

ws.Range("D1").Value = "File of compоnent"

ws.Range("E1").Value = "Quantity"

ws.Range("F1").Value = "Pid"

............

"

Чтобы считать значение ячейки, нужно указать ее адрес (например "B1") и выполнить:

val1=ws.Range("B1").Value <= считывание

val1=val1+".Изменено!"

ws.Range("B1").Value = val1 <= заполнение ячейки...

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • Alexey8107
      Всем доброго дня. Имеется ивановский обрабатывающий центр ИС-800, в нем установлены: PSM-45HVi A06B-6120-H045 SPM-30HVi A06B-6121-H030#H550 Возникла авария 9030 Overcurrent in the converter input circuit. Если смотреть В-65285 в этом случае на PSM должна отображаться 1, а на SPM - 30. Так оно и есть на самом деле. Документ ссылается на пункт 3.1.1, в свою очередь этот пункт говорит о неисправности PSM и следует проверить Входящее питание. Скорее всего здесь имеется ввиду питание управления, оно 240 В и стабильно Рекомендуют проверить реактор. Сразу откидываем, т.к. дело до включения силового питания еще даже не доходит, МСС отключен. Да и реактор штатный, всю жизнь работал с этим реактором. Проверить IGBT. Проверить проверил как мог, на КЗ, но дело до силовухи еще не доходит, ее питания еще нет и физически включиться не может из за MCC(ну это естественно, блок в аварии). Принципиально все рекомендации. На LEADWELL была похожая ситуация, на торможении шпинделя на PSM помнится выпадала авария 1, а на шпинделе не помню уже что. Тоже думали на PSM, а судя по всему мозг вынимал рекуператор в SPM. Т.к. на шине 500 вольт на торможении шпинделя напряжение вылетало далеко за 500 вольт выше. Здесь тоже нечто подобное, SPM опрокидывает PSM в аварию. Вобщем при включении питания станка, запитывается только управление на PSM, а он в свою очередь раздает 24 вольта на все остальные блоки по CXA2A, если все нормально и ЧПУ включена, замыкается контакт МСС, разрешая подачу силового питания на PSM. Шаги загрузки на полностью исправном станке PSM    SPM   -          A   -         50   -         12(или 18)   -         -- После включения ЧПУ и подачи силового питания   0         0 У нас PSM    SPM   -          A   -         50   -         12(или 18)   1         30 Включение силовухи невозможно. Что было сделано: 1. Проверены все питания, 240 СХ1А, 24 СХА2А, силовое питание, везде порядок. 2. Проверены IGBT на PSM и SPM, явного замыкания нет. 3. Проверены обмотки серво двигателя шпинделя. На всех 0,4 ома(сопротивление щупов 0,2 + обмотки 0,2 ома). Сравнил с заведомо исправным таким же двигателем(он стоит в другом таком же станке и работает), все тоже самое, На массу КЗ нет. Да и силовухи тоже нет, так что это бессмысленно. 4. Откинул от PSM разъем СХА2А(тупо обесточил остальные блоки от 24 вольт), включил питание управления, PSM перестал опрокидываться в ошибку, на дисплее "-". Ждал долго, не опрокидывается. Силовое питание подавать не стал, ибо чревато для остальных блоков, а скидывать шинку постоянного тока честно говоря поленился. 5. С соседнего станка снял плату управления SPM и переставил в неисправный станок, по номерам они идентичные. Станок включился и даже подал силовое питание на PSM без всяких аварий. Гонял пару минут в холостую, все было нормально, но после опрокинулся с той же ошибкой 1 и 30 на PSM и SPM соответственно. 6. Взял плату управления SPM с неисправного станка и установил в исправный. Станок включился и сколько бы не гонял, и даже шпинделем крутил, не опрокидывается. Т.е. к обоим платам претензий ноль. После вернул все обратно. Исправный станок работает как ни в чем не бывало, неисправный сразу опрокидывается в аварию почти сразу после включения управляющего питания. На ЧПУ ошибка 9030 и какие то еще по осям, но они связаны с отсутствием питания на шине постоянного тока если не ошибаюсь, так что это нормально. Итого, силовуха явных признаков неисправности не имеет, и даже на какое то время с другой платой включает силовое питание(скорее всего это связано с разбросом параметров защит на разных платах). К самому PSM тоже вроде претензий не должно быть, хотя В-65285 указывает именно на него. В истории с LEADWELL точно помню, что тоже все указывало на PSM(в том числе 1 на дисплее), и даже сервисный инженер FANUC был уверен в неисправности именно PSM. По факту, неисправен был как раз SPM. К платам управления тоже никаких претензий, обе работают в исправном станке. Единственное логическое объяснение, неисправность силовухи SPM. НО!!! Шина постоянного тока даже не думает запитываться, так что и тут с опрокидыванием сразу после включения есть засада! Ну не тестирует же SPM и PSM силовую часть напряжением 24 вольта??? Ведь до включения силового питания в этом случае даже не доходит из-за аварии! Может у кого есть еще идеи или опыт устранения таких дефектов? Помнится у фанука была типовуха на платах А16В-2203-0623 с датчиками тока, они отгорали и привод отваливался в аварию по одной из фаз. Это были привода шпинделя и двух осей в одном корпусе, были такие у нас на токарных. Сервисники фанука тогда их тучами меняли... Хотя тут я думаю не наш случай
    • Kelny
      Даже при всём при этом оно не всегда корректно работало, так что даже в старых версиях было быстрее удалить размер и потом вставить заново, чем искать эти точки размеров, а потом пытаться их привязать к новому месту.   Возможно это всего лишь глюк новой версии, в последних версиях они похоже штатно закладываются.
    • maxx2000
      @davidovka я их сразу ссыпаю в TEMP,  в тех что живы нет отметок о создании current_session.pro. Интересно что сам current_session.pro создаётся, но не обновляется дата в отличии от даты модели. Может быть и вправду менял какие нить настройки и забывал сохранить
    • Ahito
    • maxx2000
      т.е. доверять разработчикам оснований нет. Ясно-понятно
    • clavr
      все так и было до 2024 версии. размеры не импортировались. теперь вот в 2024 так нельзя. может где-то в настройках поменять что нужно? все перерыл, пока не нашел
    • arsenev
      Первый свободный номер инструмента   int list $toolnumblist = extract(folder('TOOL'), 'Tool.Number.Value') int $newToolNumb = 1 while member( $toolnumblist, $newToolNumb) {     $newToolNumb = $newToolNumb + 1 } Message Info 'Первый свободный номер инструмента - ' + $newToolNumb     Инструменты с повторяющимися номерами   int list $toolnumbers = extract(folder('tool'),'Number.Value') int $i = remove_duplicates($toolnumbers) string $op = '' foreach $n in $toolnumbers {     string list $names = extract(filter(folder('tool'),'this.Number.Value == "' + $n + '"'),'Name')     if size($names) > 1 {         $op = $op + 'Инструменты с повторяющимся номером T ' + $n + CRLF         foreach $name in $names {             $op = $op + $name + CRLF         }         $op = $op + CRLF     } } message info $op     Удаление выбранного   Макрос, который проверяет тип объекта, а затем позволяет выбрать один и удалять выбранные части. Я связал это с ctrl+d.   string list $rootTypes = {'toolpath','featureset','pattern','boundary','model'} string list $selectedTypes = {} foreach $rt in $rootTypes {     if entity_exists(entity($rt,'')) {         entity $ent = entity($rt,'')         if number_selected($ent.RootType, $ent.Name) > 0 {             int $i = add_last($selectedTypes,$rt)         }     } } if size($selectedTypes) <= 0 {     return } int $index = -1 if size($selectedTypes) == 1 {     $index = 0 } else {     $index = input choice $selectedTypes 'Wich Type to remove?' } if $index != -1 {     String $cmd = 'DELETE ' + $selectedTypes[$index] + ' "' + entity($selectedTypes[$index],'').Name + '" SELECTED'         DoCommand $cmd }
    • PETR_1
      Можно переназначить правую и центральную (колесо) кнопки с помощью бесплатной программы X-Mouse Button Control (есть портабельная версия). Это переназначение будет работать только для компаса.
    • Kelny
      Может изменяемый вами размер импортирован из модели?  Обычно переносилось удержанием левой кнопки мыши, а если сделать двойной клик, то нужно потом выбрать новый объект уже без удержания кнопок мыши.
    • Kelny
      Отключить галочки режима большой сборки. Инструменты-Параметры...-Настройки пользователя-Сборки
×
×
  • Создать...