Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2413|回复: 1

[VBA学习资料] 每周二培训笔记分享【第10讲】工作表操作--2012年03月06日

[复制链接]
发表于 2012-3-27 22:29 | 显示全部楼层 |阅读模式
本帖最后由 zhouyunj 于 2012-3-27 22:32 编辑

感谢兰版的精彩教学,受益匪浅,万分感激!
以下所有笔记均为兰版每周二晚培训课程的本人做的笔记--完整版

【第10讲】工作表操--2012年03月06日
主要内容:
1、工作表选取
2、工作表插入
3、工作表移动
4、工作表保护
5、工作表隐藏
-------------------------------------------------
上节回顾---
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim x, wb As Workbook, k As Integer
    If Sh.Name = "Sheet1" And Target.Address = "$E$5" Then
        Set wb = Workbooks.Open(ThisWorkbook.Path & "/价格表.xls")
        With wb.Sheets("sheet1")
            For x = 1 To 7
                If .Range("a" & x) = Target Then '如果a1 = Target值,那么
                    k = .Range("b" & x)  'k = b1 的值
                    wb.Close False
                    Range("e7") = k
                    Exit Sub
                End If
            Next x
        End With
        wb.Close False
        Range("e7") = "查找不到"
    End If
End Sub
------------------------------------------------------
'本次内容:
'当前被选取的工作表:activesheet
'直接使用 Sheet1 代表Microsoft Excel对象的后台名称,只能改变sheet显示名
'-----5种表示同一个工作表的方法:
'--------------------------------
'Sheets ("精英培训")  --sheet自定义的名称
'Sheets(2) --所在位置从左至右数:第2个
'activesheet  --正在使用的sheet
'Sheet4 --原名称,系统后台排序序号  --sheet:是个集合,包括工作表,图表等
'worksheets("精英培训") --worksheets:为工作表
'选择名字为"sheet2"字符串的sheet
Sub 选取指定工作表()
    Sheets("sheet2").Select
End Sub
'选择从左到右的第2个sheet页
Sub 选取工作表2()
    Sheets(2).Select
End Sub
'activate激活工作表,同Select
Sub 选取指定工作表3()
    Sheets("sheet2").Activate
End Sub
'选取多个工作表
Sub 选取多个工作表工作表()
    Sheets(Array("sheet1", "sheet2", "sheet3", "sheet4")).Select
End Sub
'选取多个工作表方法2 --选取从左向右数第1个sheet和第4个sheet,与sheet的命名无关,只有位置有关
Sub 选取多个工作表方法2()
    Sheets(Array(1, 4)).Select
End Sub
'选取所有工作表
Sub 选取所有工作表()
    Sheets.Select
End Sub
------插入工作表
'插入工作表(当前sheet页之前?)
Sub 插入工作表()
    Sheets.Add
End Sub
Sub 插入多个工作表()  '2个
    Sheets.Add Count:=2
End Sub
Sub 在指定位置之前插入工作表()
    Sheets.Add before:=Sheets("sheet3")
End Sub
Sub 在指定位置之前插入2个工作表()
    Sheets.Add before:=Sheets("一月"), Count:=2
End Sub
Sub 在指定位置之后插入工作表()
    Sheets.Add after:=Sheets("一月")
End Sub
Sub 在指定最后位置后插入工作表()
    Sheets.Add after:=Sheets(Sheets.Count)
End Sub
Sub 在指定最前位置之前插入工作表()
    Sheets.Add before:=Sheets(1)
End Sub
Sub 插入单个工作表并命名()
    Dim sh As Object
    Set sh = Sheets.Add
    sh.Name = "2月"
End Sub
Sub 插入单个工作表并命名1()
    Sheets.Add
    ActiveSheet.Name = "3月"
End Sub
Sub 插入多个工作表并命名()
    Dim i As Integer
    For i = 1 To 4
        Sheets.Add
        ActiveSheet.Name = i & "月"
    Next i
End Sub
'插入前判断是否存在“汇总”工作表,不存在则添加
Sub 插入前判断是否存在()
    Dim i As Integer
    For i = 1 To Sheets.Count
        If Sheets(i).Name = "汇总" Then
            MsgBox "汇总表已存在"
        Exit Sub
        End If
    Next i
    Sheets.Add
    ActiveSheet.Name = "汇总"
