【问题标题】:Excel VBA highlighting just one column with variablesExcel VBA仅突出显示带有变量的一列
【发布时间】:2020-04-10 03:31:08
【问题描述】:

我正在尝试使用类似于以下内容的 vba 代码突出显示整个列:

Columns("A:A").select

但我想将“A”替换为包含列数值的变量 I,因此 A=1、B=2 等。

另一个问题是,在我的工作表上,我也有很多合并的单元格。所以如果我使用如下代码:

I=2
Columns(i).select

然后它还会突出显示位于同一列下的合并单元格的所有列。我想要它,所以它只突出显示一列,第一列(变量)。就像一个人只需单击列以突出显示 Excel 表中的整个选定列。

代码不必是“列”代码,它只是一个示例,而且我知道它可以按照我需要的方式工作。

谢谢

【问题讨论】:

  • 合并单元格是邪恶的,不要使用它们!合并单元格有另一种选择:Center Across Selection。否则你总是会在使用 VBA 时遇到此类问题。
  • 在任何情况下都避免选择;你想对列中的单元格做什么?您可以在不选择列的情况下执行“它”。
  • @AndyG 在第 4 行显示月份和日期(例如:“Oct-25”),跨列显示日期。我想要它,这样当我打开工作表时,它会突出显示今天的整个列,以便更容易看到我的位置。
  • 如果它是一个简单的时间表,那么与center across selection 相比,您是否需要 合并单元格?或者,您可以只选择打开工作簿时列中的第一个有用单元格。
  • @HumanlyRespectable 您可以使用条件格式通过检查列的日期与今天的日期来突出显示今天的列,例如背景颜色或边框:条件 =A$5=TODAY() 其中 A5 包含列 A 的日期. 这样,如果您打开工作簿,今天的列将自动着色。没有看到您的工作表,很难更好地解释这一点。

标签: excel vba


【解决方案1】:

合并单元格是邪恶的,不要使用它们!合并单元格有另一种选择:Center Across Selection。否则你总是会在使用 VBA 时遇到此类问题。

无论如何,avoid using Select in Excel VBA 是个好主意。

用于“突出显示”列,例如。更改背景颜色。

Columns(5).Interior.Color = vbRed

这将只着色除合并单元格之外的第 5 列。

【讨论】:

  • 合并的单元格不是 100% 邪恶的。我以前也是这么想的,但后来开阔了我的视野。有时它们可​​能非常有用,只要您知道它们在那里以及它们为什么在那里,您就可以解决它们。例如,我主要将它们用于演示目的,很少围绕它们编写代码。也就是说,我围绕它们开发了一个解决方案编码,结果证明在最终设计中非常优雅(编码可能不那么优雅:),但我也设法实现了功能化!)
  • @ScottHoltzman 嗯,我想我可以同意这一点。但是你仍然必须非常小心地对待它们。如果有人在编写代码时引入了您没有考虑过的合并单元格,它很容易让您发疯。尤其是当您编写代码,对其进行测试并且它可以工作,然后一些用户使用它并合并单元格时,它会烧毁所有内容。所以我同意 100% 邪恶有点太强了。
  • 90% 邪恶。我想调用 toggle 方法并取消合并/重新合并所有合并的单元格可能是一种选择。我们必须存储范围列表(或给它们命名范围)。
  • @AndyG 所有这些努力只是为了“有趣”来选择一列?祝你好运 ;) 可能有更简单的成功方法。
  • @Pᴇʜ 我不打算这样做。只是如果有人坚持包含合并的单元格,并且要进行一些详细的操作,那么这样的切换可能是一个可行的选择......对于某人(不是我)
【解决方案2】:

如果您想为给定列中的使用单元格着色,合并的单元格除外:

Dim i As Long

i = 4
Dim cell As Range
For Each cell In Intersect(Columns(i), ActiveSheet.UsedRange)
    If Not cell.MergeCells Then cell.Interior.Color = vbGreen
Next

【讨论】:

    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 2014-02-19
    • 2015-04-12
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    相关资源
    最近更新 更多