I am new to VBA, Macro, Excel... all I am trying is to rearrange columns in sequence... so I have declared column name at first then the column range and tried to Cut, Insert/Paste the columns by their name one after another. The macro just executes does not give the desired output, as I am predicting that columns get shuffled. Then, I tried to cut all 24 columns at once and paste them in sequence one after another which unfortunately does not work. Then, I decided to cut a range of columns from that main sheet create a new sheet and paste there then cut single columns from that sheet and paste it back in the main sheet which is also not working. I am able to cut and paste the columns in the new sheet but not able to paste the columns in sheet "Main".
My Codes 1 - This is the code I tried to copy cut paste the column which executes but does not give the result.
Option Explicit
Sub Cutpastecols()
Dim colhead1 As String
Dim colhead2 As String
Dim colhead3 As String
Dim colhead4 As String
Dim colhead5 As String
colhead1 = "Container #"
colhead2 = "Dest. City Name"
colhead3 = "Origin City Name"
colhead4 = "POD City Name"
colhead5 = "POL City Name"
Dim ch1, ch2, ch3, ch4, ch5, ch6, ch7, ch8, ch9, ch10, _
ch11, ch12, ch13, ch14, ch15, ch16, ch17, ch18, ch19, ch20, _
ch21, ch22, ch23, ch24 As String
'1 Full In Gate at Inland or Interim Point (Origin) _recvd & Full In Gate at Inland or Interim Point (Origin) _actual
ch1 = "Full In Gate at Inland or Interim Point (Origin) _actual"
ch2 = "Full In Gate at Inland or Interim Point (Origin) _recvd"
'2 Full Out Gate from Ocean Terminal (CY or Port)_actual & Full Out Gate from Ocean Terminal (CY or Port)_recvd
ch3 = "Full Out Gate from Ocean Terminal (CY or Port)_actual"
ch4 = "Full Out Gate from Ocean Terminal (CY or Port)_recvd"
'3 Discharged at Port of Discharge_actual & Discharged at Port of Discharge_recvd
ch5 = "Discharged at Port of Discharge_actual"
ch6 = "Discharged at Port of Discharge_recvd"
'4 On Rail (Origin)_actual & On Rail (Origin)_recvd
ch7 = "On Rail (Origin)_actual"
ch8 = "On Rail (Origin)_recvd"
'5 Full Out Gate at Inland or Interim Point (Destination)_actual & Full Out Gate at Inland or Interim Point (Destination)_recvd
ch9 = "Full Out Gate at Inland or Interim Point (Destination)_actual"
ch10 = "Full Out Gate at Inland or Interim Point (Destination)_recvd"
'6 Full In Gate at Ocean Terminal (CY or Port)_actual & Full In Gate at Ocean Terminal (CY or Port)_recvd
ch11 = "Full In Gate at Ocean Terminal (CY or Port)_actual"
ch12 = "Full In Gate at Ocean Terminal (CY or Port)_recvd"
'7 Off Rail (Destination)_actual & Off Rail (Destination)_recvd
ch13 = "Off Rail (Destination)_actual"
ch14 = "Off Rail (Destination)_recvd"
'8 Off Rail (Origin)_actual & Off Rail (Origin)_recvd
ch15 = "Off Rail (Origin)_actual"
ch16 = "Off Rail (Origin)_recvd"
'9 On-Board Vessel at Port of Loading_actual & On-Board Vessel at Port of Loading_recvd
ch17 = "On-Board Vessel at Port of Loading_actual"
ch18 = "On-Board Vessel at Port of Loading_recvd"
'10 Vessel Arrived at Port of Discharge_actual & Vessel Arrived at Port of Discharge_recvd
ch19 = "Vessel Arrived at Port of Discharge_actual"
ch20 = "Vessel Arrived at Port of Discharge_recvd"
'11 On Rail (Destination)_actual & On Rail (Destination)_recvd
ch21 = "On Rail (Destination)_actual"
ch22 = "On Rail (Destination)_recvd"
'12 Vessel Departed from Port of Loading_actual & Vessel Departed from Port of Loading_recvd
ch23 = "Vessel Departed from Port of Loading_actual"
ch24 = "Vessel Departed from Port of Loading_recvd"
Dim colhedr1, colhedr2, colhedr3, colhedr4, colhedr5, cr1, cr2, cr3, cr4, cr5, cr6, cr7, cr8, cr9, cr10, _
cr11, cr12, cr13, cr14, cr15, cr16, cr17, cr18, cr19, cr20, _
cr21, cr22, cr23, cr24 As Range
'----- First Cut all the column----------
Set colhedr2 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead2, LookIn:=xlValues)
Columns(colhedr2.Column).Cut
Set colhedr3 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead3, LookIn:=xlValues)
Columns(colhedr3.Column).Cut
Set colhedr4 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead4, LookIn:=xlValues)
Columns(colhedr4.Column).Cut
Set colhedr5 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead5, LookIn:=xlValues)
Columns(colhedr5.Column).Cut
Set cr1 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch1, LookIn:=xlValues)
Columns(cr1.Column).Cut
Set cr2 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch2, LookIn:=xlValues)
Columns(cr2.Column).Cut
Set cr3 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch3, LookIn:=xlValues)
Columns(cr3.Column).Cut
Set cr4 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch4, LookIn:=xlValues)
Columns(cr4.Column).Cut
Set cr5 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch5, LookIn:=xlValues)
Columns(cr5.Column).Cut
Set cr6 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch6, LookIn:=xlValues)
Columns(cr6.Column).Cut
Set cr7 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch7, LookIn:=xlValues)
Columns(cr7.Column).Cut
Set cr8 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch8, LookIn:=xlValues)
Columns(cr8.Column).Cut
Set cr9 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch9, LookIn:=xlValues)
Columns(cr9.Column).Cut
Set cr10 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch10, LookIn:=xlValues)
Columns(cr10.Column).Cut
Set cr11 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch11, LookIn:=xlValues)
Columns(cr11.Column).Cut
Set cr12 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch12, LookIn:=xlValues)
Columns(cr12.Column).Cut
Set cr13 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch13, LookIn:=xlValues)
Columns(cr13.Column).Cut
Set cr14 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch14, LookIn:=xlValues)
Columns(cr14.Column).Cut
Set cr15 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch15, LookIn:=xlValues)
Columns(cr15.Column).Cut
Set cr16 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch16, LookIn:=xlValues)
Columns(cr16.Column).Cut
Set cr17 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch17, LookIn:=xlValues)
Columns(cr17.Column).Cut
Set cr18 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch18, LookIn:=xlValues)
Columns(cr18.Column).Cut
Set cr19 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch19, LookIn:=xlValues)
Columns(cr19.Column).Cut
Set cr20 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch20, LookIn:=xlValues)
Columns(cr20.Column).Cut
Set cr21 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch21, LookIn:=xlValues)
Columns(cr21.Column).Cut
Set cr22 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch22, LookIn:=xlValues)
Columns(cr22.Column).Cut
Set cr23 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch23, LookIn:=xlValues)
Columns(cr23.Column).Cut
Set cr24 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch24, LookIn:=xlValues)
Columns(cr24.Column).Cut
'-------Start pasting in sequence-----
'colhead1 dont cut colhead1 (just find colhead1 and start pasting columns after colhead1)
Set colhedr1 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead1, LookIn:=xlValues)
Columns(colhedr2.Column).Insert shift:=xlToRight
Set colhedr2 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead2, LookIn:=xlValues)
Columns(colhedr3.Column).Insert shift:=xlToRight
Set colhedr3 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead3, LookIn:=xlValues)
Columns(colhedr4.Column).Insert shift:=xlToRight
Set colhedr4 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead4, LookIn:=xlValues)
Columns(colhedr5.Column).Insert shift:=xlToRight
Set colhedr5 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead5, LookIn:=xlValues)
Columns(cr1.Column).Insert shift:=xlToRight
Set cr1 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch1, LookIn:=xlValues)
Columns(cr2.Column).Insert shift:=xlToRight
Set cr2 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch2, LookIn:=xlValues)
Columns(cr3.Column).Insert shift:=xlToRight
Set cr3 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch3, LookIn:=xlValues)
Columns(cr4.Column).Insert shift:=xlToRight
Set cr4 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch4, LookIn:=xlValues)
Columns(cr5.Column).Insert shift:=xlToRight
Set cr5 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch5, LookIn:=xlValues)
Columns(cr6.Column).Insert shift:=xlToRight
Set cr6 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch6, LookIn:=xlValues)
Columns(cr7.Column).Insert shift:=xlToRight
Set cr7 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch7, LookIn:=xlValues)
Columns(cr8.Column).Insert shift:=xlToRight
Set cr8 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch8, LookIn:=xlValues)
Columns(cr9.Column).Insert shift:=xlToRight
Set cr9 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch9, LookIn:=xlValues)
Columns(cr10.Column).Insert shift:=xlToRight
Set cr10 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch10, LookIn:=xlValues)
Columns(cr11.Column).Insert shift:=xlToRight
Set cr11 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch11, LookIn:=xlValues)
Columns(cr12.Column).Insert shift:=xlToRight
Set cr12 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch12, LookIn:=xlValues)
Columns(cr13.Column).Insert shift:=xlToRight
Set cr13 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch13, LookIn:=xlValues)
Columns(cr14.Column).Insert shift:=xlToRight
Set cr14 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch14, LookIn:=xlValues)
Columns(cr15.Column).Insert shift:=xlToRight
Set cr15 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch15, LookIn:=xlValues)
Columns(cr16.Column).Insert shift:=xlToRight
Set cr16 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch16, LookIn:=xlValues)
Columns(cr17.Column).Insert shift:=xlToRight
Set cr17 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch17, LookIn:=xlValues)
Columns(cr18.Column).Insert shift:=xlToRight
Set cr18 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch18, LookIn:=xlValues)
Columns(cr19.Column).Insert shift:=xlToRight
Set cr19 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch19, LookIn:=xlValues)
Columns(cr20.Column).Insert shift:=xlToRight
Set cr20 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch20, LookIn:=xlValues)
Columns(cr21.Column).Insert shift:=xlToRight
Set cr21 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch21, LookIn:=xlValues)
Columns(cr22.Column).Insert shift:=xlToRight
Set cr22 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch22, LookIn:=xlValues)
Columns(cr23.Column).Insert shift:=xlToRight
Set cr23 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(ch23, LookIn:=xlValues)
Columns(cr24.Column).Insert shift:=xlToRight
End Sub
My Code 2 This I created in 2 modules and then call the macros... Now in this below code module 1 cuts all data from starting from column D and creates a new sheet named "Column" and paste it there. then module 2 I created that cuts the single columns from sheet module and paste it the sheet named "Main"! Unfortunately, this module 2 does not work. It creates a new sheet named column and pastes the data there but module 2 is not working neither it gives any error.
Module 1 -
Sub copy2()
Dim Source As Worksheet
Dim Destination As Worksheet
Dim Last As Long
Application.ScreenUpdating = False
'Checking whether "Master" sheet already exists in the workbook
For Each Source In ThisWorkbook.Worksheets
If Source.Name = "Column" Then
MsgBox "Column sheet already exist"
Exit Sub
End If
Next
'Inserting new worksheets in the workbook
Set Destination = Worksheets.Add(after:=Worksheets("Main"))
'Renaming the worksheet
Destination.Name = "Column"
'Looping through the worksheets in the workbook
For Each Source In ThisWorkbook.Worksheets
If Source.Name = "Main" Then
'Finding the last column from the destination sheet
Last = Destination.Range("A1").SpecialCells(xlCellTypeLastCell).Column
If Last = 1 Then
'Pasting the data in the destination sheet
Source.Range("D:XDF").Copy Destination.Columns(Last)
Else
Source.Range("D:XDF").Copy Destination.Columns(Last + 1)
End If
End If
Next
ActiveWorkbook.Worksheets("Main").Range("D:XDF").Delete
Columns.AutoFit
Application.ScreenUpdating = True
End Sub
Module 2
Dim lastrow As Integer, erow As Integer, sheet1 As Worksheet, sheet2 As Worksheet
Dim colhead1 As String
Dim colhead2 As String
Dim colhead3 As String
Dim colhead4 As String
Dim colhead5 As String
colhead1 = "Container #"
colhead2 = "Dest. City Name"
colhead3 = "Origin City Name"
colhead4 = "POD City Name"
colhead5 = "POL City Name"
Dim colhedr1, colhedr2, colhedr3, colhedr4, colhedr5, cr1, cr2, cr3, cr4, cr5, cr6, cr7, cr8, cr9, cr10, _
cr11, cr12, cr13, cr14, cr15, cr16, cr17, cr18, cr19, cr20, _
cr21, cr22, cr23, cr24 As Range
'----- First Cut all the column----------
Set colhedr2 = ActiveWorkbook.Worksheets("Column").Rows(1).Find(colhead2, LookIn:=xlValues)
Set colhedr1 = ActiveWorkbook.Worksheets("Main").Rows(1).Find(colhead1, LookIn:=xlValues)
Columns(colhedr2.Column).Cut
Columns(colhedr1.Column).Insert shift:=xlToRight
Module 2 I just created for 1 column and tested it does not work. Please guide and advice any easy way of solving this.
[