有没有办法可以复制我制作的这个宏,但让它改变为下一个复选框

有没有办法可以复制我制作的这个宏,但让它改变为下一个复选框

我已经制作了这个宏来选择单元格 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

相关内容