> On Feb 15, BJthebear wrote: > > I have written a sub routine to add a name to a dynamic list but I > > have three problems with it and would be grateful for some advice. > > > > Sub InputNewUser() > > > > Dim Newuser As String > > Dim nextRow As Long > >
[snipped some code] > > 'Ask for name of new user > > > > Newuser = Application.InputBox("Please enter name of new user (Surname > > first)") > > > > 'turns it into proper letters > > Newuser = Application.Proper(Newuser) > > > > 'Check to see if cancel button is pressed go back to Menu > > > > If Newuser = "" Then > > Sheets("Menu").Select > > Exit Sub > > > > End If > > > > 'Routine to check if Newuser already exists in list of users > > > > 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx > > > > 'Find last row > > > > Set SrcSht = Sheets("UserList") > > > > nextRow = SrcSht.Cells(Cells.Rows.Count, "A").End(xlUp).Row + 1 > > > > Application.ScreenUpdating = False > > > > Range("A" & nextRow).Select This line will probably cause problems. Note that the Range function is invoked on the ActiveWorksheet if you don't specify a worksheet. You should transform these lines in such a way that you get rid of any Active calls (those Activate calls are a giveaway that the original code was recorded by the macro recorder ;-) The replacement code should look like this: dim CurrentCell as Excel.Range set CurrentCell = SrcSht.Cells(1,1) ' Search the list of the new user name: This assumes that ' there are no empty rows in the list of users. While CurrentCell <> "" and CurrentCell <> Newuser Set CurrentCell = CurrentCell.Offset (1,0) Wend if CurrentCell = NewUser then Msgbox "The user is already present in the list!" exit sub end if > > ActiveCell.FormulaR1C1 = Newuser > > Columns("A:A").Select > > Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, _ > > Header:=xlGuess, OrderCustom:=1, _ > > MatchCase:=False, Orientation:=xlTopToBottom, _ > > DataOption1:=xlSortNormal > > > > Application.ScreenUpdating = True > > > > 'display message to show that it has been added to userlist > > MsgBox (Newuser & " has been added to List of Users") > > > 'return to menu page > > Sheets("Menu").Select > > End Sub > > > The problems are as follows:- > > > 1. I have just added the code to check to see if the cancel button is > > pressed but it does not exit the subroutine - it adds a false to the > > list of users. > > > 2. How do I check to see if the Newuser entry already exists in the > > list of users > > > 3. The routine seems to work when running it from the VBA window but > > when the macro is attached to a button on the "Menu" Wrksheet it fails > > to add the name to the list of users. This routine worked up until a > > few days ago and it really has me stumped > > > Any help would be appreciated > > > Brian > > Scotland Regards, Stuart -- ---------------------------------------------------------------------------------- Some important links for excel users: 1. Follow us on TWITTER for tips tricks and links : http://twitter.com/exceldailytip 2. Join our LinkedIN group @ http://www.linkedin.com/groups?gid=1871310 3. Excel tutorials at http://www.excel-macros.blogspot.com 4. Learn VBA Macros at http://www.quickvba.blogspot.com 5. Excel Tips and Tricks at http://exceldailytip.blogspot.com To post to this group, send email to excel-macros@googlegroups.com <><><><><><><><><><><><><><><><><><><><><><> Like our page on facebook , Just follow below link http://www.facebook.com/discussexcel