Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 47
Default Making a collection of EntireRows for copying and then deleting

Hi All;

I think I am doing things the hard way. It is taking me about 50 lines and
looks awfully hacky. All suggestions gratefully received.

I have a small data base (30-40 members of a local club). I want the user
to be able to flag with an 'X' expired memberships in one column of the data
row. I want a procedure to do the following:

Loop through the range of members;
Pick out the 'X' members;
Save the address of the EntireRow of the membership info as a collection of
IntireRow addresses;
Then using the list/collection of Xed rows
Copy the IntireRow data and paste special (values) to an archive file;
Then delete the marked 'X' membership IntireRows;

I have something that kinda works, but it is long, messy and has to be
easier, neater.

Just some suggested key objects, methods and/or commands would be helpful.

Regards Bill
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,986
Default Making a collection of EntireRows for copying and then deleting

Let us see what you have.

"Bill Case" wrote:

Hi All;

I think I am doing things the hard way. It is taking me about 50 lines and
looks awfully hacky. All suggestions gratefully received.

I have a small data base (30-40 members of a local club). I want the user
to be able to flag with an 'X' expired memberships in one column of the data
row. I want a procedure to do the following:

Loop through the range of members;
Pick out the 'X' members;
Save the address of the EntireRow of the membership info as a collection of
IntireRow addresses;
Then using the list/collection of Xed rows
Copy the IntireRow data and paste special (values) to an archive file;
Then delete the marked 'X' membership IntireRows;

I have something that kinda works, but it is long, messy and has to be
easier, neater.

Just some suggested key objects, methods and/or commands would be helpful.

Regards Bill

  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 47
Default Making a collection of EntireRows for copying and then deletin

Thanks JLGWhiz;

Below is the key part; The rest just does some formatting etc. in the
archive file.

Sub ArchiveMembers()

On Error GoTo ArchiveMembers_Error

' Declare variables
' Member_LName
Dim RngLength As Integer
Dim IntireRows As Variant


' Initiate variables
' "Member_Lname" is a named range that keeps track of the number of rows
' in the data base - used in several procedures.

RngLength = Range("Member_LNames").Count

Dim i As Integer
For i = 1 To RngLength
If Range("Member_LNames").Cells(i, 0) = "X" Then
IntireRows = IntireRows + Range("Member_LNames") _
.Cells(i, 0).EntireRow.Address + ", "
End If
Next i


' "$4:$4" is the label row; but really has only been added so that the
collection
' of addresses doesn't end in ", " -- selection.copy won't work without it.
For
' the user it is really not needed.

IntireRows = IntireRows + "$4:$4"
Application.CutCopyMode = False
Worksheets("Member_List").Range(IntireRows).Select
Selection.Copy

' I am only selecting because I can't make it work any other way. I would
rather
' have it working quietly in the background.
' The rest of the code finds the correct start cell in the archive file;
pastes special ' the value goes back gets a single line and pastes special
column widths and
' format for lables line. And that's as far as I have gotten.

On Error GoTo 0
Exit Sub

ArchiveMembers_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
ArchiveMembers of Module MembWorkAreaMod"
End Sub

This is a volunteer project for a club I am a member of. I am not a
professional programmer.

"JLGWhiz" wrote:

Let us see what you have.

"Bill Case" wrote:

Hi All;

I think I am doing things the hard way. It is taking me about 50 lines and
looks awfully hacky. All suggestions gratefully received.

I have a small data base (30-40 members of a local club). I want the user
to be able to flag with an 'X' expired memberships in one column of the data
row. I want a procedure to do the following:

Loop through the range of members;
Pick out the 'X' members;
Save the address of the EntireRow of the membership info as a collection of
IntireRow addresses;
Then using the list/collection of Xed rows
Copy the IntireRow data and paste special (values) to an archive file;
Then delete the marked 'X' membership IntireRows;

I have something that kinda works, but it is long, messy and has to be
easier, neater.

