Excel VBA Copy and Paste loop accounting for blank cells - excel

I am new to using VBA. I have an Excel document that has 500 sheets worth of data each sheet only has at most 45 rows and up to column W. I am trying to have a macro that copies the data from each of the 500 sheets and pastes it into a sheet named "Master". I am able to use the following code to perform this successfully.
Sub CopyPaste()
Dim wks As Worksheet
For Each wks In ThisWorkbook.Worksheets
If Not wks.Name = "Master" Then
wks.Range("A1:W" & wks.Cells(Rows.Count, "A").End(xlUp).Row).Copy _
Destination:=Worksheets("Master").Cells(Rows.Count, "A").End(xlUp).Offset(1)
End If
Next
End Sub
The issue I am running into is that some of the sheets have a row that is blank below the header before the data begins and as my code is written currently it seems like the macro thinks this is the end of the page and moves to the next sheet and is missing data that should be copied and pasted. I am looking for some assistance/guidance on how to account for these blank cells/rows so that the copy and pasting continue for the sheet through the end. Any help would be much appreciated, thank you.

Related

Copy and Paste Column Regardless of Worksheet Open

I currently have 3 worksheets in my workbook ("SheetJS", "Sheet1", and "Sheet2").
I want the macro to copy and paste the values of Sheet1 from Column K to Column L.
My code works but copies and pastes the columns on whichever worksheet is open/active.
I want the macro to code and paste the values only in "Sheet1" regardless of which one of the worksheets is open.
Any tips would help.
Thanks!
Sub Copy_K_to_L_2()
With ThisWorkbook.Sheets("Sheet1")
Columns("K:K").Copy Destination:=Columns("L:L")
End With
End Sub
Try to edit your existing line:
Columns("K:K").Copy Destination:= Thisworkbook.sheets("Sheet1").Columns("L:L")

Subscript out of range for pasting transposed values

I am new to VBA and running into an issue with a paste / value / transpose Macro. I need to be able copy the information from multiple workbooks all with different names, however the workbook where it will be pasted will be the same except for the cells where it will be pasted.
I have tried changing ("Sheet") to the actual sheet name which is "Job Cost Summary" as well as changing "Sheet" to "Sheet1". One thing that happens is when I copy the information from the workbook, it shows the hashed line of the information I have copied but as soon as I hit "macros" the hash marks go away. Not sure if this is important.
Sub Pasteinfo()
Dim WS As Worksheet
Set WS = ThisWorkbook.Worksheets("Sheet1")
WS.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Transpose:=True
End Sub
I am hoping for a Macro that will allow me to take previously copied information from workbooks & worksheets with different names and paste them as values & transposed into another workbook.
When I run above code I am getting an error 9 that says "Subscript out of range."

How to copy data to multiple sheets from first excel sheet in a workbook

I want to copy cells A103 to Y148 from first sheet to every sheet in my excel workbook. What code I should use?
Here is a four-step approach.
1. Design the action in plain words, like,
' loop through rows 103 to 148 in Sheet1
' copy the row
' loop through all other sheets in the workbook
' paste the row in the first empty row at the bottom of each
Research code for each action. For example, google for "VBA Excel loop through rows"
Be amazed at the multitude of ready-to-use code you will find, and at how quickly you will learn to do impossible things.
Come back here with any problems you can't solve on your own.
Depending on what you mean by 'every sheet in my excel workbook', this may be faster than looping a paste operation through all of the remaining worksheets.
Sub galumph()
Dim w As Long, wss As String, wsa as Variant
For w = 2 To Worksheets.Count
wss = wss & IIf(CBool(Len(wss)), ";", vbNullString) & Worksheets(w).Name
Next w
wsa = Split(wss, ";") 'make array of worksheet names
Worksheets(1).Range("A103:Y148").Copy 'copy from A103:Y148 on Sheet1
Worksheets(wsa).Select 'select all of the remaining worksheets
Worksheets(wsa(0)).Range("A1").Activate 'activate the destination on one of the worksheets
Worksheets(wsa(0)).Paste 'paste the data into all worksheets
End Sub

Excel: Open in the first empty cell

Is it possible to let Excel automatically select the first empty cell in column A, whenever I open the document?
I have got the following to find the the first empty line:
ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Value + 1.Count, 1).End(xlUp).Value + 1
In order to get Excel to select the first empty cell in column A when you open your workbook, you need to place the following code in the ThisWorkbook module.
Private Sub Workbook_Open()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Cells(ws.Rows.Count, 1).End(xlUp).Offset(1, 0).Select
End Sub
This will select the first empty cell in the ActiveSheet. If you got multiple sheets in your workbook and you want to select the first empty row in a specific sheet, say Sheet1, you should change the second line of code to:
Set ws = ActiveWorkbook.Sheets("Sheet1")
You can do that.
You need write VBA(macro) program to realize.
Code you need is as follow
Private Sub Workbook_Open()
ActiveWindow.Range("A65536").End(xlUp).Offset(1,0).Select
End Sub
Meaning of code is:
"Private Sub Workbook_Open()" is predefined name subroutine which will be executed when the workbook be opened.
"ActiveWindow.Range("A65536").End(xlUp)" will find last cell with data in A column ("last cell")
"ActiveWindow.Range("A65536").End(xlUp).Offset(1,0)" will move to cell next to "last cell", that will be first blank cell.
ActiveWindow.Range("A65536").End(xlUp).Offset(1,0).Select will select tha first blank cell.
I assumed that you use Excel 2003 or older, OR number of rows with data in your worksheet is less than 65536.
If you use Excel 2007 or newer and you have rows with data in your worksheet more than 65536, please modify 65536 to the value large enough to cover rows in your worksheet.

Copying Large Amounts of Data in Excel

I've got a spreadsheet with around 90 identically formatted workbooks. I need to copy and paste around 336 independant formulas located in one row from a completed worksheet to all the other worksheets. Unfortunatley, this ends up being around 30k indvidual cells that need to be copied and pasted at once. Is there a workaround other than splitting it up and doing it manually?
Any help is apperciated. Thanks.
You can try using VBA. Something like the procedure below should get you started. The procedure below takes the information from. This procedure assumes that your formulas begin in Row A1 and end in C1, change as you need. Inside the array, list the name of the sheets you want.
Sub copyFormulas()
Dim rng As Range
Dim WS As Worksheet
With Sheets("The Sheet Name with the Formulas To Copy")
Set rng = .Range(.Range("A1:C1"), Range("A" & Rows.Count).End(xlUp))
End With
For Each WS In Sheets(Array("Your Destination Sheet Name Here", "And Here")) 'Add more sheets if you need to
WS.Rows(2).Resize(rng.Count).Copy
rng.Copy Destination:=WS.Range("A1")
Next WS
End Sub

Resources