簡體   English   中英

記錄宏時Excel中的變量數據集。 VBA

[英]Variable datasets in Excel when recording Macro. VBA

我正在錄制宏,以便進行簡單的處理,但我不得不經常走得更簡單些。 我沒有問題,因為它非常簡單,但是在此階段中我有三列。 我們將它們稱為“綠色”,“琥珀色”和“紅色”,而我只想通過將一個放置在另一個頂部的上方來創建一個(上下)“紅色”,“琥珀色”和“綠色”列。

當數據集更改並且這些列更改其大小(或多或少的行)時,宏將根據記錄宏時所使用的絕對引用來剪切這些列。

我希望這種選擇(將紅色琥珀色和綠色選擇為要粘貼到單個列上的單個列)是“動態的”並隨着數據集的變化而變化。

在此處輸入圖片說明

我選擇單個列的方式是這樣的。

Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Range("A1:B7").Select
Selection.Cut
ActiveCell.Offset(0, -5).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(0, 9).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Range("A1:B8").Select
Selection.Copy
ActiveCell.Offset(0, -9).Range("A1").Select
Selection.Insert Shift:=xlDown

在這種情況下,我試圖使用相對引用,以防萬一魔術自動發生。 我不知道任何VBA編程,所以才使用宏。

我會更詳細地介紹,但我認為任何對VBA有所了解的人都將知道如何解決此問題。

謝謝

在您的情況下,您可以使用CurrentRegion,它將自動調整大小以接受所有連續的行和列。

Sub x()

Range("A:B").ClearContents

Range("N1").CurrentRegion.Copy Range("A1")
'alternative to above if CurrentRegion not applicable
'Range("N1",range("N" & rows.count).end(xlup)).resize(,2).Copy Range("A1")
Range("J1").CurrentRegion.Copy Range("A" & Rows.Count).End(xlUp)(2)
Range("F1").CurrentRegion.Copy Range("A" & Rows.Count).End(xlUp)(2)

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM