Es tut mir leid, aber ich drehe mich im Kreis. Ich kann es nicht. Ich bin den Code durchgegangen, aber ich verstehe nicht viel darüber... Ich gebe zu, dass eine helfende Hand dankbar wäre.
Hauteur_Value als Ganzzahl dimmen
Doppelte Höhe dimmen
Hauteur_Value = InputBox("Bitte geben Sie die Höhe an .... ")
Also habe ich eine globale Variable namens "Height". Und ich möchte nur, dass diese Variable den neuen Wert (Hauteur_Value) annimmt.
Nach ein paar Unebenheiten in meiner vorherigen Antwort ist hier ein funktionaler Code, der auf dem von Lynk basiert, es Ihnen jedoch ermöglicht, einen Dezimalwert einzugeben, einen Wert, der entweder mit einem Punkt oder mit einem Komma in die InputBox eingegeben werden kann:
Dim Variable As String
Dim Hauteur_Value As String
Dim ValeurText As String
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Variable = "hauteur"
Hauteur_Value = InputBox("Merci d'indiquer la Hauteur .... ")
Hauteur_Value = Replace(Hauteur_Value, ".", ",")
If IsNumeric(Hauteur_Value) Then
ValeurText = Replace(Hauteur_Value, ",", ".")
Else
MsgBox "Valeur invalide"
Exit Sub
End If
If Not swModel Is Nothing Then
Dim swEqMgr As SldWorks.EquationMgr
Set swEqMgr = swModel.GetEquationMgr
If SetEquationValue(swEqMgr, Variable, ValeurText) Then
swModel.ForceRebuild3 True
Else
MsgBox "Failed to find the equation " & name
End If
Else
MsgBox "Please open the model"
End If
End Sub
Function SetEquationValue(eqMgr As SldWorks.EquationMgr, name As String, value As String) As Boolean
Dim index As Integer
index = GetEquationIndexByName(eqMgr, name)
If index <> -1 Then
eqMgr.Equation(index) = """" & name & """=" & """" & ValeurText & """"
SetEquationValue = True
Else
SetEquationValue = False
End If
End Function
Function GetEquationIndexByName(eqMgr As SldWorks.EquationMgr, name As String) As Integer
Dim i As Integer
GetEquationIndexByName = -1
For i = 0 To eqMgr.GetCount - 1
Dim eqName As String
eqName = Trim(Split(eqMgr.Equation(i), "=")(0))
eqName = Mid(eqName, 2, Len(eqName) - 2)
If UCase(eqName) = UCase(Variable) Then
GetEquationIndexByName = i
Exit Function
End If
Next
End Function