Równanie makro

Witam ponownie wszystkich,

przepraszam, że publikuję bez testów, więc kontynuuję

 

 

Dim swApp jako SldWorks.SldWorks

Dim swModel As SldWorks.ModelDoc2

 

 

Zarządzanie podrzędne()

  assignmentPrincipalObjects

Zarządzanie wysokością dna

  if test("D1@Esq1", "500") to

    boolstatus = swModel.EditRebuild3()

  Inaczej

    MsgBox "Problem"

  Zakończ jeżeli:

 

"Szerokość...

"Głębokość...

"Grubość...

 

Koniec subwoofera

 

Sub AssignmentPrincipalObjects() 'Może być umieszczony w innym module bez PB

  Ustaw swApp = Application.SldWorks

  Ustaw swModel = swApp.ActiveDoc

 'Ustaw= .....

Koniec subwoofera

 

Function Test(NomVar As String, ValVar As String) As Boolean 'Może być umieszczony w innym module bez PB

  Dim swEquationMgr As SldWorks.EquationMgr

  Dim vSplit jako wariant

  Ustaw swEquationMgr = swModel.GetEquationMgr

  Test = Fałsz

  Dla i = 0 Do swEquationMgr.GetCount - 1

    vSplit = Split(swEquationMgr.równanie(i), "=")

    vSplit(0) = Zamień(vSplit(0), Chr(34), Pusty)

    vSplit(0) = Zamień(vSplit(0), Chr(32), Pusty)

    Jeśli vSplit(0) = nazwa_zmiennej, to

      swEquationMgr.równanie(i) = Zamień(swRównanieMgr.równanie(i), vSplit(1), ValVar)

      Test = Prawda

      Funkcja wyjścia

    Zakończ jeżeli:

  Dalej i

Zakończ funkcję

 

Właśnie przetestowałem i szybko przerobiłem ten kod, to od Ciebie JB zależy, czy "umieścisz go na swój własny sposób".

Używanie funkcji (tutaj Test)  z przekazywanymi argumentami (tutaj NomVar i ValVar) pozwala na uporządkowanie swoich rzeczy w kilku modułach. Jeśli chodzi o podpunkt zatytułowany Zarządzanie, widzę go w module Twojego formularza użytkownika, aby go zobaczyć.

 

Pozdrawiam MC

Dobry wieczór wszystkim,

 

Wracam do zdania "Jeśli chodzi o podpunkt zatytułowany Zarządzanie, widzę go w module Twojego UserForm, to see." mojego ostatniego słowa. Powinieneś wiedzieć, że Twój [UserForm1.TextBox2.Value] (wartość formantu Nazwa "TextBox2" w niestandardowym oknie dialogowym Nazwa "Userform1") nie ma dużego zakresu (zobacz zakres pomocy interfejsu API). Nie będzie to wiedziało, jeśli wywołasz go z kodu umieszczonego w innym module niż ten powiązany z Twoim [UserForm1]. Cóż, teraz jest to przypadek makra w Wordzie, ale nie sprawdzałem za pomocą SW. Wreszcie, [UserForm1] i [TextBox2] są nazwami domyślnymi, rozsądnie byłoby podczas tworzenia okna dialogowego natychmiast zmienić ich nazwy, na przykład [UserForm1] zmień nazwę na [BDChoisirBackground] i [TextBox2] zmień nazwę na [BottomHeight]. Wiem, że to podniecające, ale Twój kod będzie tylko bardziej przejrzysty.

 

Szczęśliwy Prog

 

Klasa A+

 

MC

Maksyma

 

Czy to normalne, że to makro działa tylko w pliku części, a nie w edytowanej części zespołu?

 

Pętla nie jest wykonywana w edytowanym utworze:

Dla i = 0 Do swEquationMgr.GetCount - 1
    vSplit = Split(swEquationMgr.Equation(i), "=")
    vSplit(0) = Zamień(vSplit(0), Chr(34), Pusty)
    vSplit(0) = Zamień(vSplit(0), Chr(32), Pusty)
    Jeśli vSplit(0) = nazwa_zmiennej, to
        swRównanieMgr.Równanie(i) = Zamień(swRównanieMgr.Równanie(i), vSplit(1), Wartowarja)
        Modif_equation = Prawda
        Funkcja wyjścia
    Zakończ jeżeli:
Dalej i

 

Dziękuję