基本上我嘗試使用宏來做,看看它是如何在 VBA 中記錄的。我有這個資料集,我想從作業表中復制公司名稱并將其粘貼到 1994-2014 年的年份旁邊。然后對大約 800 家公司重復相同的程序。
我試著用這段代碼做一個,但我相信我需要回圈代碼。不是真正的 VBA 專家,只是試圖使用 VBA 來節省時間和錯誤
Sub CopyPaste()
CopyPaste Macro
Sheets("Name").SelectRange("C3").Select
Selection.Copy
Sheets("Stata").Select
Range("B2:B22").PasteSpecial xlPasteValues
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub


uj5u.com熱心網友回復:
這將非常粗糙,但以下代碼將完成您想要的。特別是如果你只需要做一次這個練習。
在我的示例中,公司串列從單元格 A2 開始,輸出從單元格 D2 開始。我用了 3 年 (2019 - 2021)
對于下面的代碼,第一個公司的位置(row & col)被放在變數copyRow & copyCol中作為整數(即??A2 = Row: 2, Col: 1)輸出位置的第一個單元格在pasteRow中設定& pasteCol (即 D2 = Row: 2, Col: 4) 變數。此外,開始年份和結束年份也在 startYear 和 endYear 變數中設定。
基本上,從那里開始它只是兩個嵌套回圈。只要串列中沒有空單元格,就可以允許任意數量的公司。for 回圈在每個公司的 startYear 和 endYear 之間每年回圈。
Sub copyPaste()
Dim copyWb As Workbook
Dim copySht As Worksheet
Dim pasteRow As Integer
Dim pasteCol As Integer
Dim copyRow As Integer
Dim copyCol As Integer
Dim startYear As Integer
Dim endYear As Integer
Set copyWb = ActiveWorkbook
Set copySht = copyWb.ActiveSheet
copySht.Activate
pasteRow = 2
pasteCol = 4
copyRow = 2
copyCol = 1
startYear = 2019
endYear = 2021
While copySht.Cells(copyRow, copyCol).Value <> ""
For curYear = startYear To endYear
copySht.Cells(pasteRow, pasteCol).Value = curYear
copySht.Cells(pasteRow, pasteCol 1).Value = copySht.Cells(copyRow, copyCol).Value
pasteRow = pasteRow 1
Next curYear
copyRow = copyRow 1
Wend
End Sub
uj5u.com熱心網友回復:
我正在嘗試對代碼進行一些更改,因為我想從其中復制并粘貼到另一張作業表中。我添加了變數pasteSht,但是當參考pasteSht.pasteRow它時,它拋出了一個錯誤。
Sub copyPaste()
Dim copyWb As Workbook
Dim copySht As Worksheet
Dim pasteSht As Worksheet
Dim pasteRow As Integer
Dim pasteCol As Integer
Dim copyRow As Integer
Dim copyCol As Integer
Dim startYear As Integer
Dim endYear As Integer
Set copyWb = ActiveWorkbook
Set copySht = copyWb.Worksheets("Sheet1")
Set pasteSht = copyWb.Worksheets("Sheet2")
copySht.Activate
pasteRow = 2
pasteCol = 4
copyRow = 2
copyCol = 1
startYear = 2019
endYear = 2021
While copySht.Cells(copyRow, copyCol).Value <> ""
For curYear = startYear To endYear
copySht.Cells(pasteRow, pasteCol).Value = curYear
copySht.Cells(pasteRow, pasteCol 1).Value = copySht.Cells(copyRow, copyCol).Value
pasteRow = pasteRow 1
Next curYear
copyRow = copyRow 1
Wend
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/380748.html
上一篇:單擊按鈕引發錯誤沒有這樣的元素
