Jim Lawrence
accessd at shaw.ca
Tue Mar 18 12:35:56 CDT 2008
Hi Susan: Here is a piece of code I designed to delete a range within code. <code> Public Function MoveRange() ' Create a range from the current row and first column ' and extending down to the last row of data. This function ' under program control, deletes the current row ' by copying all the data below the current position and ' to the last row of data and pasting it, overtop starting ' at the current position. ' This routine manges the problem of deleting an entite row ' but limiting the effect to a range of columns. ' Create by Jim Lawrence 15 July 2006. Dim lngRowPosition As Long Dim lngRowCount As Long Dim strCell As String ' Get currenty row position lngRowPosition = Application.ActiveCell.Row lngRowCount = 0 ' Establish the top left hand corner of the range strCell = "a" & lngRowPosition ' Stop screen display Application.ScreenUpdating = False ' Get the row count of the range from the current row ' to the last row with data. lngRowCount = GetRecordPosition() ' Set the start of the Range (top left-hand corner) Range(strCell).Select ' Select the data within the range coordinates, given the offset ' and copy all the data. The range selection is actaully one row below ' the current row and one row below the last row of data. Selection.CurrentRegion.Select Selection.Offset(lngRowPosition, 0).Resize(lngRowCount - lngRowPosition + 2).Select Selection.Copy ' Re-set the range start position Range(strCell).Select ' Now paste the data and clear the buffer ActiveSheet.Paste Application.CutCopyMode = False ' Turn on the screen display. Application.ScreenUpdating = True ' Set the current position to the initial start position Range(strCell).Select End Function Public Function GetRecordPosition() As Integer ' Find the last row with data below the start position Dim intCounter As Integer ' Set current row Range("a2").Select intCounter = 0 Do If IsEmpty(ActiveCell) = False Then intCounter = intCounter + 1 ActiveCell.Offset(1, 0).Select End If Loop Until IsEmpty(ActiveCell) = True ' Set back to current row Range("a2").Select GetRecordPosition = intCounter End Function </code> HTH Jim -----Original Message----- From: dba-tech-bounces at databaseadvisors.com [mailto:dba-tech-bounces at databaseadvisors.com] On Behalf Of Susan Harkins Sent: Tuesday, March 18, 2008 9:29 AM To: DBA Tech List Subject: [dba-Tech] Assign current selection to Range object I've run into this before and had trouble -- what is the simplest way to define a Range object using the current range selection in a sheet? For instance, if I select cells A1:B4, I want VBA to create a Range object that equals A1:B4. This shouldn't totally stump me, but I just can't get it and can't find anything in Help -- thought I was on the right track with CurrentRegion, but couldn't get it right. Susan H. _______________________________________________ dba-Tech mailing list dba-Tech at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/dba-tech Website: http://www.databaseadvisors.com