首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA:清除多个不连续的单元格

VBA:清除多个不连续的单元格
EN

Stack Overflow用户
提问于 2019-12-05 21:30:45
回答 1查看 53关注 0票数 0

我现在有以下代码:

代码语言:javascript
运行
复制
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

我想用更动态的东西替换固定的单元格引用。行不会改变,所以我想改变引用列的方式。我有一个“参考单元格”,即我总是可以找到/知道其列的单元格。

代码语言:javascript
运行
复制
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后面的括号中放入什么内容

EN

回答 1

Stack Overflow用户

发布于 2019-12-05 21:57:29

如果我理解正确的话,整个硬编码单元格的范围应该根据列的不同向右或向左移动。Offset()在这方面做得很好。

“红色”单元格是初始区域的单元格,选定的单元格是带有Offset(columnoffset:=2)的单元格。我使用.Select来说明其中的不同之处,因为它们之间存在重叠,而且颜色也不好:

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59196313

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档