Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Excel / Programming / March 2008

Tip: Looking for answers? Try searching our database.

Copying or deleting row based on value found in other ws

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
aintlifegrand79 - 17 Mar 2008 19:17 GMT
I have a userform that uses a button (cbChangeButton) to look up an existing
values (textbox: tbExistingProjectNumber)in multiple (9)worksheets and then
changes it to a new value (textbox: tbChangeProjectNumberTo) on those
worksheets.  My problem is that if the tbEXistingProjectNumber begins with a
"P" and tbChangeProjectNumberTo begins with an "E" I need to have certain
information from worksheet 7 copied to the next empty row of worksheet 8. I
also need to make it so that if tbExistingProjectNumber begins with "B" and
tbChangeProjectNumberTo begins with "P" to delete the entire row in which
that Project number is found on worksheet 9.  I have included all of my code
for this button but the parts I need help on are near the bottom (I think I
have the right idea but just might not have it in the right order or I am
missing a piece).  Thank you in advance for any help you can provide.  

Private Sub cbChangeButton_Click()
'   Project Number not entered yet, brings up ErrorHandler
   If Sheet1.Columns(1).Find(tbExistingProjectNumber.Value) Is Nothing Then
ufErrorHandler.Show
   If Not Sheet1.Columns(1).Find(tbExistingProjectNumber.Value) Is Nothing
Then
   Sheet1.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 0).Value
= Replace(Sheet1.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, Sheet1.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, tbChangeProjectNumberTo.Value)
   Sheet2.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 0).Value
= Replace(Sheet2.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, Sheet2.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, tbChangeProjectNumberTo.Value)
   Sheet3.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 0).Value
= Replace(Sheet3.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, Sheet3.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, tbChangeProjectNumberTo.Value)
   Sheet4.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 0).Value
= Replace(Sheet4.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, Sheet4.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, tbChangeProjectNumberTo.Value)
   Sheet5.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 0).Value
= Replace(Sheet5.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, Sheet5.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, tbChangeProjectNumberTo.Value)
   Sheet6.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 0).Value
= Replace(Sheet6.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, Sheet6.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, tbChangeProjectNumberTo.Value)
   Sheet7.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 0).Value
= Replace(Sheet7.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, Sheet7.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, tbChangeProjectNumberTo.Value)
   If CStr(Left(tbExistingProjectNumber.Value, 1) = "P") And
CStr(Left(tbChangeProjectNumberTo.Value, 1) = "E") Then
'   Activate Sheet8
   Sheet8.Activate
'   Determine the next empty row
   NextRow = _
       Application.WorksheetFunction.CountA(Range("A:A")) + 1
'   Transfer to Sheet8(Experience List)
   Cells(NextRow, 1) = tbChangeProjectNumberTo.Value
   Cells(NextRow, 2) =
Sheet7.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 3).Value
   Cells(NextRow, 3) =
Sheet7.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 8).Value
   End If
   If CStr(Left(tbExistingProjectNumber.Value, 1) = "B") And
CStr(Left(tbChangeProjectNumberTo.Value, 1) = "P") Then
   Sheet9.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0, 0).Value
= Replace(Sheet9.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, Sheet9.Columns(1).Find(tbExistingProjectNumber.Value).Offset(0,
0).Value, tbChangeProjectNumberTo.Value)
   End If
   End If
End Sub
Joel - 17 Mar 2008 20:19 GMT
See if this code helps you find your problems.  I dont know if you have
sheet1 - sheet7 defined.  they should be
sheets("Sheet1")
to
sheets("Sheet7")

Private Sub cbChangeButton_Click()
'   Project Number not entered yet, brings up ErrorHandler
   Set c = Sheet1.Columns(1).Find(tbExistingProjectNumber.Value)
   If c Is Nothing Then
      ufErrorHandler.Show
   Else
      For i = 1 To 7
         Sheets("sheet" & i).Columns(1). _
            c.Value = tbChangeProjectNumberTo.Value
      Next i

      If CStr(Left(c.Value, 1) = "P") And _
         CStr(Left(tbChangeProjectNumberTo.Value, 1) = "E") Then

         '   Activate Sheet8
         With Sheets("Sheet8")
             '   Determine the next empty row
             NextRow = .Range("A1").End(xlDown).Row + 1
             '   Transfer to Sheet8(Experience List)
             .Cells(NextRow, 1) = tbChangeProjectNumberTo.Value
             Set c1 = Sheets("Sheet7").Columns(1). _
                 Find(tbExistingProjectNumber.Value)
             .Cells(NextRow, 2) = c1.Offset(0, 3).Value
             .Cells(NextRow, 3) = c1.Offset(0, 8).Value
         End With
      End If
   
      If CStr(Left(c.Value, 1) = "B") And _
         CStr(Left(tbChangeProjectNumberTo.Value, 1) = "P") Then
   
         Set c2 = Sheets("Sheet9").Columns(1). _
             Find(tbExistingProjectNumber.Value).Value
         c2.Value = tbChangeProjectNumberTo.Value

      End If
   End If
