Przepraszam, ale kręcę się w kółko. Nie mogę tego zrobić. Przeszedłem przez kod, ale niewiele z niego rozumiem... Przyznam, że pomocna dłoń byłaby mile widziana.
Dim Hauteur_Value As Liczba całkowita
Przyciemniona podwójna wysokość
Hauteur_Value = InputBox("Proszę określić wysokość .... ")
Mam więc zmienną globalną o nazwie "Wysokość". I po prostu chcę, aby ta zmienna przyjęła nową wartość (Hauteur_Value).
Po kilku uderzeniach w mojej poprzedniej odpowiedzi, oto funkcjonalny kod oparty na Lynku, ale który pozwala umieścić wartość dziesiętną, wartość, którą można wprowadzić w InputBox za pomocą kropki lub przecinka:
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