根据封面声明声明变量Column

时间:2013-09-29 09:26:09

标签: excel vba excel-vba

    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(jan)更改为列T(8月)。

我一直在考虑这样的事情:

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

    Cells (CopyRange, iCopyRange).ClearContents

它有点奇怪!!

1 个答案:

答案 0 :(得分: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