首页 > 解决方案 > 用什么代替 .EntireColumn

问题描述

我正在尝试创建一个简单的计数表,它有 5 个按钮来增加每个字段的计数,一个“新一轮”按钮可以在新列(R2 等)中开始新一轮,以及清除所有按钮的清除按钮计数并从第 1 轮重新开始

截屏

到目前为止,我已经想出了这段代码:

    Function rngLastRound() As Range
    With Range("2:2").Cells(1, Columns.Count).End(xlToLeft)
        Set rngLastRound = .EntireColumn
    End With
End Function
Sub IncrementCurrentRoundOfRow(N As Long)
    With rngLastRound
        .Cells(N, 1).Value = Val(CStr(.Cells(N, 1).Value)) + 1
    End With
End Sub
Sub IncrementCurrentRoundA()
    Call IncrementCurrentRoundOfRow(3)
End Sub
Sub IncrementCurrentRoundB()
    Call IncrementCurrentRoundOfRow(4)
End Sub
Sub IncrementCurrentRoundC()
    Call IncrementCurrentRoundOfRow(5)
End Sub
Sub IncrementCurrentRoundD()
    Call IncrementCurrentRoundOfRow(6)
End Sub
Sub IncrementCurrentRoundE()
    Call IncrementCurrentRoundOfRow(7)
End Sub
Sub NewRound()
    With rngLastRound.Offset(0, 1)
        .Cells(2, 1).Value = "R" & (.Column - 1)
        .Cells(3, 1).Resize(5, 1).Value = 0
    End With
End Sub
Sub Clear()
    Range("B2", rngLastRound).ClearContents
    Call NewRound
End Sub

该代码工作正常,但它清除了整个列,这意味着总数和总计也被清除。如何通过不指定 .EntireColumn 属性而是指定特定范围来防止这种情况发生?

谢谢

标签: excelvba

解决方案


尝试将Set rngLastRound = .EntireColumnrngLastRound () 函数中的行更改为Set rngLastRound = Application.Intersect (.EntireColumn, Rows ("2: 7"))


推荐阅读