Wątek przeniesiony 2021-09-16 10:17 z Inne języki programowania przez cerrato.

VBA TextBox w UseForm zmiana liczby na działanie matematyczne

0

Cześć,
mam utworzony taki texbox w którym w tej chwili mogę wpisywać liczby i one pojawiają mi się w moim kosztorysie. Problem polega na tym aby kosztorys był prawidłowy musi być weryfikowalny czyli tzw. przedmiar musi być w komórce zapisany jako dodawanie, mnożenie odejmowanie itd.
Chciałbym aby ktoś z was w razie możliwości pomógł mi przekształcić go w takie coś, że jak będę w nim wpisywać 2+3-4*(56-2) to w odpowiedniej komórce wrzuci mi formułę czyli =2+3-4*(56-2) i komórka da wynik. Musi być w komórce formula nie może być sam wynik . Na razie jest tak że w texbox da się wpisać tylko liczbę bez żadnych znaków i nawiasów.

Private Sub TextBox2_Change()
Dim wartosc As String

With Me.TextBox2
wartosc = Trim(.Text)
If wartosc = "" Then
ActiveCell.Offset(0, 2).Value = ""
Exit Sub
End If
If InStr(1, wartosc, ".", 1) <> 0 Then Exit Sub
If InStr(1, wartosc, ",", 1) <> 0 Then Exit Sub
If Left(wartosc, 1) = "0" Then Exit Sub
If Not IsNumeric(wartosc) Then
MsgBox "Proszę wpisać liczbę !", vbOKOnly + vbExclamation, "Uwaga !"
.SetFocus
.SelStart = 0
.SelLength = .TextLength
Exit Sub
End If
.Text = wartosc
ActiveCell.Offset(0, 2).Value = Abs(Val(.Text))
End With
End Sub
0

Wykorzystaj Excel'a do sprawdzenia warunków:

Private Sub TextBox2_Change()
Dim wartosc As String
 
	wartosc = trim(Me.TextBox2.Text)
	If wartosc = "" Then
		ActiveCell.Offset(0, 2).Value = ""
	Else
		'jeżeli składnia jest prawidłową formuła
		if Not IsError(Application.Evaluate(wartosc)) Then
			'to ją dodaj
			ActiveCell.Offset(0, 2).formula = "=" & wartosc
		else
			ActiveCell.Offset(0, 2).Value = ""
		end if
	End If

End Sub
0

WOW! :)

Dzięki wielkie za pomoc. Działa.

1 użytkowników online, w tym zalogowanych: 0, gości: 1