自动将特定单元格的VBA应用于选择/列

自动将特定单元格的VBA应用于选择/列,vba,excel,Vba,Excel,我是VBA新手,需要一些帮助。我发现VBA可以查看活动单元格的值,并在单元格中插入与该值相等的行数 我的问题是,这只适用于活动单元格,我有一个列,我希望这个过程能够自动进行。有人知道我应该在下面的代码中更改什么吗 Sub InsertSome() Dim i As Integer, n As Integer, m As Long n = ActiveCell.Value m = ActiveCell.Row For i = 1 To n Rows(m * i + 1).Insert Ne

我是VBA新手,需要一些帮助。我发现VBA可以查看活动单元格的值,并在单元格中插入与该值相等的行数

我的问题是,这只适用于活动单元格,我有一个列,我希望这个过程能够自动进行。有人知道我应该在下面的代码中更改什么吗

Sub InsertSome()
Dim i As Integer, n As Integer, m As Long
n = ActiveCell.Value
m = ActiveCell.Row
For i = 1 To n
    Rows(m * i + 1).Insert
Next i
End Sub

提前谢谢

您必须使用
事件
。将此代码插入要进行此工作的工作表模块中。每次选择C列中的单元格时,它都会运行

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C:C")) Is Nothing And Target.Value <> "" Then '<-Change "C:C" to your column
    Dim i As Integer, n As Integer, m As Long
    n = Target.Value
    m = Target.Row
    For i = 1 To n
        Rows(m * i + 1).Insert
    Next i
End If
End Sub
Private子工作表\u selection更改(ByVal目标作为范围)

如果不相交(Target,Range(“C:C”))为Nothing且Target.Value为“”,则“您必须使用
事件
。将此代码插入要进行此工作的工作表模块中。每次选择C列中的单元格时,它都会运行

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("C:C")) Is Nothing And Target.Value <> "" Then '<-Change "C:C" to your column
    Dim i As Integer, n As Integer, m As Long
    n = Target.Value
    m = Target.Row
    For i = 1 To n
        Rows(m * i + 1).Insert
    Next i
End If
End Sub
Private子工作表\u selection更改(ByVal目标作为范围)

如果不相交(Target,Range(“C:C”))为Nothing且Target.Value为“”,则“您可以使用
工作表
事件之一,例如
工作表_选择更改
工作表_更改
事件

另外,您不需要有这么多变量,您可以使用
Target
对象的属性(相当于
ActiveCell
同样,您可以一次添加多行(不需要为
循环设置

代码

Private子工作表\u selection更改(ByVal目标作为范围)
'将列“A”修改为所需的列
如果不相交(目标,范围(“A:A”))则为零
'确保该值为数字、正数,并选择单个单元格
如果Target.Value>0且Trim(Target.Value)“”和IsNumeric(Target.Value)以及Target.Cells.Count=1,则
'不需要循环一次添加一行,
'只需使用下面的行立即添加目标(acitveCell)中的行数
范围(单元格(Target.Row+1,1),单元格(Target.Row+Target.Value,1)).EntireRow.Insert
如果结束
如果结束
端接头

您可以使用
工作表
事件之一,例如
工作表_选择更改
工作表_更改
事件

另外,您不需要有这么多变量,您可以使用
Target
对象的属性(相当于
ActiveCell
同样,您可以一次添加多行(不需要为
循环设置

代码

Private子工作表\u selection更改(ByVal目标作为范围)
'将列“A”修改为所需的列
如果不相交(目标,范围(“A:A”))则为零
'确保该值为数字、正数,并选择单个单元格
如果Target.Value>0且Trim(Target.Value)“”和IsNumeric(Target.Value)以及Target.Cells.Count=1,则
'不需要循环一次添加一行,
'只需使用下面的行立即添加目标(acitveCell)中的行数
范围(单元格(Target.Row+1,1),单元格(Target.Row+Target.Value,1)).EntireRow.Insert
如果结束
如果结束
端接头

您所说的“我希望此过程自动化的列”到底是什么意思?你想在发生某些事情时插入列?我想下面两个章节都理解了你的问题,而我没有,但是你真的想在每次选择列中的单元格时插入很多行吗?这可能会让人恼火。你所说的“我希望这个过程自动化的专栏”到底是什么意思?你想在发生某些事情时插入列?我想下面两个章节都理解了你的问题,而我没有,但是你真的想在每次选择列中的单元格时插入很多行吗?这可能会让人恼火。