即使合并范围位于下面,也只能select一列

testing用例:

取一张空白纸,合并范围"D2:F2" 。 您可以手动执行此操作。

然后,激活macroslogging器,并通过点击电子表格顶部的E字母来selectE列。 您将得到以下内容:

 Columns("E:E").Select 

现在,试着直接从同一个macros运行这段代码:你会看到它select了三列D, EF

题:

这是macroslogging器的错误吗? 或者说,VBA本身的错误(检测我的列中的合并范围,并决定扩展select,即使明确要求select一个单列)? 我应该如何通过VBA代码select其中一个合并范围所在的列 ,正如我手动执行的那样?

需要:

我有一个电子表格,年份在线,下面几个月和下面几天。 因此,这些日子只不过是细胞而已,几个月,特别是几年中,分享/合并细胞。

我的需要是检测当天并select列,以便用户看到他们应该在哪一天看数据。 但是,由于刚刚在上面“岁月”细胞大量合并,整个一年都被选中。 在这里输入图像说明

你可能知道日子开始的那一排。 因此,不必select整个列,而是可以定义从第一天行到最后一天行的范围,然后select该范围。

不,这不是一个错误。

原因:尝试手动select范围E1到E5。 这就是使用列(“E:E”)时发生的事情。 把它想成是。select不select列,而是从上到下select每个单元格。

.select方法不是你应该依赖的。 你究竟想用什么select? 还有另外一个(可以说是更好的方法)来做到这一点。

编辑:另外,正如我父亲总是说,不应该使用合并的单元格。 他使用“跨越select中心”,看起来就像一个合并的单元格,没有任何看似有问题的行为。

需要:我会使用macros来突出显示数据…可能是这样的东西…

Range("E7").Interior.ColorIndex = RGB(0, 0, 0)

要求:

你的表应该有这个值和格式

示例图片

然后,您可以遍历第4行的每一列 – 只要假设 – 并检查每个值是否与今天匹配。 接下来,您可以使用Application.Goto滚动到该单元格。

码:

 Sub FindToday() Dim wsTable As Worksheet '<~ worksheet with your table Set wsTable = Sheet2 Dim Cols As Integer '<~ a variable to loop through columns With wsTable For Cols = 1 To .Cells(4, .Cells.Columns.Count).End(xlToLeft).Column + 1 If .Cells(4, Cols).Value = Date Then '<~ check if the date is today Application.Goto wsTable.Cells(1, Cols), True '<~ scroll to that cell if true Exit For End If Next End With End Sub