End Sub
-------移动工作表
Sub 移动工作表之前()
    Sheets("sheet1").Move before:=Sheets("一月")
End Sub
Sub 移动工作表之后()
    Sheets("sheet1").Move after:=Sheets("一月")
End Sub
Sub 复制工作表之后()
    Sheets("sheet1").Move after:=Sheets("一月")
End Sub
Sub 移动到新的工作簿()
    Sheets("sheet1").Move
End Sub
Sub 复制到新的工作簿()
    Sheets("sheet3").Copy
End Sub
Sub 移动到新的工作簿的某个工作表之前() '“复制到.xls”文档需要提前打开
    Sheets("汇总").Move before:=Workbooks("复制到.xls").Sheets(1)
End Sub
Sub 复制到新的工作簿的某个工作表之前()  '“复制到.xls”文档需要提前打开
    Sheets("sheet1").Copy before:=Workbooks("复制到.xls").Sheets(2)
End Sub
Sub 工作表另存工作簿()
    Dim Mbook As Workbook
    Set Mbook = ActiveWorkbook
    Dim i As Integer
    For i = 1 To Mbook.Worksheets.Count
        Mbook.Worksheets.Copy
        ActiveWorkbook.SaveAs Filename:="c:\" & Mbook.Worksheets(i).Name & ".xls"
        ActiveWindow.Close ' 即activeworkbook 的关闭
    Next i
End Sub
------工作薄密码保护
Sub 工作表保护密码()
    Sheets("sheet1").Protect Password:=123
End Sub
Sub 工作表解除保护密码()
    Sheets("sheet1").Unprotect Password:=123
End Sub
Sub 一次给所有的工作表添加保护()
    Dim x As Integer
    For x = 1 To Sheets.Count
        Sheets(x).Protect Password:=123
    Next x
End Sub

Sub 一次给所有的工作表删除保护()
    Dim x As Integer
    For x = 1 To Sheets.Count
        Sheets(x).Unprotect Password:=123
    Next x
End Sub
Sub 判断工作表是否被保护() 'protectContents = true
    If Sheet1.ProtectContents = True Then
        MsgBox "工作表被保护"
    Else
        MsgBox "工作表未被保护"
    End If
End Sub

-------隐藏工作表
'visible = 0 隐藏
'visible = 2 深度隐藏
'visible = -1 取消隐藏
Sub 隐藏一个工作表()
    Sheets("sheet").Visible = 0
End Sub
Sub 深度隐藏一个工作表()
    Sheets("sheet").Visible = 2
End Sub
Sub 隐藏多个工作表()
    Sheets(Array("sheet1", "sheet2")).Visible = 0
End Sub
Sub 所有工作表取消隐藏()
    Dim i As Integer
    For i = 0 To Sheets.Count
        Sheets(i).Visible = -1
    Next i
End Sub

Private Sub Worksheet_Activate()
    'MsgBox "禁止查看sheet3"
   ' Sheets("sheet2").Select
    Dim str
    str = Application.InputBox("请输入查看密码呢!")
    If str <> 123 Then
        Sheets("sheet3").Select
    End If
End Sub
Private Sub Worksheet_Calculate()
    MsgBox "改变公式提示"
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox "编辑了单元格的值 " & Target.Address
End Sub

Public flag As Integer
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '只要选择第一列就需要输入密码认证
    Dim str
    If Target.Column = 1 Then  '如果选择第1列
        If flag <> 1 Then         '在模块中声明的公共变量 public flag as integer
            str = InputBox("请输入第1列密码", "身份验证")
            If str = 123 Then
                flag = 1           '将flag变更置为1,后面不再判断密码
            Else
                [b1].Select   '密码输入错后,就将光标放在b1
            End If
        End If
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    '只要选择第一列就需要输入密码认证
    Dim str
    If Target.Column = 1 Then  '如果选择第1列
        If m <> 1 Then         '在模块中声明的公共变量 public m as integer
            str = InputBox("请输入第1列密码", "身份验证")
            If str = 123 Then
                m = 1           '将m变更置为1,后面不再判断密码,其实m就是个flag标志
            Else
                [b1].Select   '密码输入错后,就将光标放在b1
            End If
        End If
    End If
End Sub
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-3-29 11:24 | 显示全部楼层
谢谢分享。                     
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-2 14:42 , Processed in 0.248266 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表