我已经制作了这个宏来选择单元格 A3,复制值并将其粘贴到单元格 Y3 中。然后它清除单元格 A3,因为这是一个下拉框,通过这样做,现在可以在 A4 中选择下拉选项。
CopyPasteDelete Macro
Range("A3").Select
Selection.Copy
Range("Y3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A3").Select
Selection.ClearContents
Range("Y3").Select
End sub
我是否可以复制这个宏,将 A3 更改为 A4,将 Y3 更改为 Y4,然后将其链接到 Z4 中的另一个复选框?
或者我是否必须用困难的方式去做,并一次又一次地复制它,更改宏并添加另一个复选框?
答案1
如果您根据当前选择或活动单元格的位置进行相对定位,则可以让 A 列和 Y 列中任意行的单元格执行这些任务。
Sub A2Y()
Dim r As Long, sr As Long
If Not Intersect(Selection, ActiveSheet.UsedRange) Is Nothing Then
For r = 1 To Intersect(Selection, ActiveSheet.UsedRange).Rows.Count
sr = Intersect(Selection, ActiveSheet.UsedRange).Cells(r, 1).Row
Cells(sr, "Y") = Cells(sr, "A").Value
Cells(sr, "A").ClearContents
Next r
Cells(r - 1, "Y").Select
End If
End Sub
这将查看你选择的单元格以及工作表中的每个单元格使用范围,它将把该行的值从 A 列移动到 Y 列并清除 A 列。
答案2
像这样,只需正确定义你的范围和偏移量
Sub test()
Dim c As Range
For Each c In Range("A1:A100")
c.Offset(, 24) = c
c.ClearContents
Next
End Sub
如果您想以另一种方式执行此操作,您可以遍历单元格 -
Option Explicit
Sub test()
Dim i As Integer
Dim j As Integer
i = Range("A" & Rows.Count).End(xlUp).Row
For j = 1 To i
Cells(j, "Y") = Cells(j, "A")
Cells(j, "A").ClearContents
Next
End Sub