Vba 基于封面声明变量列

Vba 基于封面声明变量列,vba,excel,Vba,Excel,我有这个代码,我需要根据封面将CopyRange的第二部分(“T”&iRow)声明为一个变量 M到X列代表12个月, 因此,每当我将封面页更改为Septemper时,例如,输入页将值更改为9,因此当我使用choose方法时,它选择当前月份,在本例中为U列 我需要做的是,在本例中,当我将封面M列(一月)更改为T列(八月)时,清除除本月以外的所有内容 我一直在想这样的事情: Dim iRow As Long Dim CopyRange As String iRow = (A

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

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

我需要做的是,在本例中,当我将封面M列(一月)更改为T列(八月)时,清除除本月以外的所有内容

我一直在想这样的事情:

    Dim iRow As Long
    Dim CopyRange As String

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

    Range(CopyRange).ClearContents

有点奇怪

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

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

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

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
更新:

如果您不想删除整列,只想删除某些行(例如,just
iRow
);您应该依靠
单元格

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

还是第二部分(本月-1)不随我的封面而变化?或者你的意思是,Dim curMonth作为整数:curMonth=Sheets(“Inputs”).Range(“H3”)@FadelNaeem我的意思是curMonth=你想要的值:)@FadelNaeem不是我想要的答案?请查看我的更新(仅删除一行),并让我知道您的担忧。@brettdj for columns?为什么?对于行,我确实同意(虽然,只有在需要时,如果您确信您将处理少量的行,您可以安全地依赖integer),但列需要什么?不要使用
integer
句号
Long
更有效,因为整数被转换为Long。谷歌。
Range(Cells(iRow, startCol), Cells(iRow, endCol)).ClearContents