Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA计数列并复制它们_Excel_Vba_Count_Add_Week Number - Fatal编程技术网

Excel VBA计数列并复制它们

Excel VBA计数列并复制它们,excel,vba,count,add,week-number,Excel,Vba,Count,Add,Week Number,下面的代码隐藏一定数量的行(取决于我们所在的周数),并仅显示与当前周数对应的单元格和与未来周数对应的单元格 Dim test As String test = Format(Now, "yyyy", vbMonday) & KW(Now) For k = 3 To lastColumn ThisWorkbook.Worksheets(PlanningTableNameUG).Columns(k).ColumnWidth = cWidth If Thi

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

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年


周数从当年开始计算。

计算此工作簿使用范围内的隐藏列。工作表(PlanningTableNameUG):


如果是隐藏的,则EntRecolumn.Hidden返回True。在VBA中为-1,这就是为什么我从计数器中扣除它以获得正值

统计此工作簿使用范围内的隐藏列。工作表(PlanningTableNameUG):


如果是隐藏的,则EntRecolumn.Hidden返回True。在VBA中为-1,这就是为什么我从计数器中扣除它以获得正值

隐藏列时,可以添加一个增加1的整数变量,然后使用此变量添加那么多新列


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

隐藏列时,可以添加一个整数变量,增加一个,然后使用此变量添加那么多新列


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

感谢@Xabier的想法。感谢@Xabier的想法。感谢代码,我按照Xabier上面所说的做了,但你的想法也很好。感谢代码,我按照Xabier上面所说的做了,但你的想法也很好。
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