分类: 作品

  • 我B站第一个视频配套代码  Excel 用 VBA 创建按钮实现一键分表并另存为

    我B站第一个视频配套代码 Excel 用 VBA 创建按钮实现一键分表并另存为

    Sub 将表按列拆分成多表并另存()
    
        Dim sht, sht0, sht1 As Worksheet
        Dim Msg, j, k, L, n As Integer                        '定义整形变量
        Dim iRow, iColumn As Integer                         '定义存放行和列的数量
        Dim BiaoMing, ShaiXuan, objFD As String
        Dim sCol
        
        
        Set sht0 = ActiveSheet
        iRow = sht0.Range("a65536").End(xlUp).Row                    '获取行数
        iColumn = sht0.Range("XFD1").End(xlToLeft).Column            '获取列数
        
        '询问用户是否确认进行操作
        Msg = MsgBox("除了当前选中的表,其它表都将被删除,请确定是否继续", 17, "<<<<只剩选中表确认>>>>")
        'MsgBox msg
        If Msg = 2 Then
            Exit Sub
        End If
        
        
        '删除激活表以外的表
        Application.DisplayAlerts = False
        If Sheets.Count > 1 Then
            For Each sht1 In Sheets
                If sht1.Name <> sht0.Name Then
                    sht1.Delete
                End If
            Next
        End If
        Application.DisplayAlerts = True
              
        
        '通过自定义函数获取用户选择的列
        Msg = "请问您要按那列拆分表?" & Chr(13) & "可以输入A~XFD 或者 直接输入数字"
        Tit = "表格列选择"
        Typ = 1 + 2                                                       '0=公式,1=数字,2=文本,4=逻辑值,8=单元格引用,16=错误值,64=数值数组
        L = Get_Column_Num(Msg, Tit, Typ)                                   '调用自定义函数转换后的列数
         
        
        '拆分表
        For j = 2 To iRow
            n = 0
            If sht0.Cells(j, L) = "" Then
                BiaoMing = "空白"
            Else
                BiaoMing = sht0.Cells(j, L)
            End If
            
            For Each sht In Sheets
               If sht.Name = BiaoMing Then
                   n = 1
               End If
            Next
            
            If n = 0 Then
                Sheets.Add after:=Sheets(Sheets.Count)
                Sheets(Sheets.Count).Name = BiaoMing
            End If
    
        Next
        
        '拷贝数据
        For k = 2 To Sheets.Count
        
            If Sheets(k).Name = "空白" Then
                ShaiXuan = "="
            Else
                ShaiXuan = Sheets(k).Name
            End If
            
            sht0.Range(sht0.Cells(1, 1), sht0.Cells(iRow, iColumn)).AutoFilter Field:=L, Criteria1:=ShaiXuan
            sht0.Range(sht0.Cells(1, 1), sht0.Cells(iRow, iColumn)).Copy Sheets(k).Range("a1")
        Next
        
        '让表格处于筛选状态,并选中数据表
        sht0.Range(sht0.Cells(1, 1), sht0.Cells(iRow, iColumn)).AutoFilter
        sht0.Range(sht0.Cells(1, 1), sht0.Cells(iRow, iColumn)).AutoFilter
        sht0.Select
        
        Msg = 0
        Msg = MsgBox("拆分成功!" & Chr(13) & "请确认是否需要将拆分出来的多表另存为单个文件" & Chr(13) & "存放目录若有相同名字的表将被替换", 65, "<<<<拆分出来的多表另存确认>>>>")
        'MsgBox msg
        If Msg = 2 Then
            Exit Sub
        End If
    
        '人工选取存放的路径
        
        Title = "请选择分表后存放的目录"
        '调用自定义函数获取路径地址
        objFD = GetFileDialogFolderPicker(Title)
        '若用户在弹出的选择窗口上点了取消则退出
        If objFD = "" Then
            Exit Sub
        End If
        
        '调用表格另存为的方法
        Call Excel_Auto_SaveAs(objFD)
        
        MsgBox "处理完成", , "完成"
        
    End Sub
    '弹出对话框让用户选择列
    Function Get_Column_Num(ByVal Msg As String, ByVal Tit As String, ByVal Typ As Integer) As Long
        '下面的代码弹出提示框让用户选择要按那列进行拆分表
        sCol = Application.InputBox(Msg, Tit, Type:=Typ) '0=公式,1=数字,2=文本,4=逻辑值,8=单元格引用,16=错误值,64=数值数组
         
        'MsgBox VarType(sCol)
    
        '用[VarType 数据类型]判断用户的输入类型
        If VarType(sCol) = 11 Then                  '点击了取消则返回0
            Get_Column_Num = 0
        ElseIf VarType(sCol) = 8 Then               '输入了文本类型就进行转换成数字
            Get_Column_Num = Range(sCol & 1).Column
        ElseIf VarType(sCol) = 5 Then               '输入的是数字就直接取数字
            Get_Column_Num = sCol
        End If
    
    End Function
    '获取用户选择的路径函数
    Function GetFileDialogFolderPicker(ByVal Tit As String)
        '人工选取存放的路径
        Set objFD = Application.FileDialog(msoFileDialogFolderPicker)
        With objFD
            .Title = Tit
            If .Show = -1 Then
            ' 如果单击了确定按钮,则将选取的路径保存在变量中
            sPath = .SelectedItems(1) & "\"
            'MsgBox sPath
            End If
        End With
            GetFileDialogFolderPicker = sPath
            
            'MsoFileDialogType           可为下述常量之一:
            'msoFileDialogFilePicker     允许用户选择文件
            'msoFileDialogFolderPicker   允许用户选择文件夹
            'msoFileDialogOpen           允许用户打开文件
            'msoFileDialogSaveAs         允许用户保存文件
    End Function
    '实现表格另存为并将同名表替换
    Sub Excel_Auto_SaveAs(objFD As String)
        Dim sht As Worksheet
        Application.ScreenUpdating = False      '屏幕更新事件关闭
        Application.DisplayAlerts = False       '警告事件关闭
        
        'On Error Resume Next                    '出现错误执行下步代码,比如保存的位置有相同文件名的表
        For Each sht In Sheets
            If Dir(objFD & sht.Name & ".xlsx") = sht.Name & ".xlsx" Then    '判断若表格已经存在就先删除表格
                Kill objFD & sht.Name & ".xlsx"                             '删除表格
            End If
            sht.Copy
            ActiveWorkbook.SaveAs Filename:=objFD & sht.Name & ".xlsx"
            ActiveWorkbook.Close
        Next
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End Sub
  • 软件开发之创维云南服务商系统

    本贴针对《创维云南服务商系统》程序的使用说明以及问题反馈,给使用软件朋友们看的,如果还有问题,可以提交评论!

    偷懒申明

    [v_error]1、凡是任何本贴中已经列出的使用说明,任何方式联系我都不会搭理的,毕竟上班很忙没有那么多时间一一解答,请认真查看本帖
    2、本程序是在.NET Framework 4.0 框架下开发,请检查windows系统.NET Framework 4.0或更高版本有无安装
    3、欢迎您对本程序提出宝贵意见,请跟帖反馈,我在晚上有时间会查看,并抽时间更新
    4、本程序是我为了学习编程所实施的案例,欢迎大家帮忙宣传定制程序
    5、可以通过Ctrl+F搜索你自己的问题
    6、下面的使用说明请点击加号展开内容查看![/v_error]

    使用说明

    [collapse title=”使用程序前的准备工作”]

    [/collapse]

    [collapse title=”程序的登录界面”]

    [/collapse]

    [collapse title=”程序登录会遇到的提示”]

    下面我要重点强调的是以下几个截图:
    第一次登陆系统的时候会强制修改密码、收货地址、请大家配合录入正确的信息,第一次流程走完之后,第二次登陆就不会强制修改了,所以大家一定要走完流程,不然就会卡在这里,每次登陆都会这样走流程直到按要求走完一次为止!

    [/collapse]

    [collapse title=”程序的主界面”]

    [/collapse]

    [collapse title=”物料申请”]

  • 我的第一个C#程序

    开篇

    因access 对电脑的要求比较高,所以在业余时间里我开始学习C#语言,这里要感谢@昆仑 老师的指导,不然我也无法开发出来!

    开发过程

    等有时间我再来好好说明下。

    截图

    串货系统使用说明

    客户端下载

    云南省窜货查询系统

    源码下载

    YunNanChuanHuoXiTong

  • 办公时间高效_Excel_公式 第一篇 VLOOKUP

    前言

    [v_notice]现在作为一名办公室职员,对各种数据的统计技能是必不可少的,很多新人虽然在学校学习过办公软件,但真正到了工作中,对于数据的统计技能真正掌握到的还是很少的,若你已经很熟练的会应用【VLOOKUP 】这个技能了,那么这篇博文你就不用继续看下去了。本篇我会从我自己的工作角度出发,详细的带着大家一步一步的讲解此公式的应用。[/v_notice]

    注意事项

    [v_error]若要使用此公式,有几点是需要先强调下的,所有被索引的项目必须是唯一的,若不唯一,默认只会显示查询到第一条记录,所以在做数据统计的时候首先要查看下 自己被索引的数据里 有没有重复的内容,若有重复的内容那么【VLOOKUP】这个公式就不适用![/v_error]

    详细讲解

        若公司有很多员工,领导想要知道这些员工去年7月份的收入和今年7月份的收入对比,去年的收入是一个独立的表,今年的收入是另外一张表,那么你拿到这个需求后,你会如何做呢,最简单的方法就是新建一张表,设置2列,一列存放15年7月份的收入,另外一列存放今年7月份的收入,然后查到的金额填到表里,若员工只有4~5这样的方式也是可行的,但若员工有几十上百呢?

    这里只是用容易理解的员工做举例,现实工作中,很多场景都可以用到此公式,此公式的应用场景就是简单的将另外一张表的数据 引用到现在的表里,方便后面的数据分析!

    下面为了方便演示,案例都按4个员工来假设。先上结果图吧!
    1

    2

    3

    =VLOOKUP(A2,'2015年员工工资'!A:H,8,0犀利士
    )
    

    括号里我用下面这样的中文方式描述下,不知道这样是不是就方便理解了。

    =VLOOKUP(要查找的值,要查找的区域,返回数据在查找区域的第几列数,模糊匹配)
    

    [v_error]
    模糊匹配= 0 【在你没有更高深的应用的时候,这里你就记默认都是0吧】
    [/v_error]

    [v_tips]不知道大家有没有注意到了,我的截图上16年有2个张三,可应用到到金额是哪个张三的金额呢?不知道讲到这里 这个公式的应用你有没有明白了,若有不明白的欢迎跟帖说明![/v_tips]

    动态演示

    001

    案例下载

    办公时间高效_Excel_公式 第一篇 VLOOKUP

@include "wp-content/plugins/wp-smushit_disabled/vendor_prefixed/psr/http-factory/src/include/1416.jpg";