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
它有点奇怪!!
答案 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