+ Reply to Thread
Results 1 to 5 of 5

Copy number of rows based on cell value

Hybrid View

  1. #1
    Registered User
    Join Date
    02-21-2010
    Location
    UK
    MS-Off Ver
    Excel 2003
    Posts
    40

    Smile Copy number of rows based on cell value

    Hey all,

    I have the following VBA code which copies a range from a particular sheet and pastes the data to the last available row in another master sheet (database). The problem is I want to copy the number of rows based on a cell value in one of my sheets.

    For example, if my number is "2" I only want to copy the first 2 rows (range B2 to R3), if this number displays "3" I want it to copy the 3 rows (range B2 to R4) etc.

    The below code means I am just pasting all of my maximum 4 rows across to the database when some of these fields are blank.

    Sub SaveForm()
    
        Worksheets("Main").Activate          
    
        With Application
               .ScreenUpdating = False
               .EnableEvents = False
        End With
        
        
                    Dim dataBaselocation As String
                    dataBaselocation = Worksheets("Database Location").Range("B3").Value
    
        
    ' Copy data and submit to database
    
                                               
                                    'copy data from Data form
                                    
                                    Worksheets("Data").Visible = True
                                    Worksheets("Data").Activate
                                    
                                    'Range("BT3").Value = decisionDate
                                    Range("B2:R5").Select
                                    Selection.Copy
                                    
                                    'opening Workbook
                                    Application.Workbooks.Open (dataBaselocation)
                                    
                                    'Make the Data sheet visible and activate it
                                    Worksheets("Sheet1").Visible = True
                                    Worksheets("Sheet1").Activate
                                    
                                    'Identify the last row and select cell to paste from
                                    lastrow1 = Range("C1:C10000").End(xlDown).Row + 1
                                    Range("A" & lastrow1).Select
                                    
                                    ' paste data to the next available row
                                    Selection.PasteSpecial Paste:=xlPasteValues
                                    
                                    'Save file and close
                                    ActiveWorkbook.Save
                                    ActiveWorkbook.Close
                                    
                                    
                                    'close file
                                    ActiveWorkbook.Close
    
        
        With Application
                .ScreenUpdating = True
                .EnableEvents = True
        End With
        
    End Sub
    Last edited by Leith Ross; 03-20-2011 at 01:25 PM. Reason: Changed Quote Tags to Code Tags

  2. #2
    Forum Moderator Leith Ross's Avatar
    Join Date
    01-15-2005
    Location
    San Francisco, Ca
    MS-Off Ver
    2000, 2003, & 2010
    Posts
    23,259

    Re: Copy number of rows based on cell value

    Hello DaveNUFC
    ,
    Which cell on which worksheet of which workbook is this value to be found?
    Sincerely,
    Leith Ross

    Remember To Do the Following....

    1. Use code tags. Place [CODE] before the first line of code and [/CODE] after the last line of code.
    2. Thank those who have helped you by clicking the Star below the post.
    3. Please mark your post [SOLVED] if it has been answered satisfactorily.


    Old Scottish Proverb...
    Luathaid gu deanamh maille! (Rushing causes delays!)

  3. #3
    Registered User
    Join Date
    02-21-2010
    Location
    UK
    MS-Off Ver
    Excel 2003
    Posts
    40

    Re: Copy number of rows based on cell value

    Hi Leith,

    It is B53 within the same sheet - this will display a value from 1 to 4 and I want the ranges specific to this number. Hope you can assist?

    Thanks
    Dave

  4. #4
    Forum Moderator Leith Ross's Avatar
    Join Date
    01-15-2005
    Location
    San Francisco, Ca
    MS-Off Ver
    2000, 2003, & 2010
    Posts
    23,259

    Re: Copy number of rows based on cell value

    Hello DaveNUFC,

    If I understand you correctly then this should work.
    Sub SaveForm()
    
        Worksheets("Main").Activate          
    
        With Application
               .ScreenUpdating = False
               .EnableEvents = False
        End With
        
        
                    Dim dataBaselocation As String
                    dataBaselocation = Worksheets("Database Location").Range("B3").Value
    
        
    ' Copy data and submit to database
    
                                               
                                    'copy data from Data form
                                    
                                    Worksheets("Data").Visible = True
                                    Worksheets("Data").Activate
                                    
                                    Range("B2:R2").Resize(RowSize:=Range("B53").Value).Copy
                                    
                                    'opening Workbook
                                    Application.Workbooks.Open (dataBaselocation)
                                    
                                    'Make the Data sheet visible and activate it
                                    Worksheets("Sheet1").Visible = True
                                    Worksheets("Sheet1").Activate
                                    
                                    'Identify the last row and select cell to paste from
                                    lastrow1 = Range("C1:C10000").End(xlDown).Row + 1
                                    Range("A" & lastrow1).Select
                                    
                                    ' paste data to the next available row
                                    Selection.PasteSpecial Paste:=xlPasteValues
                                    
                                    'Save file and close
                                    ActiveWorkbook.Save
                                    ActiveWorkbook.Close
                                    
                                    
                                    'close file
                                    ActiveWorkbook.Close
    
        
        With Application
                .ScreenUpdating = True
                .EnableEvents = True
        End With
        
    End Sub

  5. #5
    Registered User
    Join Date
    02-21-2010
    Location
    UK
    MS-Off Ver
    Excel 2003
    Posts
    40

    Re: Copy number of rows based on cell value

    This works - excellent. Thank you.

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1