The problem is in your comparison. You use equal comparison for
MenuOrderNo
so the select must fetch exactly 0 or 1 records. Now it returns more than one record.
Depending on your logic you either need to change the comparison or the select. If it's acceptable to update several rows then you should use
IN
operator, for example:
UPDATE UserMenu SET UserMenu.MenuOrderNo = MenuOrderNo-1 WHERE ((([MenuOrderNo]) IN (select MenuOrderNo from UserMenu where(((MenuID) =7) AND ((UserId)='1'))+1)) AND ((UserMenu.UserId)='1'))
If you need to update a single record, then go through the SELECT statement to see why it is returning multiple rows.