Das liegt daran, dass deine Hauptuserform mit Modal=true angezeigt wird (gebundenes Formular).
Versuchs mal so:
Private Sub cb_Parameteraktualisieren_Click()
'X-Wert aus textbox wird an Catia übergeben
Dim Params As Parameters
Set Params = CATIA.ActiveDocument.Product.Parameters
Dim X As Dimension
Set X = Params.Item("X-Koordinate")
X.Value = Me.textbox_x.Value
With Me
.Hide
.Show (False)
Load UserForm1
UserForm1.Caption = "Berechnung läuft..."
UserForm1.Show (False)
wait DateAdd("s", 2, Now())
Unload UserForm1
.Hide
.Show
End With
'Produkt wird aktualisiert und Punkt ausgerichtet
Set Params = CATIA.ActiveDocument.Product.Parameters
Dim W1 As Dimension
Set W1 = Params.Item("Winkel 1")
Me.textbox_Winkel1.Value = W1.Value
End Sub
Private Sub wait(t As Date)
While t > Now(): DoEvents: Wend
End Sub
Ob du sleep benutzt oder nicht ändert an deinem eigentlich Problem auch nichts. Dein MatLab sollte so oder so weiterrechnen, jedenfalls wenn du keinen Singlecore Processor hast.
Wenn du sleep benutzen willst musst du eine dll einbinden:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub cb_Parameteraktualisieren_Click()
'X-Wert aus textbox wird an Catia übergeben
Dim Params As Parameters
Set Params = CATIA.ActiveDocument.Product.Parameters
Dim X As Dimension
Set X = Params.Item("X-Koordinate")
X.Value = Me.textbox_x.Value
With Me
.Hide
.Show (False)
Load UserForm1
UserForm1.Caption = "Berechnung läuft..."
UserForm1.Show (False)
Sleep 2 * 1000
Unload UserForm1
.Hide
.Show
End With
'Produkt wird aktualisiert und Punkt ausgerichtet
Set Params = CATIA.ActiveDocument.Product.Parameters
Dim W1 As Dimension
Set W1 = Params.Item("Winkel 1")
Me.textbox_Winkel1.Value = W1.Value
End Sub
|