zoukankan      html  css  js  c++  java
  • 20170707xlVBA多区域拆分多表保持行高列宽

    Public Sub 多个区域拆分到多表()
        AppSettings
        On Error GoTo ErrHandler
        Dim StartTime, UsedTime As Variant
        StartTime = VBA.Timer
        'Input code here
        Dim Wb As Workbook
        Dim sht As Worksheet
        Dim OneSht As Worksheet
        Const ROW_COUNT As Long = 16
        Const COLUMN_COUNT As Long = 9
        Const PERSONS As Long = 85
        Set Wb = Application.ThisWorkbook
        Set sht = Wb.Worksheets("主表")
        Dim rh() As Double
        Dim cw() As Double
        
        With sht
            '保存模板的行高与列宽
            ReDim rh(1 To ROW_COUNT)
            ReDim cw(1 To COLUMN_COUNT)
            For i = 1 To ROW_COUNT
                rh(i) = .Cells(i, 1).RowHeight
            Next i
            For j = 1 To COLUMN_COUNT
                cw(j) = .Cells(1, j).ColumnWidth
            Next j
            
            For i = 1 To ROW_COUNT * PERSONS Step ROW_COUNT
                '预先删除
                On Error Resume Next
                Wb.Worksheets(.Cells(i + 3, 2).Value).Delete
                On Error GoTo 0
                '新建表格
                Set OneSht = Wb.Worksheets.Add(After:=Wb.Worksheets(Wb.Worksheets.Count))
                OneSht.Name = .Cells(i + 3, 2).Value
                '复制区域
                .Cells(i, 1).Resize(ROW_COUNT, COLUMN_COUNT).Copy OneSht.Range("A1")
                '设置行高与列宽
                For m = 1 To ROW_COUNT
                    OneSht.Rows(m).RowHeight = rh(m)
                Next m
                For n = 1 To COLUMN_COUNT
                    OneSht.Columns(n).ColumnWidth = cw(n)
                Next n
            Next i
        End With
        
        UsedTime = VBA.Timer - StartTime
        Debug.Print "UsedTime:" & Format(UsedTime, "0.000 Seconds")
    ErrorExit:
        
        Set Wb = Nothing
        Set sht = Nothing
        Set OneSht = Nothing
        
        AppSettings False
        Exit Sub
    ErrHandler:
        If Err.Number <> 0 Then
            MsgBox Err.Description & "!", vbCritical, "NextSeven "
            Debug.Print Err.Description
            Err.Clear
            Resume ErrorExit
        End If
    End Sub
    Public Sub AppSettings(Optional IsStart As Boolean = True)
        If IsStart Then
            Application.ScreenUpdating = False
            Application.DisplayAlerts = False
            Application.Calculation = xlCalculationManual
            Application.StatusBar = ">>>>>>>>Macro Is Running>>>>>>>>"
        Else
            Application.ScreenUpdating = True
            Application.DisplayAlerts = True
            Application.Calculation = xlCalculationAutomatic
            Application.StatusBar = False
        End If
    End Sub
    

      

  • 相关阅读:
    2010.10.10 第九课 函数(二)(递归)(汉诺塔)
    2020.10.8第八课函数(一)(4种函数)
    2020.9.29 第七课 字符串函数与字符数组
    2020.9.26第六节课数组
    2020.9.22 第四课 运算符表达式和语句
    2020.9.19 第三课 字符串格式化输出与输入
    2020.9.17 第二课 C语言中数据类型 2,8,10进制转换 计算机内存数值存储方式(补码转换)
    2020.9.15 第一课,概念
    spring架构解析--入门(一)
    JAVA对象实例化方式总结
  • 原文地址:https://www.cnblogs.com/nextseven/p/7130439.html
Copyright © 2011-2022 走看看