changing math operations for math operations with = sign

F

filo666

I have this code:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim arr() As Variant
On Error GoTo eh
Application.EnableEvents = False
For cnt1 = 1 To target.value.words.count
arr(cnt1) = Target.Value.words(cnt1)
If IsNumeric(arr(cnt1)) Or arr(cnt1) <> "+" Or arr(cnt1) <> "-" Or arr(cnt1)
<> "*" Or arr(cnt1) <> "/" Or arr(cnt1) <> "^" Or arr(cnt1) <> "." Then
GoTo eh
End If
wrdd = wrdd + arr(cnt1)
Next
Target.Value = "=" & wrdd
eh:
Application.EnableEvents = True
End Sub

what I want to do is if the user types 3+5 then excell will change 3+5 to
=3+5 and will solve the operation; the problem us that
target.value.words.count
and Target.Value.words(cnt1) dont exist in excel, any suggestion
thanks
 
G

Gary''s Student

Private Sub Worksheet_Change(ByVal Target As Range)
Set t = Target
Set r = Range("B9")
If Intersect(t, r) Is Nothing Then Exit Sub
Application.EnableEvents = False
t.Value = Evaluate("=" & t.Value)
Application.EnableEvents = True
End Sub
 
B

Bob Phillips

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim arr() As Variant
Dim LastPlace As Long
Dim i As Long

On Error GoTo eh
Application.EnableEvents = False

With Target

LastPlace = 1

For i = 1 To Len(.Value)

If Not (IsError(Application.Match(Mid$(.Value, i, 1), Array("+",
"-", "*", "/", "^", "<>"), 0))) Then

If i > 1 Then

If IsNumeric(Mid$(.Value, LastPlace, i - LastPlace))
Then

LastPlace = i + 1
Else

Exit For
End If
End If
End If
Next i

If i > Len(.Value) Then

If IsNumeric(Mid$(.Value, LastPlace, i - LastPlace)) Then

.Formula = "=" & .Value
End If
End If
End With
eh:
Application.EnableEvents = True
End Sub



--
---
HTH

Bob


(there's no email, no snail mail, but somewhere should be gmail in my addy)
 
B

Bob Phillips

Watch the wrap

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim arr() As Variant
Dim LastPlace As Long
Dim i As Long

On Error GoTo eh
Application.EnableEvents = False

With Target

LastPlace = 1

For i = 1 To Len(.Value)

If Not (IsError(Application.Match(Mid$(.Value, i, 1), _
Array("+", "-", "*", "/", "^", "<>"), 0))) Then

If i > 1 Then

If IsNumeric(Mid$( _
.Value, LastPlace, i - LastPlace)) Then

LastPlace = i + 1
Else

Exit For
End If
End If
End If
Next i

If i > Len(.Value) Then

If IsNumeric(Mid$(.Value, LastPlace, i - LastPlace)) Then

.Formula = "=" & .Value
End If
End If
End With
eh:
Application.EnableEvents = True
End Sub


--
---
HTH

Bob


(there's no email, no snail mail, but somewhere should be gmail in my addy)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top