我有這個資料
資料
我有這個代碼,但它抓取“BO”列并將其復制到右側。我需要一個可重復的宏來復制列 BK 并將其插入到它的右側,從而將空格和總計推過去。我把它放在一個按鈕上,這樣我就可以重復添加列。
我的代碼是這樣的;
Sub Test()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim rLastCell As Range
Dim LastCol As Integer
Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
LastCol = rLastCell.Column
ws.Columns(LastCol).Copy ws.Columns(LastCol 1)
End Sub
uj5u.com熱心網友回復:
我想,請求是,Jeff 想要復制他認為的列,這是緊隨其后的最后一列。
但問題是,Excel 經常將與用戶不同的列視為最后一列:如果一個單元格例如包含一個結果為空的公式,則該單元格對于用戶來說是空的,但對于 Excel 來說則不是。所以要弄清楚最后一列并不是那么容易。
我建議的一種解決方法是:在您認為的列中選擇一個單元格,這是最后一個,啟動將所選列直接復制到它的宏:
Sub CopyColumnToTheRight()
Dim ThisCol As Integer, ThisRow As Long, CurS As Worksheet, IsOk As Boolean
Set CurS = ActiveSheet
ThisRow = ActiveCell.Row
ThisCol = ActiveCell.Column
IsOk = IsEmpty(CurS.Cells(ThisRow, ThisCol 1))
If IsOk Then 'just to prevent to start the macro on the wrong column
CurS.Columns(ThisCol).Copy
CurS.Columns(ThisCol 1).Insert Shift:=xlToRight
CurS.Cells(ThisRow, ThisCol 1).Select
Else
Beep
End If
End Sub
uj5u.com熱心網友回復:
你問的比你擁有的要簡單得多!看需要的代碼
Sub Test()
Dim ws As Worksheet,rLastCell as range, LastCol as long
Set ws = ActiveSheet
Set rLastCell = ws.Cells.Find(What:="*", After:=ws.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, MatchCase:=False)
LastCol = rLastCell.Column
ws.Columns(LastCol-3).copy
ws.Columns(LastCol-2).insert shift:=xlToRigh
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324384.html
