0
    Dim iRow As Long
    Dim CopyRange As String

    iRow = (ActiveCell.Row)
    Let CopyRange = "M" & iRow & ":" & "T" & iRow

    Range(CopyRange).ClearContents

我有这段代码,我需要根据我的封面将 CopyRange 的第二部分(“T”和 iRow)声明为变量。

M 到 X 列代表 12 个月,因此每当我将封面更改为 Septemper 时,例如输入表将值更改为 9,因此当我使用选择方法时,它选择当前月份,在这种情况下为 U 列。

在这种情况下,我需要做的是清除当前月份以外的所有内容,当我将封面从 M 列(一月)更改为 T 列(八月)时。

我一直在想这样的事情:

    Sheets("Inputs").Range("H3") = C
    Let CopyRange = "M" & iRow 
    let iCopyRange = C-1 & iRow 

    Cells (CopyRange, iCopyRange).ClearContents

有点奇怪!

4

1 回答 1

0

访问范围(和列)有不同的方法。对于您所追求的功能,最好不要依赖字母。您可以执行以下操作:

Dim startCol As Long: startCol = 13  'Col M
Dim curMonth As Long: curMonth = 8 'August
Dim endCol As Long: endCol = startCol + curMonth - 1

Range(Columns(startCol), Columns(endCol)).ClearContents

此代码以数字格式获取给定月份,并清除所有前几个月的内容,包括输入月份。Sheets("Inputs").请注意,如果您一直使用同一个工作表,则无需添加该位。如果要更改工作表,最好添加它以避免出现问题:

Sheets("Inputs").Range(Sheets("Inputs").Columns(startCol), Sheets("Inputs").Columns(endCol)).ClearContents

更新:

如果您对删除整个列不感兴趣,而只是删除某些行(例如,只是iRow);你应该依靠Cells

Range(Cells(iRow, startCol), Cells(iRow, endCol)).ClearContents
于 2013-09-29T09:42:32.370 回答