Excel VBA仅突出显示一列变量

Excel VBA仅突出显示一列变量,excel,vba,Excel,Vba,我尝试使用vba代码高亮显示整个列,类似于: Columns("A:A").select 但是我想用一个变量I替换“A”,该变量包含列的数值,因此A=1,B=2,等等 另一个问题是,在我的工作表上,我也有很多合并的单元格。因此,如果我使用如下代码: I=2 Columns(i).select 然后它还会高亮显示合并单元格中属于同一列的所有列。我希望它只突出显示一列,列I(变量)。类似于一个人只需单击列即可在excel工作表中高亮显示整个选定列 代码不必是“列”代码,它只是一个示例,我知道它是

我尝试使用vba代码高亮显示整个列,类似于:

Columns("A:A").select
但是我想用一个变量I替换“A”,该变量包含列的数值,因此A=1,B=2,等等

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

I=2
Columns(i).select
然后它还会高亮显示合并单元格中属于同一列的所有列。我希望它只突出显示一列,列I(变量)。类似于一个人只需单击列即可在excel工作表中高亮显示整个选定列

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


谢谢

合并的单元格是邪恶的,不要使用它们!合并单元格还有一种替代方法:。否则,使用VBA时,您将始终遇到此类问题

无论如何,这是一个好主意

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

Columns(5).Interior.Color = vbRed
这将仅为第5列(合并单元格除外)着色。

如果要为给定列(合并单元格除外)中使用的单元格着色,请执行以下操作:

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

合并的单元格是邪恶的,不要使用它们!合并单元格还有一种替代方法:。否则,VBA将始终遇到此类问题。在任何情况下都应避免选择;您想对列中的单元格做什么?您可以在不选择列的情况下执行“it”。@AndyG第4行显示一个月和一天(例如:“10月25日”),跨列显示日期。我希望这样,当我打开工作表时,它将突出显示今天的整个栏目,以便更容易看到我所处的位置。如果它是一个简单的时间表,那么您是否需要合并单元格,而不是在整个选择中居中?或者,您可以在打开工作簿时只选择列中第一个有用的单元格。@HumanlyRespectable您可以使用条件格式通过检查列的日期与今天的日期来突出显示今天的列,例如背景色或边框:条件
=a$5=today()
其中A5包含A列的日期。这样,如果打开工作簿,今天的列将自动着色。不看你的工作表很难更好地解释这一点。合并的单元格并不是100%邪恶的。我以前是这样想的,但后来我的视野开阔了。有时它们非常有用,只要你知道它们在那里以及它们为什么在那里,你就可以围绕它们工作。例如,我主要是出于演示目的使用它们,很少围绕它们编写代码。这就是说,我开发了一个围绕它们的解决方案编码,结果在最终设计中非常优雅(编码可能不那么优雅:),但我也成功地实现了功能化!)@斯科托尔茨曼,嗯,我想我可以同意。但你还是要非常小心。如果有人在编写代码时没有想到引入一个合并的单元格,它很容易让你发疯。特别是当你写了一个代码,测试了它,它工作了,然后一些用户使用了它,并合并了单元格,它烧毁了一切。所以我同意100%的邪恶有点太强大了,90%的邪恶。我认为可以选择调用切换方法,取消合并/重新合并所有合并的单元格。我们必须存储一个范围列表(或给它们范围名称)。@AndyG所有这些努力仅仅是为了“好玩”选择一列?祝你好运;)可能有更简单的成功方法。@Pᴇʜ我不打算这么做。只是,如果有人坚持包括合并的细胞,并进行一些详细的操作,那么这样的切换可能是一个可行的选择。。。为了某人(不是我)