Just some suggested key objects, methods and/or commands would be helpful.

Regards Bill

  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default Making a collection of EntireRows for copying and then deletin

This should be close. It looks in Column A of Sheet 1 for X's and if there
are any copies them to cell A2 on sheet 2. It then deletes all of the X rows
found on sheet1. You will need to change the set statements at the beginning
of this code but that should be about it...

Public Sub FindStuff()
Dim wksFrom As Worksheet
Dim rngToSearch As Range
Dim rngFound As Range
Dim rngFoundAll As Range
Dim rngDestination As Range
Dim strFirstAddress As String

Set rngDestination = Sheets("Sheet2").Range("A2")
Set wksFrom = Sheets("Sheet1")
Set rngToSearch = wksFrom.Range("A:A")
Set rngFound = rngToSearch.Find(What:="X", _
LookAt:=xlWhole, _
LookIn:=xlFormulas, _
MatchCase:=False)
If rngFound Is Nothing Then
MsgBox "Sorry no X's were found."
Else
Set rngFoundAll = rngFound.EntireRow
strFirstAddress = rngFound.Address
Do
Set rngFoundAll = Union(rngFound.EntireRow, rngFoundAll)
Set rngFound = rngToSearch.FindNext(After:=rngFound)
Loop Until rngFound.Address = strFirstAddress
rngFoundAll.Copy rngDestination
rngFoundAll.Delete
End If
End Sub
--
HTH...

Jim Thomlinson


"Bill Case" wrote:

Thanks JLGWhiz;

Below is the key part; The rest just does some formatting etc. in the
archive file.

Sub ArchiveMembers()

On Error GoTo ArchiveMembers_Error

' Declare variables
' Member_LName
Dim RngLength As Integer
Dim IntireRows As Variant


' Initiate variables
' "Member_Lname" is a named range that keeps track of the number of rows
' in the data base - used in several procedures.

RngLength = Range("Member_LNames").Count

Dim i As Integer
For i = 1 To RngLength
If Range("Member_LNames").Cells(i, 0) = "X" Then
IntireRows = IntireRows + Range("Member_LNames") _
.Cells(i, 0).EntireRow.Address + ", "
End If
Next i


' "$4:$4" is the label row; but really has only been added so that the
collection
' of addresses doesn't end in ", " -- selection.copy won't work without it.
For
' the user it is really not needed.

IntireRows = IntireRows + "$4:$4"
Application.CutCopyMode = False
Worksheets("Member_List").Range(IntireRows).Select
Selection.Copy

' I am only selecting because I can't make it work any other way. I would
rather
' have it working quietly in the background.
' The rest of the code finds the correct start cell in the archive file;
pastes special ' the value goes back gets a single line and pastes special
column widths and
' format for lables line. And that's as far as I have gotten.

On Error GoTo 0
Exit Sub

ArchiveMembers_Error:

MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure
ArchiveMembers of Module MembWorkAreaMod"
End Sub

This is a volunteer project for a club I am a member of. I am not a
professional programmer.

"JLGWhiz" wrote:

Let us see what you have.

"Bill Case" wrote:

Hi All;

I think I am doing things the hard way. It is taking me about 50 lines and
looks awfully hacky. All suggestions gratefully received.

I have a small data base (30-40 members of a local club). I want the user
to be able to flag with an 'X' expired memberships in one column of the data
row. I want a procedure to do the following:

Loop through the range of members;
Pick out the 'X' members;
Save the address of the EntireRow of the membership info as a collection of
IntireRow addresses;
Then using the list/collection of Xed rows
Copy the IntireRow data and paste special (values) to an archive file;
Then delete the marked 'X' membership IntireRows;

I have something that kinda works, but it is long, messy and has to be
easier, neater.

Just some suggested key objects, methods and/or commands would be helpful.

Regards Bill

  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 47
Default Making a collection of EntireRows for copying and then deletin

Thanks Jim;