End Sub

> I have a userform that uses a button (cbChangeButton) to look up an existing
> values (textbox: tbExistingProjectNumber)in multiple (9)worksheets and then
[quoted text clipped - 66 lines]
>     End If
> End Sub
Joel - 17 Mar 2008 20:31 GMT
I found a couple of more errors.  Try this code instead

Private Sub cbChangeButton_Click()
'   Project Number not entered yet, brings up ErrorHandler
   
  For i = 1 To 7
     Set c = Sheets("Sheet1").Columns(1).Find(tbExistingProjectNumber.Value)
      If c Is Nothing Then
         ufErrorHandler.Show
      Else

         Sheets("sheet" & i).Columns(1). _
            c.Value = tbChangeProjectNumberTo.Value

         If CStr(Left(c.Value, 1) = "P") And _
            CStr(Left(tbChangeProjectNumberTo.Value, 1) = "E") Then

            '   Activate Sheet8
            With Sheets("Sheet8")
               '   Determine the next empty row
               NextRow = .Range("A1").End(xlDown).Row + 1
               '   Transfer to Sheet8(Experience List)
               .Cells(NextRow, 1) = tbChangeProjectNumberTo.Value
               Set c1 = Sheets("Sheet7").Columns(1). _
                  Find(tbExistingProjectNumber.Value)
               .Cells(NextRow, 2) = c1.Offset(0, 3).Value
               .Cells(NextRow, 3) = c1.Offset(0, 8).Value
            End With
         End If
   
         If CStr(Left(c.Value, 1) = "B") And _
            CStr(Left(tbChangeProjectNumberTo.Value, 1) = "P") Then
   
            Set c2 = Sheets("Sheet9").Columns(1). _
               Find(tbExistingProjectNumber.Value).Value
            c2.Value = tbChangeProjectNumberTo.Value
         End If
      End If
  Next i
End Sub

> I have a userform that uses a button (cbChangeButton) to look up an existing
> values (textbox: tbExistingProjectNumber)in multiple (9)worksheets and then
[quoted text clipped - 66 lines]
>     End If
> End Sub
Joel - 17 Mar 2008 20:37 GMT
I think in you find stgatements you need xlpart (NOT XLWHOLE).  I made the
modifications below.

Private Sub cbChangeButton_Click()
'   Project Number not entered yet, brings up ErrorHandler
   
  For i = 1 To 7
     Set c =
Sheets("Sheet1").Columns(1).Find(tbExistingProjectNumber.Value, _
        LookIn:=xlvlaues, lookat:=xlPart)
      If c Is Nothing Then
         ufErrorHandler.Show
      Else

         Sheets("sheet" & i).Columns(1). _
            c.Value = tbChangeProjectNumberTo.Value

         If CStr(Left(c.Value, 1) = "P") And _
            CStr(Left(tbChangeProjectNumberTo.Value, 1) = "E") Then

            '   Activate Sheet8
            With Sheets("Sheet8")
               '   Determine the next empty row
               NextRow = .Range("A1").End(xlDown).Row + 1
               '   Transfer to Sheet8(Experience List)
               .Cells(NextRow, 1) = tbChangeProjectNumberTo.Value
               Set c1 = Sheets("Sheet7").Columns(1). _
                  Find(tbExistingProjectNumber.Value, _
                     LookIn:=xlvlaues, lookat:=xlPart)
               .Cells(NextRow, 2) = c1.Offset(0, 3).Value
               .Cells(NextRow, 3) = c1.Offset(0, 8).Value
            End With
         End If
   
         If CStr(Left(c.Value, 1) = "B") And _
            CStr(Left(tbChangeProjectNumberTo.Value, 1) = "P") Then
   
            Set c2 = Sheets("Sheet9").Columns(1). _
               Find(tbExistingProjectNumber.Value, _
                  LookIn:=xlvlaues, lookat:=xlPart)
            c2.Value = tbChangeProjectNumberTo.Value
         End If
      End If
  Next i
End Sub

> I have a userform that uses a button (cbChangeButton) to look up an existing
> values (textbox: tbExistingProjectNumber)in multiple (9)worksheets and then
[quoted text clipped - 66 lines]
>     End If
> End Sub
Joel - 17 Mar 2008 20:41 GMT
Sorry! I made a couple of typos.  this should be my final change.  Again
sorry! this code is very hard to follow.

