Excel VBA代码重复行

时间:2014-10-14 16:39:06

标签: excel vba excel-vba

我在调查中使用以下代码,在选中时只在C:H范围中的一个范围内创建x个框。我想从这个代码当前使用的行(第3行)到第152行重复它,但我不确定如何让它工作。

我该怎么做呢?我是一个新手,所以任何帮助将不胜感激。

-Chris

Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rInt As Range
Dim rCell As Range
Set rInt = Intersect(Target, Range("C3:H3"))

If Not rInt Is Nothing Then
    If Application.WorksheetFunction.CountA(Range("C3:H3")) > 0 Then
        Range("C3:H3").Value = ""
    End If

    For Each rCell In rInt
       If rCell.Value = "" Then
            rCell.Value = "X"
       ElseIf rCell.Value = "X" Then
            rCell.Value = ""
       End If
    Next
End If

Set rInt = Nothing
Set rCell = Nothing
Cancel = True

End Sub

2 个答案:

答案 0 :(得分:0)

现在您的代码为:

如果选择的范围与C3:H3相交,则清除C3:H3的内容,然后遍历选区中的所有单元格,这些单元格也位于C3:H3中并设置他们到" X" (它们都是空白的,所以你的If rcell.value = ""是多余的)。

循环使用C3:H152应用相同的逻辑(开始时没有多大意义)然后将for循环更改为For each rcell in Range("C3:H152")

只有在所选内容与if之间存在交集时,才会对该范围内的每个单元格执行C3:H3语句。我想你会想要调整你的代码,以便更好地适应你想做的事情。

答案 1 :(得分:0)

您可以将行号声明为变量,然后使用For循环,如下所示:

Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rInt As Range
Dim rCell As Range

For rw = 3 To 152

Set rInt = Intersect(Target, Range("C" & rw & ":H" & rw))

If Not rInt Is Nothing Then
    If Application.WorksheetFunction.CountA(Range("C" & rw & ":H" & rw)) > 0 Then
        Range("C" & rw & ":H" & rw).Value = ""
    End If

    For Each rCell In rInt
       If rCell.Value = "" Then
            rCell.Value = "X"
       ElseIf rCell.Value = "X" Then
            rCell.Value = ""
       End If
    Next
End If

Set rInt = Nothing
Set rCell = Nothing
Cancel = True

Next

End Sub