2013-09-29 69 views
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(8月),在这种情况下,以清除所有内容,但当前月份。

我一直在思考的是这样的:

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

    Cells (CopyRange, iCopyRange).ClearContents 

其有点奇怪!

回答

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 

UPDATE:

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

Range(Cells(iRow, startCol), Cells(iRow, endCol)).ClearContents 
+0

仍然第二部分(当前月-1)是不是基于我的封面变量? (“H3”) –

+0

我看到了,非常感谢 –

+0

@FadelNaeem我的意思是curMonth =你想要的值:) – varocarbas