Private Sub cbChangeButton_Click()
'   Project Number not entered yet, brings up ErrorHandler
   
  For i = 1 To 7
     Set c = Sheets("Sheet" &
i).Columns(1).Find(tbExistingProjectNumber.Value, _
        LookIn:=xlValues, lookat:=xlPart)
      If c Is Nothing Then
         ufErrorHandler.Show
      Else
         c.Value = tbChangeProjectNumberTo.Value

         If CStr(Left(c.Value, 1) = "P") And _
            CStr(Left(tbChangeProjectNumberTo.Value, 1) = "E") Then

            '   Activate Sheet8
            With Sheets("Sheet8")
               '   Determine the next empty row
               NextRow = .Range("A1").End(xlDown).Row + 1
               '   Transfer to Sheet8(Experience List)
               .Cells(NextRow, 1) = tbChangeProjectNumberTo.Value
               Set c1 = Sheets("Sheet7").Columns(1). _
                  Find(tbExistingProjectNumber.Value, _
                     LookIn:=xlValues, lookat:=xlPart)
               .Cells(NextRow, 2) = c1.Offset(0, 3).Value
               .Cells(NextRow, 3) = c1.Offset(0, 8).Value
            End With
         End If
   
         If CStr(Left(c.Value, 1) = "B") And _
            CStr(Left(tbChangeProjectNumberTo.Value, 1) = "P") Then
   
            Set c2 = Sheets("Sheet9").Columns(1). _
               Find(tbExistingProjectNumber.Value, _
                  LookIn:=xlValues, lookat:=xlPart)
            c2.Value = tbChangeProjectNumberTo.Value
         End If
      End If
  Next i
End Sub

> I have a userform that uses a button (cbChangeButton) to look up an existing
> values (textbox: tbExistingProjectNumber)in multiple (9)worksheets and then
[quoted text clipped - 66 lines]
>     End If
> End Sub
aintlifegrand79 - 19 Mar 2008 01:59 GMT
Joel thanks for your help but when I tried the code it didn't work and I
messed with it for a while and still couldn't get it to work.  I know my code
is a bit hard to follow and for that i am sorry but I really appreciate your
help.

> Sorry! I made a couple of typos.  this should be my final change.  Again
> sorry! this code is very hard to follow.
[quoted text clipped - 110 lines]
> >     End If
> > End Sub
aintlifegrand79 - 19 Mar 2008 02:26 GMT
The debugger always highlights this portion of the code:
  If CStr(Left(tbExistingProjectNumber.Value, 1) = "P") And
CStr(Left(tbChangeProjectNumberTo.Value, 1) = "E") Then

I don't know if that will help at all but it seems to be where my code is
some how tripping up.

> I have a userform that uses a button (cbChangeButton) to look up an existing
> values (textbox: tbExistingProjectNumber)in multiple (9)worksheets and then
[quoted text clipped - 66 lines]
>     End If
> End Sub
Joel - 19 Mar 2008 11:32 GMT
I copied your original code which had the CSTR() function.  this is not
needed in the code.  The problem is CSTR want to see a number.  If you have a
P or E in front of the number CSTR will err.

Private Sub cbChangeButton_Click()
'   Project Number not entered yet, brings up ErrorHandler
Set tbExistingProjectNumber = Range("A1")
Set tbChangeProjectNumberTo = Range("A1")
  For i = 1 To 7
     Set c = Sheets("Sheet" & _
        i).Columns(1).Find(tbExistingProjectNumber.Value, _
        LookIn:=xlValues, lookat:=xlPart)
      If c Is Nothing Then
         ufErrorHandler.Show
      Else
         c.Value = tbChangeProjectNumberTo.Value

         If Left(c.Value, 1) = "P" And _
            Left(tbChangeProjectNumberTo.Value, 1) = "E" Then

            '   Activate Sheet8
            With Sheets("Sheet8")
               '   Determine the next empty row
               NextRow = .Range("A1").End(xlDown).Row + 1
               '   Transfer to Sheet8(Experience List)
               .Cells(NextRow, 1) = tbChangeProjectNumberTo.Value
               Set c1 = Sheets("Sheet7").Columns(1). _
                  Find(tbExistingProjectNumber.Value, _
                     LookIn:=xlValues, lookat:=xlPart)
               .Cells(NextRow, 2) = c1.Offset(0, 3).Value
               .Cells(NextRow, 3) = c1.Offset(0, 8).Value
            End With
         End If
   
         If Left(c.Value, 1) = "B" And _
            Left(tbChangeProjectNumberTo.Value, 1) = "P" Then
   
            Set c2 = Sheets("Sheet9").Columns(1). _
               Find(tbExistingProjectNumber.Value, _
                  LookIn:=xlValues, lookat:=xlPart)
            c2.Value = tbChangeProjectNumberTo.Value
         End If
      End If
  Next i
End Sub

> The debugger always highlights this portion of the code:
>    If CStr(Left(tbExistingProjectNumber.Value, 1) = "P") And
[quoted text clipped - 73 lines]
> >     End If
> > End Sub
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.