使用VBA确定固定范围内的第一个空列

时间:2019-07-19 08:12:36

标签: excel vba

我有以下Excel电子表格:

       A         B         C        D       E           G       H       I        J       K
1               2019-03  2019-04  2019-05  2019-06    Total             Q1       Q2
2    
3   Revenue        500     600                        1.100             300      700
4   COGS           -40     -30                          -70            -250     -120
5   Gross Profit   460     570       0        0       1.030              50      580
6   
7   OPEX           -10     -12                          -22             -25     -80
8   Interests      -20     -50                          -70             -30     -95
9
8   EBT            430     508        0        0        938              -5     405

公式:

Row 5 = SUMS of Row 3 and Row 4
Row 8 = SUMS of Row 5, Row 7 and Row 8
Column G = SUMS of Columns B to H

电子表格显示公司每月的表现。

每次到达新月时,我都希望将上个月的值复制到新月。因此,我需要确定第一个空列。 到目前为止,我使用问题here的解决方案:

Sub test()
Dim c As Long
c = Sheet1.Cells(3, Sheet1.Columns.Count).End(xlToLeft).Offset(ColumnOffset:=-3).End(xlToLeft).Column
MsgBox c
    MsgBox c
End Sub

到目前为止,所有这些都工作正常。


但是,使用上述解决方案时,我总是必须调整ColumnOffset:=-3,以防在Column J之后添加新的列。

因此,我希望有一个固定范围,其中VBA标识了第一个空列。在上述情况下,我想将范围A3:G3作为VBA的搜索范围,并在此范围内应标识出第一个空列。

要实现此目的,我需要在代码中进行哪些更改?

1 个答案:

答案 0 :(得分:0)

使用命名范围。为列G添加一个名称,例如。将其命名为TotalColumn

然后,您可以像Range("TotalColumn")这样使用总计列,无论列号是多少还是Range("TotalColumn")都将始终引用您的总计列。

使用它从那里向左走。

c = Sheet1.Cells(3, Range("TotalColumn").Column).End(xlToLeft).Column