Forum Discussion
Somesh_Jain
Nov 05, 2021Copper Contributor
After upgrade the MS Office 365 getting error 2147417848 Method 'Value' of object 'Range' failed
After upgrade the MS Office 365 getting below error in one our VBA based tool which runs on Excel. However it is still working for our colleague who did not upgrade MS office 365. Request you to plea...
- Nov 09, 2021
I do not get that error. However, I see that the Worksheet_Change event risks going into an endless loop, because the Change event causes itself to be called again and again due to the fact that the value of the cell that triggered the event to fire is changed within the event itself. This may cause a stack overflow. This may be prevented by adding Application.EnableEvents = False prior to any action in that event that changes a cell, e.g.:
' Existing other code here Else sString2Replace = Target.Text 'removes any instances of a £ symbol For iLoopCount = 1 To Len(sString2Replace) If Mid(sString2Replace, iLoopCount, 1) = "£" Then sString2Replace = Replace(sString2Replace, "£", "") Next Application.EnableEvents = False 'Added by JKP Target.Value = sString2Replace Application.EnableEvents = True 'Added by JKP End If 'Remainder of code
Somesh_Jain
Nov 08, 2021Copper Contributor
Find attached error msg.
Somesh_Jain
Nov 09, 2021Copper Contributor
After debugging found that getting the error in below code
'Currency Check
Case "$E"
If Target = "" Then
Me.Protect "SST0122BP6002"
Exit Sub
End If
If IsCurrency(Target.Text) = False Then
MSGNotValidCurrency
Target = ""
Else
sString2Replace = Target.Text
'removes any instances of a £ symbol
For iLoopCount = 1 To Len(sString2Replace)
If Mid(sString2Replace, iLoopCount, 1) = "£" Then sString2Replace = Replace(sString2Replace, "£", "")
Next
Target.Value = sString2Replace
End If
'Currency Check
Case "$E"
If Target = "" Then
Me.Protect "SST0122BP6002"
Exit Sub
End If
If IsCurrency(Target.Text) = False Then
MSGNotValidCurrency
Target = ""
Else
sString2Replace = Target.Text
'removes any instances of a £ symbol
For iLoopCount = 1 To Len(sString2Replace)
If Mid(sString2Replace, iLoopCount, 1) = "£" Then sString2Replace = Replace(sString2Replace, "£", "")
Next
Target.Value = sString2Replace
End If