Macro-vergelijking

Hallo weer allemaal,

sorry dat ik publiceer zonder te testen, dus ik volg het op

 

 

Dim swApp als SldWorks.SldWorks

Dim swModel als SldWorks.ModelDoc2

 

 

Sub Beheer()

  assignmentPrincipalObjects

Beheer van de bodemhoogte

  Als de test ("D1@Esq1", "500") dan

    boolstatus = swModel.EditRebuild3()

  Anders

    MsgBox "Probleem"

  Einde als

 

'Breedte...

'Diepte...

'Dikte...

 

Einde Sub

 

Sub AssignmentPrincipalObjects() 'Kan in een andere module worden geplaatst zonder PB

  Stel swApp = Toepassing.SldWorks in

  Stel swModel = swApp.ActiveDoc in

 'Set= .....

Einde Sub

 

Functietest (NomVar als string, ValVar als string) als boolean 'Kan zonder PB in een andere module worden geplaatst

  Dim swEquationMgr als SldWorks.EquationMgr

  Dim vSplit als variant

  Stel swEquationMgr in = swModel.GetEquationMgr

  Test = Onwaar

  Voor i = 0 To swEquationMgr.GetCount - 1

    vSplit = Splitsen(swEquationMgr.vergelijking(i), "=")

    vSplit(0) = Vervangen(vSplit(0), Chr(34), leeg)

    vSplit(0) = Vervangen(vSplit(0), Chr(32), leeg)

    Als vSplit(0) = VarName, dan

      swEquationMgr.equation(i) = Vervangen(swEquationMgr.equation(i), vSplit(1), ValVar)

      Test = Waar

      Exit-functie

    Einde als

  volgende i

Functie beëindigen

 

Ik heb deze code net getest en snel herwerkt, het is aan jou JB om 'het op je eigen manier te zetten'.

Door gebruik te maken van functies (hier Test)  met doorgevende argumenten (hier NomVar en ValVar) kunt u uw dingen in verschillende modules ordenen. Wat betreft de sub met de titel Beheer, ik kan het zien in een module van uw UserForm, om gezien te worden.

 

Groeten MC

Goedenavond allemaal,

 

Ik kom terug op de zin "Wat betreft de sub met de titel Beheer, ik kan het zien in een module van uw UserForm, om te zien." van mijn laatste woord. U moet weten dat uw [UserForm1.TextBox2.Value] (de waarde van het naambeheer 'TextBox2' van uw aangepaste naamdialoogvenster 'Userform1') geen groot bereik heeft (zie het bereik van de API-help). Het is niet bekend of u het aanroept vanuit code die in een andere module is geplaatst dan degene die is gekoppeld aan uw [UserForm1]. Nou, nu is het het geval voor een macro in Word, maar ik heb niet gecontroleerd met SW. Ten slotte zijn [UserForm1] en [TextBox2] standaardnamen, het zou verstandig zijn wanneer u een dialoogvenster maakt om ze onmiddellijk te hernoemen, bijvoorbeeld [UserForm1] hernoemen naar [BDChoisirBackground] en [TextBox2] hernoemen naar [BottomHeight]. Ik weet dat het zinnenprikkelend is, maar je code zal alleen maar duidelijker zijn.

 

Blije Prog

 

A+

 

MC

Spreuk

 

Is het normaal dat deze macro alleen werkt in een onderdeelbestand en niet in een bewerkt deel van een assembly?

 

De lus wordt niet gedaan in een bewerkt stuk:

Voor i = 0 To swEquationMgr.GetCount - 1
    vSplit = Splitsen(swEquationMgr.Vergelijking(i), "=")
    vSplit(0) = Vervangen(vSplit(0), Chr(34), leeg)
    vSplit(0) = Vervangen(vSplit(0), Chr(32), leeg)
    Als vSplit(0) = VarName, dan
        swEquationMgr.Equation(i) = Vervangen(swEquationMgr.Equation(i), vSplit(1), ValVar)
        Modif_equation = Waar
        Exit-functie
    Einde als
volgende i

 

Bedankt