我现在有以下代码:
Sub ClearTimeline()
Dim wsTimeline As Worksheet
Set wsTimeline = ThisWorkbook.Sheets(1)
wsTimeline.Range("B8, F25, F26, F28, F30, M17, M31, L17, L24:L25, L26, L28, L29:L30, J24:J25, J26, J28, J29:J30, K25, K26, K28, K30").ClearContents
End Sub
我想用更动态的东西替换固定的单元格引用。行不会改变,所以我想改变引用列的方式。我有一个“参考单元格”,即我总是可以找到/知道其列的单元格。
Sub ClearTimeline()
Dim wsTimeline As Worksheet
Dim referenceDay As Long
Set wsTimeline = ThisWorkbook.Sheets(1)
referenceDay = 10
'what works:
wsTimeline.Range(wsTimeline.Cells(referenceDay - 9, 1)).ClearContents 'clears single cell
wsTimeline.Range(wsTimeline.Cells(referenceDay - 9, 1), wsTimeline.Cells(referenceDay - 1, 1)).ClearContents 'clears range
End Sub
我的目标是将每一列引用为“referenceDay +/- X”,因为即使以其他方式更改工作表,到今天的距离也将保持不变。但是,我如何告诉Excel对不连续的单元格执行相同的操作?我不确定如何引用它们,以及在wsTimeline.Range
后面的括号中放入什么内容
发布于 2019-12-05 21:57:29
如果我理解正确的话,整个硬编码单元格的范围应该根据列的不同向右或向左移动。Offset()
在这方面做得很好。
“红色”单元格是初始区域的单元格,选定的单元格是带有Offset(columnoffset:=2)
的单元格。我使用.Select
来说明其中的不同之处,因为它们之间存在重叠,而且颜色也不好:
Sub ClearTimeline()
Dim wsTimeline As Worksheet
Set wsTimeline = ThisWorkbook.Worksheets(1)
Dim timelineRange As Range
Set timelineRange = wsTimeline.Range("B8, F25, F26, F28, F30, M17, M31, L17, L24:L25, L26, L28, L29:L30, J24:J25, J26, J28, J29:J30, K25, K26, K28, K30")
timelineRange.ClearContents
timelineRange.Interior.Color = vbRed
timelineRange.Offset(columnoffset:=2).Select 'But in general, do not use .Select
End Sub
https://stackoverflow.com/questions/59196313
复制相似问题