It looks like your suggestion will work. I must misunderstand the use of
the 'Set' command. I will read up on that; it looks important.

Your way sure looks better.

Regards Bill

"Jim Thomlinson" wrote:

This should be close. It looks in Column A of Sheet 1 for X's and if there
are any copies them to cell A2 on sheet 2. It then deletes all of the X rows
found on sheet1. You will need to change the set statements at the beginning
of this code but that should be about it...

Public Sub FindStuff()
Dim wksFrom As Worksheet
Dim rngToSearch As Range
Dim rngFound As Range
Dim rngFoundAll As Range
Dim rngDestination As Range
Dim strFirstAddress As String

Set rngDestination = Sheets("Sheet2").Range("A2")
Set wksFrom = Sheets("Sheet1")
Set rngToSearch = wksFrom.Range("A:A")
Set rngFound = rngToSearch.Find(What:="X", _
LookAt:=xlWhole, _
LookIn:=xlFormulas, _
MatchCase:=False)
If rngFound Is Nothing Then
MsgBox "Sorry no X's were found."
Else
Set rngFoundAll = rngFound.EntireRow
strFirstAddress = rngFound.Address
Do
Set rngFoundAll = Union(rngFound.EntireRow, rngFoundAll)
Set rngFound = rngToSearch.FindNext(After:=rngFound)
Loop Until rngFound.Address = strFirstAddress
rngFoundAll.Copy rngDestination
rngFoundAll.Delete
End If
End Sub
--
HTH...

Jim Thomlinson




  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,939
Default Making a collection of EntireRows for copying and then deletin

Set is used for objects such as workbooks, worksheets or ranges. You do not
need it fir regular variables like integers, strings or booleans...
--
HTH...

Jim Thomlinson


"Bill Case" wrote:

Thanks Jim;

It looks like your suggestion will work. I must misunderstand the use of
the 'Set' command. I will read up on that; it looks important.

Your way sure looks better.

Regards Bill

"Jim Thomlinson" wrote:

This should be close. It looks in Column A of Sheet 1 for X's and if there
are any copies them to cell A2 on sheet 2. It then deletes all of the X rows
found on sheet1. You will need to change the set statements at the beginning
of this code but that should be about it...

Public Sub FindStuff()
Dim wksFrom As Worksheet
Dim rngToSearch As Range
Dim rngFound As Range
Dim rngFoundAll As Range
Dim rngDestination As Range
Dim strFirstAddress As String

Set rngDestination = Sheets("Sheet2").Range("A2")
Set wksFrom = Sheets("Sheet1")
Set rngToSearch = wksFrom.Range("A:A")
Set rngFound = rngToSearch.Find(What:="X", _
LookAt:=xlWhole, _
LookIn:=xlFormulas, _
MatchCase:=False)
If rngFound Is Nothing Then
MsgBox "Sorry no X's were found."
Else
Set rngFoundAll = rngFound.EntireRow
strFirstAddress = rngFound.Address
Do
Set rngFoundAll = Union(rngFound.EntireRow, rngFoundAll)
Set rngFound = rngToSearch.FindNext(After:=rngFound)
Loop Until rngFound.Address = strFirstAddress
rngFoundAll.Copy rngDestination
rngFoundAll.Delete
End If
End Sub
--
HTH...

Jim Thomlinson


Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Making a cell blank or empty without deleting it Brunner New Users to Excel 1 December 18th 06 10:44 PM
Copying cell values once and then making them static Tsjah Excel Worksheet Functions 5 July 7th 05 08:21 PM
Deleting all buttons in a collection Ken Loomis Excel Programming 5 July 3rd 05 12:04 AM
Help: Making a copying macro from cursor position ? -[::::Shamran::::]- Excel Programming 4 February 27th 05 01:16 PM
Deleting named ranges by looping through range collection agarwaldvk[_11_] Excel Programming 3 August 3rd 04 01:00 AM


All times are GMT +1. The time now is 08:21 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"