繁体   English   中英

VBA计算列并复制它们

[英]VBA count columns and copy them

下面的代码隐藏了一定数量的行(取决于我们所在的星期数),并且仅显示对应于当前星期数的单元格和对应于未来星期数的单元格。

Dim test As String
test = Format(Now, "yyyy", vbMonday) & KW(Now)

For k = 3 To lastColumn

        ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k).ColumnWidth = cWidth

        If ThisWorkbook.Worksheets(PlanningTableNameUG).Cells(1, k).Value = test Then

            today = True
            On Error Resume Next
                ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k - 1).Ungroup
            On Error GoTo 0
            ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k - 1).Group

        End If

        If Not today Then
            On Error Resume Next
                ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k).Ungroup
            On Error GoTo 0
            ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k).Group
            ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k).Hidden = True

            If Hidden = True Then
                ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k).Group.Copy
                ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k).Group.Insert Shift:=xlToRight

            End If

        Else
            ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k).Hidden = False
        End If

Next k

' calculate the week number
Function KW(d As Date) As Integer
  Dim Tag As Long
  Tag = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 1)
  KW = (d - Tag - 3 + (Weekday(Tag) + 1) Mod 7) \ 7 + 1
End Function

现在,我需要计算隐藏的列数并添加确切的列数,例如:

列:1、2、3、4、5、6、7、8、9、10(第4列与今天的星期几相对应)

我隐藏了:1,2,3,因为过去有几周,并且想要加上11,12,13以及它们对应的星期数,但从当前日期起不超过1年。

周数从当年的乞讨开始。

要计算ThisWorkbook.Worksheets(PlanningTableNameUG)的使用范围内的隐藏列:

Dim col As Range
Dim cnt As Long

For Each col In ThisWorkbook.Worksheets(PlanningTableNameUG).UsedRange
    Debug.Print col.EntireColumn.Hidden
    cnt = cnt - col.EntireColumn.Hidden
Next col

如果被隐藏,EntireColumn.Hidden返回True。 在VBA中True为-1,这就是为什么我从计数器中减去以获得正值。

隐藏列时,您可以添加一个整数变量,该变量增加一,然后使用此变量添加许多新列。

然后要添加周数,请在最后一列上加上周数,并为每个新列添加一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM