ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > Excel VBA > VBA入门作业题11个

VBA入门作业题11个

作者:绿色风 分类: 时间:2022-08-18 浏览:108
楼主
罗刚君
出几个作业:
1.判断活动工作表是否处于保护状态
2.判断活动单元格是否处于保护状态
3.判断活动单元格是否有公式
4.判断活动工作表是否处于筛选状态
5.判断活动单元格是否于数组区域中
6.判断活动单元格是否为错误值
7.判断“123.xls”工作簿是否处于激活状态
8.判断活动单元格是否处于可见状态
9.判断“456.xls”工作簿中是存在名为“123”的工作表
10.判断活动工作表中是否存在区域数组公式
11.判断活动工作簿是否处于已保存状态(关闭时不会弹出是否需保存的提示框,表示处于已保存状态)

补充:
请直接贴11段代码即可,不用上附件
答案:

11个题目.rar
2楼
wp8680
  1. '1.判断活动工作表是否处于保护状态ActiveSheet.ProtectContents
  2. Sub 作业1()
  3.     If ActiveSheet.ProtectContents Then
  4.         MsgBox ActiveSheet.Name & "处于保护状态"
  5.     Else
  6.         MsgBox ActiveSheet.Name & "未保护"
  7.     End If
  8. End Sub
  9. '2.判断活动单元格是否处于保护状态Selection.Locked
  10. Sub 作业2()
  11.     If Selection.Locked Then
  12.         MsgBox Selection.Address & "处于保护状态"
  13.     Else
  14.         MsgBox Selection.Address & "未保护"
  15.     End If
  16. End Sub
  17. '3.判断活动单元格是否有公式Selection.HasFormula
  18. Sub 作业3()
  19.     If Selection.HasFormula Then
  20.         MsgBox Selection.Address & "内有公式"
  21.     Else
  22.         MsgBox Selection.Address & "没有公式"
  23.     End If
  24. End Sub
  25. '4.判断活动工作表是否处于筛选状态ActiveSheet.FilterMode
  26. Sub 作业4()
  27.     If ActiveSheet.FilterMode Then
  28.         MsgBox ActiveSheet.Name & "处于筛选状态"
  29.     Else
  30.         MsgBox ActiveSheet.Name & "未筛选状态"
  31.     End If
  32. End Sub
  33. '5.判断活动单元格是否于数组区域中ActiveCell.HasArray
  34. Sub 作业5()
  35.     If ActiveCell.HasArray Then
  36.         MsgBox ActiveCell.Address & "在数组公式区域中"
  37.     Else
  38.         MsgBox ActiveCell.Address & "不在数组公式区域中"
  39.     End If
  40. End Sub
  41. '6.判断活动单元格是否为错误值ActiveCell.Errors.Item(xlEvaluateToError).Value
  42. Sub 作业6()
  43.     If ActiveCell.Errors.Item(xlEvaluateToError).Value = True Then
  44.         MsgBox ActiveCell.Address & "中有错误值"
  45.     Else
  46.         MsgBox ActiveCell.Address & "中没有错误值"
  47.     End If
  48. End Sub
  49. '7.判断“123.xls”工作簿是否处于激活状态
  50. Sub 作业7()
  51. 'MsgBox ActiveSheet.Parent.Name
  52.     If ActiveSheet.Parent.Name = "123.xls" Then
  53.         MsgBox "当前工作簿是123.xls"
  54.     Else
  55.         MsgBox "当前工作簿不是123.xls"
  56.     End If
  57. End Sub
  58. '8.判断活动单元格是否处于可见状态
  59. Sub 作业8()
  60.     If ActiveCell.EntireRow.Hidden Or ActiveCell.EntireColumn.Hidden Then
  61.         MsgBox "当前单元格处于隐藏状态"
  62.     Else
  63.         MsgBox "当前单元格处于可见状态"
  64.     End If
  65. End Sub
  66. '9.判断“456.xls”工作簿中是存在名为“123”的工作表
  67. Sub 作业9()
  68.     Dim sh As Worksheet
  69.     On Error Resume Next
  70. '    If ActiveSheet.Parent.Name = "456.xls" Then
  71.         Set sh = ThisWorkbook.Sheets("123")
  72.         If Err.Number = 0 Then MsgBox "存在123的工作表" Else MsgBox "不存在123的工作表"
  73. '    Else
  74. '        MsgBox "请打开工作簿《456.xls》后操作运行本宏"
  75. '    End If
  76. End Sub
  77. '10.判断活动工作表中是否存在区域数组公式
  78. Sub 作业10()
  79.     Dim rng As Range, k As Boolean
  80.     ActiveSheet.UsedRange.Select
  81.     For Each rng In ActiveSheet.UsedRange
  82.         If rng.HasArray Then MsgBox "表中有区域数组公式": k = True: Exit Sub
  83.     Next rng
  84.     If k = False Then MsgBox "表中没有区域数组公式"
  85. End Sub
  86. '11.判断活动工作簿是否处于已保存状态(关闭时不会弹出是否需保存的提示框,表示处于已保存状态)
  87. Sub 作业11()
  88.     If ActiveWorkbook.Saved Then
  89.         MsgBox "当前工作簿已保存过了。"
  90.     Else
  91.         MsgBox "当前工作簿还没有保存过。"
  92.     End If
  93. End Sub
3楼
kcxs
客城小生的作业
  1. Sub t1判断活动工作表是否处于保护状态()
  2.     MsgBox IIf(ActiveSheet.ProtectContents, ActiveSheet.Name & "工作表处于保护状态", ActiveSheet.Name & "工作表未保护")
  3. End Sub
  4. Sub t2判断活动单元格是否处于保护状态()
  5.     MsgBox IIf(ActiveSheet.ProtectContents And ActiveCell.Locked, ActiveCell.address & "单元格处于保护状态", ActiveCell.address & "单元格未保护")
  6. End Sub
  7. Sub t3判断活动单元格是否有公式()
  8.     MsgBox IIf(ActiveCell.HasFormula, ActiveCell.address & "单元格有公式", ActiveCell.address & "单元格没有公式")
  9. End Sub
  10. Sub t4判断活动工作表是否处于筛选状态()
  11.     MsgBox IIf(ActiveSheet.FilterMode, ActiveSheet.Name & "工作表处于筛选状态", ActiveSheet.Name & "工作表不处于筛选状态")
  12. End Sub
  13. Sub t5判断活动单元格是否于数组区域中()
  14.     MsgBox IIf(ActiveCell.HasArray, ActiveCell.address & "单元格处于数组区域中", ActiveCell.address & "单元格不处于数组区域中")
  15. End Sub
  16. Sub t6判断活动单元格是否为错误值()
  17.     MsgBox IIf(IsError(ActiveCell), ActiveCell.address & "单元格为错误值", ActiveCell.address & "单元格不为错误值")
  18. End Sub
  19. Sub t7判断工作簿是否处于激活状态()
  20.     MsgBox IIf(ActiveWorkbook.Name = "123.xls", "“123.xls”工作簿处于激活状态", "“123.xls”工作簿不处于激活状态,当前工作薄是“" & ActiveWorkbook.Name & "”")
  21. End Sub
  22. Sub t8判断活动单元格是否处于可见状态()
  23.     MsgBox IIf(ActiveCell.Columns.Hidden, ActiveCell.address & "单元格不处于可见状态", ActiveCell.address & "单元格处于可见状态")
  24. End Sub
  25. Sub t9判断工作簿中是存在名为123的工作表()
  26.     Dim i As Byte
  27.     For i = 1 To Worksheets.Count
  28.         If Worksheets(i).Name = "123" Then
  29.             MsgBox "名为“123”的工作表位于第" & i & "个工作表"
  30.             Exit Sub
  31.         End If
  32.     Next
  33.         MsgBox "不存在名为“123”的工作表"
  34. End Sub
  35. Sub t10判断活动工作表中是否存在区域数组公式()
  36.     MsgBox IIf(ActiveSheet.UsedRange.HasArray, ActiveSheet.Name & "工作表存在区域数组公式", ActiveSheet.Name & "工作表不存在区域数组公式")
  37. End Sub
  38. Sub t11判断活动工作簿是否处于已保存状态()
  39.     MsgBox IIf(ActiveWorkbook.Saved = False, ActiveWorkbook.Name & "工作簿没有处于已保存状态", ActiveWorkbook.Name & "工作簿处于已保存状态")
  40. End Sub
4楼
wangxf9209
  1. Sub 宏1()
  2. If ActiveSheet.ProtectContents Then
  3. MsgBox "活动工作表为保护状态"
  4. Else
  5. MsgBox "活动工作表为非保护状态"
  6. End If
  7. End Sub
  1. Sub 宏2()
  2. If ActiveCell.Locked Then
  3. MsgBox "活动单元格为保护状态"
  4. Else
  5. MsgBox "活动单元格为非保护状态"
  6. End If
  7. End Sub
  1. Sub 宏3()
  2. If ActiveCell.Formula <> ActiveCell.Value And Left(ActiveCell.Formula, 1) = "=" Then
  3. MsgBox "活动单元格内有公式"
  4. Else
  5. MsgBox "活动单元格内无公式"
  6. End If
  7. End Sub
  1. Sub 宏4()
  2. If ActiveSheet.AutoFilterMode Then
  3. MsgBox "活动工作表处于筛选状态"
  4. Else
  5. MsgBox "活动工作表处于非筛选状态"
  6. End If
  7. End Sub
5、If Not Intersect(ActiveCell, [A1:E5]) Is Nothing Then   '活动单元格处于指定区域中
6、If IsError(ActiveCell) Then  '活动单元格内容为错误值
7、If If Workbooks("123.xls") Is ActiveWorkbook Then   '工作簿“123.xls”处于激活状态
8、If Not Intersect(ActiveCell, Cells.SpecialCells(xlCellTypeVisible)) Is Nothing Then   '活动单元格为可见
    或If ActiveCell.EntireRow.Hidden Or ActiveCell.EntireColumn.Hidden Then
  1. Sub 宏9()
  2. Dim SHT As Worksheet
  3. For Each SHT In Workbooks("456.XLS").Worksheets  '工作簿“456.XLS”须打开
  4. 'MsgBox SHT.Name
  5. If SHT.Name = "123" Then
  6. MsgBox "工作簿中存在名为""123""的工作表"
  7. N = 1: Exit For
  8. End If
  9. Next
  10. If N = 0 Then MsgBox "工作簿中没有名为""123""的工作表"
  11. End Sub
  1. Sub 宏10()
  2.     Dim RNG1 As Range, RNG As Range
  3.     For Each RNG In ActiveSheet.UsedRange   '循环检查已用区域的每个单元格
  4.          If RNG.HasArray Then                   '如果当前循环到的单元格(下称单元格)为数组公式,则继续运行,否则跳转到NEXT
  5.             If RNG1 Is Nothing Then            '如果单元格为第一个有数组公式的单元格,将其赋值给变量RNG1
  6.                 Set RNG1 = RNG
  7.             Else
  8.                 If RNG.Formula = RNG1.Formula Then   ‘如果单元格的数组公式与上一数组单元格的公式一样,则继续下面的判断
  9.                     If RNG.Address = RNG1.Offset(0, 1).Address Or RNG.Address = RNG1.Offset(1, 0).Address Then MsgBox "活动工作表存在区域数组公式": Exit For    '如果单元格和上一数组单元格上下或左右相邻,则弹出提示并结束过程。
  10.                End If
  11.                 RNG1 = RNG
  12.             End If
  13.         End If
  14.     Next
  15. End Sub
11、If ActiveWorkbook.Path = "" Then  '活动工作簿没有保存
5楼
静思雨
1、
Sub test()
    If ActiveSheet.ProtectContents Or ActiveSheet.ProtectDrawingObjects Then
        MsgBox "活动工作表已处于保护状态"
    Else
        MsgBox "活动工作表没有处于保护状态"
    End If
End Sub

2、
Sub test()
    If ActiveSheet.ProtectContents And ActiveCell.Locked = True Then
        MsgBox "活动单元格已处于保护状态"
    Else
        MsgBox "活动单元格没有处于保护状态"
    End If
End Sub

3、
Sub test()
    If ActiveCell.HasFormula Then
        MsgBox "包含公式"
    Else
        MsgBox "不包含公式"
    End If
End Sub

4、
Sub test()
    If ActiveSheet.AutoFilterMode Then
        MsgBox "活动工作表处于筛选状态"
    Else
        MsgBox "活动工作表没有处于筛选状态"
    End If
End Sub

5、
Sub test()
    If ActiveCell.HasArray Then
        MsgBox "活动单元格在数组区域中"
    Else
        MsgBox "活动单元格没在数组区域中"
    End If
End Sub
6、
Sub test()
    If IsError(ActiveCell.Value) Then
        MsgBox "活动单元格为错误值"
    Else
        MsgBox "活动单元格不为错误值"
    End If
End Sub

7、
Sub test()
    If UCase(Application.ActiveWorkbook.Name) <> UCase("123.xls") Then
        MsgBox "123.xls 当前没有激活"
    Else
        MsgBox "123.xls 当前处于激活状态"
    End If
End Sub

8、
Sub test()
    If ActiveSheet.Rows(ActiveCell.Row).Hidden Or ActiveSheet.Columns(ActiveCell.Column).Hidden = True Then
        MsgBox "活动单元格处于隐藏状态"
    Else
        MsgBox "活动单元格处于可见状态"
    End If
End Sub

9、
Sub test()
    Dim sht As Worksheet
    On Error Resume Next
    Set sht = Worksheets("123")
        If sht Is Nothing Then
            MsgBox "123工作表不存在"
        Else
            MsgBox "123工作表存在"
        End If
End Sub

10、
Sub test()
    If Cells.HasArray Then
        MsgBox "活动工作表存在数组区域"
    Else
        MsgBox "活动工作表不存在数组区域"
    End If
End Sub

11、
Sub test()
    If ThisWorkbook.Saved Then
        MsgBox "活动工作簿处于已保存状态"
    Else
        MsgBox "活动工作簿未处于已保存状态"
    End If
End Sub
6楼
liaozhifa33
宁静致远

  1. '1.判断活动工作表是否处于保护状态
  2. Sub CheckActiveSheetProtectStatus()
  3.     If ActiveSheet.ProtectContents Then MsgBox ActiveSheet.Name & "处于保护状态" Else MsgBox ActiveSheet.Name & "未保护"
  4. End Sub

  5. '2.判断活动单元格是否处于保护状态
  6. Sub CheckActivecellProtectStatus()
  7.     If ActiveCell.AllowEdit = False Then MsgBox ActiveCell.Address(0, 0) & "处于保护状态" Else: MsgBox ActiveCell.Address(0, 0) & "未保护"
  8. End Sub

  9. '3.判断活动单元格是否有公式
  10. Sub CheckActivecellFormula()
  11.     If ActiveCell.HasFormula Then MsgBox ActiveCell.Address(0, 0) & "有公式" Else: MsgBox ActiveCell.Address(0, 0) & "没有公式"
  12. End Sub

  13. '4.判断活动工作表是否处于筛选状态
  14. Sub CheckActiveSheetFilterMode()
  15.     If ActiveSheet.FilterMode = True Then MsgBox ActiveSheet.Name & "处于筛选状态" Else: MsgBox ActiveSheet.Name & "不含筛选"
  16. End Sub

  17. '5.判断活动单元格是否于数组区域中
  18. Sub CheckActiveCellHasArray()
  19. '老师答案
  20.     On Error Resume Next    '当程序出错时,继续执行一句代码
  21.     Dim rng As Range, ArrayCount As Integer    '声明两个变量
  22.     Set rng = ActiveCell.CurrentArray    '将活动单元格的数组区域赋值给变量rng
  23.     ArrayCount = rng.Cells.Count    '将rng的单元格数量赋值给变量ArrayCount
  24.     If ArrayCount > 1 Then  '如果ArrayCount大于1
  25.         MsgBox "活动单元格处于数组区域中", vbInformation    '提示用户
  26.     Else    '否则
  27.         MsgBox "活动单元格不在数组区域中", vbInformation    '提示用户
  28.     End If
  29. End Sub

  30. '6.判断活动单元格是否为错误值
  31. Sub CheckActiveCellValue()
  32.     If IsError(ActiveCell) Then MsgBox ActiveCell.Address(0, 0) & "为错误值" Else MsgBox ActiveCell.Address(0, 0) & "值正常"
  33. End Sub

  34. '7.判断“123.xls”工作簿是否处于激活状态
  35. Sub CheckWorkBookActive()
  36.     If ActiveWorkbook.Name = "123.xls" Then MsgBox ActiveWorkbook.Name & "处于激活状态" Else MsgBox "123.xls未激活"
  37. End Sub

  38. '8.判断活动单元格是否处于可见状态
  39. '记得可以获取活动窗口的单元格地址,判断活动单元格是否在此地之内即可,Intersect is nothing
  40. Sub 判断活动单元格是否处于可见状态()
  41. '老师答案
  42.     If ActiveCell.EntireRow.Hidden Or ActiveCell.EntireColumn.Hidden Then
  43.         MsgBox "当前单元格处于隐藏状态"
  44.     Else
  45.         If Intersect(ActiveWindow.VisibleRange, ActiveCell) Is Nothing Then
  46.             MsgBox "当前单元格处于隐藏状态"
  47.         Else
  48.             MsgBox "当前单元格处于可见状态"
  49.         End If
  50.     End If
  51. End Sub

  52. '9.判断“456.xls”工作簿中是存在名为“123”的工作表
  53. Sub CheckWorksheetExist()
  54.     Dim sh As Worksheet, wb As Workbook
  55.     On Error Resume Next
  56.     Set wb = Workbooks("456.xls")
  57.     If Err.Number <> 0 Then
  58.         MsgBox "不存在“456.xls”工作簿"
  59.     Else
  60.         Set sh = wb.Sheets("123")
  61.         If Err.Number = 0 Then
  62.             MsgBox "“456.xls”工作簿中存在名为“123”的工作表"
  63.         Else
  64.             MsgBox "“456.xls”工作簿中不存在名为“123”的工作表"
  65.         End If
  66.     End If
  67. End Sub
  68. '=====================
  69. Sub 九判断456xls工作簿中是存在名为123的工作表()
  70.     On Error Resume Next
  71.     If Workbooks("456.xls").Worksheets("123") Is Nothing Then
  72.         MsgBox "工作表不存在"
  73.     Else
  74.         MsgBox "工作表存在"
  75.     End If
  76. End Sub

  77. '10.判断活动工作表中是否存在区域数组公式
  78. sub 判断活动工作表中是否存在区域数组公式()
  79.     Dim rng As Range, ArrarCount As Integer    '声明变量
  80.     On Error Resume Next
  81.     For Each rng In ActiveSheet.UsedRange    '遍历已用区域
  82.         ArrarCount = rng.CurrentArray.Cells.Count
  83.         If ArrarCount > 1 Then    '如果数组区域的单元格数量大于1
  84.             MsgBox "活动工作表存在数组区域", vbInformation    '提示用户
  85.             Exit Sub    '结束子过程
  86.         End If
  87.     Next rng
  88.     MsgBox "活动工作表不存在数组区域", vbInformation    '提示用户
  89. end sub

  90. '11.判断活动工作簿是否处于已保存状态(关闭时不会弹出是否需保存的提示框,表示处于已保存状态)
  91. Sub CheckWorkBookSaved()
  92.     If Application.ThisWorkbook.Saved Then MsgBox "工作簿已经保存" Else MsgBox "工作簿未保存"
  93. End Sub
7楼
mmice
Sub 判断活动工作表是否处于保护状态1()
    MsgBox ActiveSheet.ProtectContents
    End Sub
Sub 判断活动单元格是否处于保护状态2()
    MsgBox ActiveCell.Locked
End Sub
Sub 判断活动单元格是否有公式3()
    MsgBox ActiveCell.HasFormula
End Sub
Sub 判断活动工作表是否处于筛选状态4()
    MsgBox ActiveSheet.FilterMode
End Sub
Sub 判断活动单元格是否于数组区域中5()
   MsgBox IIf(IsArray(ActiveCell), "是", "否")
End Sub
Sub 判断活动单元格是否为错误值6()
    'MsgBox IsError(ActiveCell) '结果是false
    MsgBox IIf(IsError(ActiveCell), "无错误值", "有错误值") '如果 expression 参数表示一个错误,则 IsError 返回 True;否则返回 False
End Sub
Sub 判断123xls工作簿是否处于激活状态7()
    MsgBox ActiveWorkbook.Name <> "123"
End Sub

Sub 判断活动单元格是否处于可见状态8()
     If ActiveCell.EntireRow.Hidden = True Or ActiveCell.EntireColumn.Hidden = True Then MsgBox "活动单元格不可见" Else MsgBox "活动单元格可见"
End Sub
Sub 判断456xls工作簿中是存在名为123的工作表9()
    Dim sht As Worksheet
        On Error Resume Next
        For Each sht In Workbooks("456.xls").Sheets
            If sht.Name <> "123" Then MsgBox "123工作表不存在", 64, "提示"
        Next
    End Sub
Sub 判断活动工作表中是否存在区域数组公式10()
    MsgBox ActiveCell.HasArray
End Sub
Sub 判断活动工作簿是否处于已保存状态关闭时不会弹出是否需保存的提示框表示处于已保存状态11()
    MsgBox Len(ActiveWorkbook.Path) > 1
End Sub


8楼
无言的人
无言的人
将全部11题并入一个过程汇总
  1. Sub Timu11()
  2. Rem 01 判断激活工作表是否处于被保护状态
  3.     MsgBox "激活工作表" & ActiveSheet.Name & IIf(ActiveSheet _
  4.         .ProtectScenarios, "处于保护状态", "处于非保护状态")
  5. Rem 02 判断激活单元格是否处于保护状态
  6.     MsgBox "活动单元格" & ActiveCell.Address(0, 0) & IIf(ActiveCell _
  7.         .Locked, "处于非保护状态", "处于保护状态")
  8. Rem 03 判断激活单元格是否存在公式
  9.     MsgBox "活动单元格" & ActiveCell.Address(0, 0) & IIf(ActiveCell _
  10.         .HasFormula, "包含有公式", "没有存在公式")
  11. Rem 04 判断激活工作表是否处于筛选状态
  12.     MsgBox "激活工作表" & ActiveSheet.Name & IIf(ActiveSheet.AutoFilter _
  13.         Is Nothing, "未处于筛选状态", "处于筛选状态")
  14. Rem 05 判断 激活单元格是否存在区域数组
  15.     MsgBox "激活单元格" & ActiveCell.Address(0, 0) & IIf(ActiveCell. _
  16.         CurrentRegion.HasArray, "处于区域数组范围中", "未处于区域数组范围中")
  17. Rem 06 判断激活单元格是否存在错误值
  18.     MsgBox "激活单元格" & ActiveCell.Address(0, 0) & IIf(IsError(ActiveCell) _
  19.        , "存在错误值", "未存在错误值")
  20. Rem 07 判断指定工作表是否激活
  21.     MsgBox IIf(ActiveSheet.Name = "123", "<123> 工作表处于激活状态", "<123> 工作表非激活状态")
  22. Rem 08 判断激活单元格是否隐藏
  23.     MsgBox IIf(ActiveCell.Height = 0 Or ActiveCell.Width = 0, "处于不可见状态", "处于可见状态")
  24. Rem 09 判断工作簿中是否存在指定工作表名称
  25.     Dim Sht As Worksheet, Cou As Integer
  26.     For Each Sht In Sheets
  27.         If Sht.Name = "123" Then Cou = 1
  28.     Next Sht
  29.     MsgBox "该工作簿中" & IIf(Cou, "存", "不存") & "在名为<123>的工作表"
  30. Rem 10  判断工作簿中是否存在区域数组
  31.     Dim Sht1 As Worksheet, Sel As Range, Rng As Range, Cou1 As Integer
  32.     For Each Sht1 In Sheets
  33.         On Error Resume Next    '必须错误继续执行
  34.         Sht1.Cells.SpecialCells(xlCellTypeFormulas, 23).Select '定位公式
  35.         '定位不到单元格,则下一个工作表,下一段循环取下一工作表定位公式范围
  36. '        If Err.Number = 1004 Then Sht1.Next.Activate
  37.         For Each Rng In Selection   '定位到单元格执行判断,找到第一个推出内层循环
  38.              If Rng.HasArray = True Then Cou1 = Cou1 + 1: Exit For
  39.         Next Rng
  40.     Next Sht1
  41.     MsgBox "该工作簿中 " & IIf(Cou1, Cou1 & " 个工作表存在区域数组", "不存在区域数组")
  42. Rem 11 判断工作簿是否已保存
  43.     If ThisWorkbook.Saved = True Then MsgBox "该工作簿未修改或已经保存过,并将关闭!": ThisWorkbook.Close
  44. End Sub
9楼
胖头鱼tx
1判断活动工作表是否处于保护状态
Sub 判断工作表保护状态()

   If Sheets("sheet1").ProtectContents = True Then

     MsgBox "yes"

   Else

     MsgBox "no"

    End If

End Sub
2判断活动单元格是否处于保护状态
Sub 工作表()
   If ActiveCell.Locked = True Then
    MsgBox "yes"
   Else
    MsgBox "no"
   End If
End Sub
3判断活动单元格是否有公式
Sub 工作表()
   If ActiveCell.Hasformula = True Then
     MsgBox "yes"
   Else
     MsgBox "no"
   End If
End Sub
4判断活动工作表是否处于筛选状态
Sub 工作表()
   If Sheets("Sheet1").FilterMode = True Then
     MsgBox "yes"
   Else
     MsgBox "no"
   End If
End Sub
5判断活动单元格是否于数组区域中
Sub 工作表()
   If activecell.HasArray Then
    MsgBox "yes"
   Else
    MsgBox "no"
   End If
End Sub
6判断活动单元格是否为错误值
Sub 工作表()
  If IsError(ActiveCell) Then
   MsgBox "yes"
  Else
   MsgBox "no"
  End If
End Sub
7判断“123.xls”工作簿是否处于激活状态
Sub 工作表()
  If ActiveCell.parent.parent.name=123.xls Then
   MsgBox "yes"
  Else
   MsgBox "no"
  End If
End Sub
8判断活动单元格是否处于可见状态
Sub 工作表()
  If ActiveCell.EntireRow.Hidden Or ActiveCell.EntireColumn.Hidden = True Then
   MsgBox "yes"
  Else
   MsgBox "no"
  End If
End Sub
9判断“456.xls”工作簿中是存在名为“123”的工作表
Sub 工作表1()
  Workbooks.Open "c:\456.xls"
  If Sheets("123") Is Nothing Then
   MsgBox "工作表不存在"
  Else
    MsgBox "工作表存在"
  End If
End Sub
10判断活动工作表中是否存在区域数组公式
Sub 工作表ss()
  For Each cell In ActiveSheet.UsedRange
  If cell.HasArray Then
   MsgBox "yes"
  Exit Sub
  End If
  Next
End Sub
11判断活动工作簿是否处于已保存状态(关闭时不会弹出是否需保存的提示框,表示处于已保存状

态)
Sub 工作表11()
  Dim wb As Workbook
  Set wb = Application.ThisWorkbook
  If wb.Path = "" Then
    MsgBox "该工作簿未经任何保存"
  Else
  Exit Sub
  End If
End Sub
10楼
wendel
无心手语
  1. Sub test01()
  2.     If ActiveSheet.ProtectContents Or ActiveSheet.ProtectDrawingObjects Then
  3.         MsgBox "当前工作表保护中", vbInformation
  4.     Else
  5.         MsgBox "当前工作表未保护", vbInformation
  6.     End If
  7. End Sub

  8. Sub test02()
  9.         If ActiveSheet.ProtectContents And ActiveCell.Locked = True Then
  10.         MsgBox "活动单元格已处于保护状态", vbInformation
  11.     Else
  12.         MsgBox "活动单元格没有处于保护状态", vbInformation
  13.     End If
  14. End Sub

  15. Sub test03()
  16.     If ActiveCell.HasFormula Then
  17.         MsgBox "包含公式", vbInformation
  18.     Else
  19.         MsgBox "不包含公式", vbInformation
  20.     End If
  21. End Sub

  22. Sub test04()
  23.     If ActiveSheet.AutoFilterMode Then
  24.         MsgBox "活动工作表处于筛选状态", vbInformation
  25.     Else
  26.         MsgBox "活动工作表没有处于筛选状态", vbInformation
  27.     End If
  28. End Sub

  29. Sub test05()
  30.     If ActiveCell.HasArray Then
  31.         MsgBox "活动单元格在数组区域中", vbInformation
  32.     Else
  33.         MsgBox "活动单元格没在数组区域中", vbInformation
  34.     End If
  35. End Sub

  36. Sub test06()
  37.     If IsError(ActiveCell.Value) Then
  38.         MsgBox "活动单元格为错误值", vbInformation
  39.     Else
  40.         MsgBox "活动单元格不为错误值", vbInformation
  41.     End If
  42. End Sub

  43. Sub test07()
  44.     If UCase(Application.ActiveWorkbook.Name) <> UCase("123.xls") Then
  45.         MsgBox "123.xls 当前没有激活", vbInformation
  46.     Else
  47.         MsgBox "123.xls 当前处于激活状态", vbInformation
  48.     End If
  49. End Sub

  50. Sub test08()
  51.         If Not Intersect(ActiveWindow.VisibleRange, ActiveCell) Is Nothing Then
  52.         MsgBox "活动单元格可见", vbInformation
  53.     Else
  54.         MsgBox "活动单元格不可见", vbInformation
  55.     End If
  56. End Sub

  57. Sub test09()
  58.     Dim sht As Worksheet
  59.     On Error Resume Next
  60.     Workbooks.Open ThisWorkbook.Path & "\" & "456.xls"
  61.     Set sht = Worksheets("123")
  62.         If sht Is Nothing Then
  63.             MsgBox "123工作表不存在", vbInformation
  64.         Else
  65.             MsgBox "123工作表存在", vbInformation
  66.         End If
  67. End Sub

  68. Sub test10()
  69.     Dim Rng As Range, i As Boolean
  70.     For Each Rng In ActiveSheet.UsedRange
  71.         If Rng.HasArray Then
  72.             i = True: Exit For
  73.         End If
  74.     Next
  75.     If i Then
  76.         MsgBox "活动工作表存在区域数组公式", vbInformation
  77.     Else
  78.         MsgBox "活动工作表不存在区域数组公式", vbInformation
  79.     End If
  80. End Sub

  81. Sub test11()
  82.     If ThisWorkbook.Saved Then
  83.         MsgBox "活动工作簿已保存", vbInformation
  84.     Else
  85.         MsgBox "活动工作簿未保存", vbInformation
  86.     End If
  87. End Sub
11楼
罗刚君
出几个作业:
1.判断活动工作表是否处于保护状态
2.判断活动单元格是否处于保护状态
3.判断活动单元格是否有公式
4.判断活动工作表是否处于筛选状态
5.判断活动单元格是否于数组区域中
6.判断活动单元格是否为错误值
7.判断“123.xls”工作簿是否处于激活状态
8.判断活动单元格是否处于可见状态
9.判断“456.xls”工作簿中是存在名为“123”的工作表
10.判断活动工作表中是否存在区域数组公式
11.判断活动工作簿是否处于已保存状态(关闭时不会弹出是否需保存的提示框,表示处于已保存状态)

补充:
请直接贴11段代码即可,不用上附件
答案:

11个题目.rar
12楼
wp8680
  1. '1.判断活动工作表是否处于保护状态ActiveSheet.ProtectContents
  2. Sub 作业1()
  3.     If ActiveSheet.ProtectContents Then
  4.         MsgBox ActiveSheet.Name & "处于保护状态"
  5.     Else
  6.         MsgBox ActiveSheet.Name & "未保护"
  7.     End If
  8. End Sub
  9. '2.判断活动单元格是否处于保护状态Selection.Locked
  10. Sub 作业2()
  11.     If Selection.Locked Then
  12.         MsgBox Selection.Address & "处于保护状态"
  13.     Else
  14.         MsgBox Selection.Address & "未保护"
  15.     End If
  16. End Sub
  17. '3.判断活动单元格是否有公式Selection.HasFormula
  18. Sub 作业3()
  19.     If Selection.HasFormula Then
  20.         MsgBox Selection.Address & "内有公式"
  21.     Else
  22.         MsgBox Selection.Address & "没有公式"
  23.     End If
  24. End Sub
  25. '4.判断活动工作表是否处于筛选状态ActiveSheet.FilterMode
  26. Sub 作业4()
  27.     If ActiveSheet.FilterMode Then
  28.         MsgBox ActiveSheet.Name & "处于筛选状态"
  29.     Else
  30.         MsgBox ActiveSheet.Name & "未筛选状态"
  31.     End If
  32. End Sub
  33. '5.判断活动单元格是否于数组区域中ActiveCell.HasArray
  34. Sub 作业5()
  35.     If ActiveCell.HasArray Then
  36.         MsgBox ActiveCell.Address & "在数组公式区域中"
  37.     Else
  38.         MsgBox ActiveCell.Address & "不在数组公式区域中"
  39.     End If
  40. End Sub
  41. '6.判断活动单元格是否为错误值ActiveCell.Errors.Item(xlEvaluateToError).Value
  42. Sub 作业6()
  43.     If ActiveCell.Errors.Item(xlEvaluateToError).Value = True Then
  44.         MsgBox ActiveCell.Address & "中有错误值"
  45.     Else
  46.         MsgBox ActiveCell.Address & "中没有错误值"
  47.     End If
  48. End Sub
  49. '7.判断“123.xls”工作簿是否处于激活状态
  50. Sub 作业7()
  51. 'MsgBox ActiveSheet.Parent.Name
  52.     If ActiveSheet.Parent.Name = "123.xls" Then
  53.         MsgBox "当前工作簿是123.xls"
  54.     Else
  55.         MsgBox "当前工作簿不是123.xls"
  56.     End If
  57. End Sub
  58. '8.判断活动单元格是否处于可见状态
  59. Sub 作业8()
  60.     If ActiveCell.EntireRow.Hidden Or ActiveCell.EntireColumn.Hidden Then
  61.         MsgBox "当前单元格处于隐藏状态"
  62.     Else
  63.         MsgBox "当前单元格处于可见状态"
  64.     End If
  65. End Sub
  66. '9.判断“456.xls”工作簿中是存在名为“123”的工作表
  67. Sub 作业9()
  68.     Dim sh As Worksheet
  69.     On Error Resume Next
  70. '    If ActiveSheet.Parent.Name = "456.xls" Then
  71.         Set sh = ThisWorkbook.Sheets("123")
  72.         If Err.Number = 0 Then MsgBox "存在123的工作表" Else MsgBox "不存在123的工作表"
  73. '    Else
  74. '        MsgBox "请打开工作簿《456.xls》后操作运行本宏"
  75. '    End If
  76. End Sub
  77. '10.判断活动工作表中是否存在区域数组公式
  78. Sub 作业10()
  79.     Dim rng As Range, k As Boolean
  80.     ActiveSheet.UsedRange.Select
  81.     For Each rng In ActiveSheet.UsedRange
  82.         If rng.HasArray Then MsgBox "表中有区域数组公式": k = True: Exit Sub
  83.     Next rng
  84.     If k = False Then MsgBox "表中没有区域数组公式"
  85. End Sub
  86. '11.判断活动工作簿是否处于已保存状态(关闭时不会弹出是否需保存的提示框,表示处于已保存状态)
  87. Sub 作业11()
  88.     If ActiveWorkbook.Saved Then
  89.         MsgBox "当前工作簿已保存过了。"
  90.     Else
  91.         MsgBox "当前工作簿还没有保存过。"
  92.     End If
  93. End Sub
13楼
kcxs
客城小生的作业
  1. Sub t1判断活动工作表是否处于保护状态()
  2.     MsgBox IIf(ActiveSheet.ProtectContents, ActiveSheet.Name & "工作表处于保护状态", ActiveSheet.Name & "工作表未保护")
  3. End Sub
  4. Sub t2判断活动单元格是否处于保护状态()
  5.     MsgBox IIf(ActiveSheet.ProtectContents And ActiveCell.Locked, ActiveCell.address & "单元格处于保护状态", ActiveCell.address & "单元格未保护")
  6. End Sub
  7. Sub t3判断活动单元格是否有公式()
  8.     MsgBox IIf(ActiveCell.HasFormula, ActiveCell.address & "单元格有公式", ActiveCell.address & "单元格没有公式")
  9. End Sub
  10. Sub t4判断活动工作表是否处于筛选状态()
  11.     MsgBox IIf(ActiveSheet.FilterMode, ActiveSheet.Name & "工作表处于筛选状态", ActiveSheet.Name & "工作表不处于筛选状态")
  12. End Sub
  13. Sub t5判断活动单元格是否于数组区域中()
  14.     MsgBox IIf(ActiveCell.HasArray, ActiveCell.address & "单元格处于数组区域中", ActiveCell.address & "单元格不处于数组区域中")
  15. End Sub
  16. Sub t6判断活动单元格是否为错误值()
  17.     MsgBox IIf(IsError(ActiveCell), ActiveCell.address & "单元格为错误值", ActiveCell.address & "单元格不为错误值")
  18. End Sub
  19. Sub t7判断工作簿是否处于激活状态()
  20.     MsgBox IIf(ActiveWorkbook.Name = "123.xls", "“123.xls”工作簿处于激活状态", "“123.xls”工作簿不处于激活状态,当前工作薄是“" & ActiveWorkbook.Name & "”")
  21. End Sub
  22. Sub t8判断活动单元格是否处于可见状态()
  23.     MsgBox IIf(ActiveCell.Columns.Hidden, ActiveCell.address & "单元格不处于可见状态", ActiveCell.address & "单元格处于可见状态")
  24. End Sub
  25. Sub t9判断工作簿中是存在名为123的工作表()
  26.     Dim i As Byte
  27.     For i = 1 To Worksheets.Count
  28.         If Worksheets(i).Name = "123" Then
  29.             MsgBox "名为“123”的工作表位于第" & i & "个工作表"
  30.             Exit Sub
  31.         End If
  32.     Next
  33.         MsgBox "不存在名为“123”的工作表"
  34. End Sub
  35. Sub t10判断活动工作表中是否存在区域数组公式()
  36.     MsgBox IIf(ActiveSheet.UsedRange.HasArray, ActiveSheet.Name & "工作表存在区域数组公式", ActiveSheet.Name & "工作表不存在区域数组公式")
  37. End Sub
  38. Sub t11判断活动工作簿是否处于已保存状态()
  39.     MsgBox IIf(ActiveWorkbook.Saved = False, ActiveWorkbook.Name & "工作簿没有处于已保存状态", ActiveWorkbook.Name & "工作簿处于已保存状态")
  40. End Sub
14楼
wangxf9209
  1. Sub 宏1()
  2. If ActiveSheet.ProtectContents Then
  3. MsgBox "活动工作表为保护状态"
  4. Else
  5. MsgBox "活动工作表为非保护状态"
  6. End If
  7. End Sub
  1. Sub 宏2()
  2. If ActiveCell.Locked Then
  3. MsgBox "活动单元格为保护状态"
  4. Else
  5. MsgBox "活动单元格为非保护状态"
  6. End If
  7. End Sub
  1. Sub 宏3()
  2. If ActiveCell.Formula <> ActiveCell.Value And Left(ActiveCell.Formula, 1) = "=" Then
  3. MsgBox "活动单元格内有公式"
  4. Else
  5. MsgBox "活动单元格内无公式"
  6. End If
  7. End Sub
  1. Sub 宏4()
  2. If ActiveSheet.AutoFilterMode Then
  3. MsgBox "活动工作表处于筛选状态"
  4. Else
  5. MsgBox "活动工作表处于非筛选状态"
  6. End If
  7. End Sub
5、If Not Intersect(ActiveCell, [A1:E5]) Is Nothing Then   '活动单元格处于指定区域中
6、If IsError(ActiveCell) Then  '活动单元格内容为错误值
7、If If Workbooks("123.xls") Is ActiveWorkbook Then   '工作簿“123.xls”处于激活状态
8、If Not Intersect(ActiveCell, Cells.SpecialCells(xlCellTypeVisible)) Is Nothing Then   '活动单元格为可见
    或If ActiveCell.EntireRow.Hidden Or ActiveCell.EntireColumn.Hidden Then
  1. Sub 宏9()
  2. Dim SHT As Worksheet
  3. For Each SHT In Workbooks("456.XLS").Worksheets  '工作簿“456.XLS”须打开
  4. 'MsgBox SHT.Name
  5. If SHT.Name = "123" Then
  6. MsgBox "工作簿中存在名为""123""的工作表"
  7. N = 1: Exit For
  8. End If
  9. Next
  10. If N = 0 Then MsgBox "工作簿中没有名为""123""的工作表"
  11. End Sub
  1. Sub 宏10()
  2.     Dim RNG1 As Range, RNG As Range
  3.     For Each RNG In ActiveSheet.UsedRange   '循环检查已用区域的每个单元格
  4.          If RNG.HasArray Then                   '如果当前循环到的单元格(下称单元格)为数组公式,则继续运行,否则跳转到NEXT
  5.             If RNG1 Is Nothing Then            '如果单元格为第一个有数组公式的单元格,将其赋值给变量RNG1
  6.                 Set RNG1 = RNG
  7.             Else
  8.                 If RNG.Formula = RNG1.Formula Then   ‘如果单元格的数组公式与上一数组单元格的公式一样,则继续下面的判断
  9.                     If RNG.Address = RNG1.Offset(0, 1).Address Or RNG.Address = RNG1.Offset(1, 0).Address Then MsgBox "活动工作表存在区域数组公式": Exit For    '如果单元格和上一数组单元格上下或左右相邻,则弹出提示并结束过程。
  10.                End If
  11.                 RNG1 = RNG
  12.             End If
  13.         End If
  14.     Next
  15. End Sub
11、If ActiveWorkbook.Path = "" Then  '活动工作簿没有保存
15楼
静思雨
1、
Sub test()
    If ActiveSheet.ProtectContents Or ActiveSheet.ProtectDrawingObjects Then
        MsgBox "活动工作表已处于保护状态"
    Else
        MsgBox "活动工作表没有处于保护状态"
    End If
End Sub

2、
Sub test()
    If ActiveSheet.ProtectContents And ActiveCell.Locked = True Then
        MsgBox "活动单元格已处于保护状态"
    Else
        MsgBox "活动单元格没有处于保护状态"
    End If
End Sub

3、
Sub test()
    If ActiveCell.HasFormula Then
        MsgBox "包含公式"
    Else
        MsgBox "不包含公式"
    End If
End Sub

4、
Sub test()
    If ActiveSheet.AutoFilterMode Then
        MsgBox "活动工作表处于筛选状态"
    Else
        MsgBox "活动工作表没有处于筛选状态"
    End If
End Sub

5、
Sub test()
    If ActiveCell.HasArray Then
        MsgBox "活动单元格在数组区域中"
    Else
        MsgBox "活动单元格没在数组区域中"
    End If
End Sub
6、
Sub test()
    If IsError(ActiveCell.Value) Then
        MsgBox "活动单元格为错误值"
    Else
        MsgBox "活动单元格不为错误值"
    End If
End Sub

7、
Sub test()
    If UCase(Application.ActiveWorkbook.Name) <> UCase("123.xls") Then
        MsgBox "123.xls 当前没有激活"
    Else
        MsgBox "123.xls 当前处于激活状态"
    End If
End Sub

8、
Sub test()
    If ActiveSheet.Rows(ActiveCell.Row).Hidden Or ActiveSheet.Columns(ActiveCell.Column).Hidden = True Then
        MsgBox "活动单元格处于隐藏状态"
    Else
        MsgBox "活动单元格处于可见状态"
    End If
End Sub

9、
Sub test()
    Dim sht As Worksheet
    On Error Resume Next
    Set sht = Worksheets("123")
        If sht Is Nothing Then
            MsgBox "123工作表不存在"
        Else
            MsgBox "123工作表存在"
        End If
End Sub

10、
Sub test()
    If Cells.HasArray Then
        MsgBox "活动工作表存在数组区域"
    Else
        MsgBox "活动工作表不存在数组区域"
    End If
End Sub

11、
Sub test()
    If ThisWorkbook.Saved Then
        MsgBox "活动工作簿处于已保存状态"
    Else
        MsgBox "活动工作簿未处于已保存状态"
    End If
End Sub
16楼
liaozhifa33
宁静致远

  1. '1.判断活动工作表是否处于保护状态
  2. Sub CheckActiveSheetProtectStatus()
  3.     If ActiveSheet.ProtectContents Then MsgBox ActiveSheet.Name & "处于保护状态" Else MsgBox ActiveSheet.Name & "未保护"
  4. End Sub

  5. '2.判断活动单元格是否处于保护状态
  6. Sub CheckActivecellProtectStatus()
  7.     If ActiveCell.AllowEdit = False Then MsgBox ActiveCell.Address(0, 0) & "处于保护状态" Else: MsgBox ActiveCell.Address(0, 0) & "未保护"
  8. End Sub

  9. '3.判断活动单元格是否有公式
  10. Sub CheckActivecellFormula()
  11.     If ActiveCell.HasFormula Then MsgBox ActiveCell.Address(0, 0) & "有公式" Else: MsgBox ActiveCell.Address(0, 0) & "没有公式"
  12. End Sub

  13. '4.判断活动工作表是否处于筛选状态
  14. Sub CheckActiveSheetFilterMode()
  15.     If ActiveSheet.FilterMode = True Then MsgBox ActiveSheet.Name & "处于筛选状态" Else: MsgBox ActiveSheet.Name & "不含筛选"
  16. End Sub

  17. '5.判断活动单元格是否于数组区域中
  18. Sub CheckActiveCellHasArray()
  19. '老师答案
  20.     On Error Resume Next    '当程序出错时,继续执行一句代码
  21.     Dim rng As Range, ArrayCount As Integer    '声明两个变量
  22.     Set rng = ActiveCell.CurrentArray    '将活动单元格的数组区域赋值给变量rng
  23.     ArrayCount = rng.Cells.Count    '将rng的单元格数量赋值给变量ArrayCount
  24.     If ArrayCount > 1 Then  '如果ArrayCount大于1
  25.         MsgBox "活动单元格处于数组区域中", vbInformation    '提示用户
  26.     Else    '否则
  27.         MsgBox "活动单元格不在数组区域中", vbInformation    '提示用户
  28.     End If
  29. End Sub

  30. '6.判断活动单元格是否为错误值
  31. Sub CheckActiveCellValue()
  32.     If IsError(ActiveCell) Then MsgBox ActiveCell.Address(0, 0) & "为错误值" Else MsgBox ActiveCell.Address(0, 0) & "值正常"
  33. End Sub

  34. '7.判断“123.xls”工作簿是否处于激活状态
  35. Sub CheckWorkBookActive()
  36.     If ActiveWorkbook.Name = "123.xls" Then MsgBox ActiveWorkbook.Name & "处于激活状态" Else MsgBox "123.xls未激活"
  37. End Sub

  38. '8.判断活动单元格是否处于可见状态
  39. '记得可以获取活动窗口的单元格地址,判断活动单元格是否在此地之内即可,Intersect is nothing
  40. Sub 判断活动单元格是否处于可见状态()
  41. '老师答案
  42.     If ActiveCell.EntireRow.Hidden Or ActiveCell.EntireColumn.Hidden Then
  43.         MsgBox "当前单元格处于隐藏状态"
  44.     Else
  45.         If Intersect(ActiveWindow.VisibleRange, ActiveCell) Is Nothing Then
  46.             MsgBox "当前单元格处于隐藏状态"
  47.         Else
  48.             MsgBox "当前单元格处于可见状态"
  49.         End If
  50.     End If
  51. End Sub

  52. '9.判断“456.xls”工作簿中是存在名为“123”的工作表
  53. Sub CheckWorksheetExist()
  54.     Dim sh As Worksheet, wb As Workbook
  55.     On Error Resume Next
  56.     Set wb = Workbooks("456.xls")
  57.     If Err.Number <> 0 Then
  58.         MsgBox "不存在“456.xls”工作簿"
  59.     Else
  60.         Set sh = wb.Sheets("123")
  61.         If Err.Number = 0 Then
  62.             MsgBox "“456.xls”工作簿中存在名为“123”的工作表"
  63.         Else
  64.             MsgBox "“456.xls”工作簿中不存在名为“123”的工作表"
  65.         End If
  66.     End If
  67. End Sub
  68. '=====================
  69. Sub 九判断456xls工作簿中是存在名为123的工作表()
  70.     On Error Resume Next
  71.     If Workbooks("456.xls").Worksheets("123") Is Nothing Then
  72.         MsgBox "工作表不存在"
  73.     Else
  74.         MsgBox "工作表存在"
  75.     End If
  76. End Sub

  77. '10.判断活动工作表中是否存在区域数组公式
  78. sub 判断活动工作表中是否存在区域数组公式()
  79.     Dim rng As Range, ArrarCount As Integer    '声明变量
  80.     On Error Resume Next
  81.     For Each rng In ActiveSheet.UsedRange    '遍历已用区域
  82.         ArrarCount = rng.CurrentArray.Cells.Count
  83.         If ArrarCount > 1 Then    '如果数组区域的单元格数量大于1
  84.             MsgBox "活动工作表存在数组区域", vbInformation    '提示用户
  85.             Exit Sub    '结束子过程
  86.         End If
  87.     Next rng
  88.     MsgBox "活动工作表不存在数组区域", vbInformation    '提示用户
  89. end sub

  90. '11.判断活动工作簿是否处于已保存状态(关闭时不会弹出是否需保存的提示框,表示处于已保存状态)
  91. Sub CheckWorkBookSaved()
  92.     If Application.ThisWorkbook.Saved Then MsgBox "工作簿已经保存" Else MsgBox "工作簿未保存"
  93. End Sub
17楼
mmice
Sub 判断活动工作表是否处于保护状态1()
    MsgBox ActiveSheet.ProtectContents
    End Sub
Sub 判断活动单元格是否处于保护状态2()
    MsgBox ActiveCell.Locked
End Sub
Sub 判断活动单元格是否有公式3()
    MsgBox ActiveCell.HasFormula
End Sub
Sub 判断活动工作表是否处于筛选状态4()
    MsgBox ActiveSheet.FilterMode
End Sub
Sub 判断活动单元格是否于数组区域中5()
   MsgBox IIf(IsArray(ActiveCell), "是", "否")
End Sub
Sub 判断活动单元格是否为错误值6()
    'MsgBox IsError(ActiveCell) '结果是false
    MsgBox IIf(IsError(ActiveCell), "无错误值", "有错误值") '如果 expression 参数表示一个错误,则 IsError 返回 True;否则返回 False
End Sub
Sub 判断123xls工作簿是否处于激活状态7()
    MsgBox ActiveWorkbook.Name <> "123"
End Sub

Sub 判断活动单元格是否处于可见状态8()
     If ActiveCell.EntireRow.Hidden = True Or ActiveCell.EntireColumn.Hidden = True Then MsgBox "活动单元格不可见" Else MsgBox "活动单元格可见"
End Sub
Sub 判断456xls工作簿中是存在名为123的工作表9()
    Dim sht As Worksheet
        On Error Resume Next
        For Each sht In Workbooks("456.xls").Sheets
            If sht.Name <> "123" Then MsgBox "123工作表不存在", 64, "提示"
        Next
    End Sub
Sub 判断活动工作表中是否存在区域数组公式10()
    MsgBox ActiveCell.HasArray
End Sub
Sub 判断活动工作簿是否处于已保存状态关闭时不会弹出是否需保存的提示框表示处于已保存状态11()
    MsgBox Len(ActiveWorkbook.Path) > 1
End Sub


18楼
无言的人
无言的人
将全部11题并入一个过程汇总
  1. Sub Timu11()
  2. Rem 01 判断激活工作表是否处于被保护状态
  3.     MsgBox "激活工作表" & ActiveSheet.Name & IIf(ActiveSheet _
  4.         .ProtectScenarios, "处于保护状态", "处于非保护状态")
  5. Rem 02 判断激活单元格是否处于保护状态
  6.     MsgBox "活动单元格" & ActiveCell.Address(0, 0) & IIf(ActiveCell _
  7.         .Locked, "处于非保护状态", "处于保护状态")
  8. Rem 03 判断激活单元格是否存在公式
  9.     MsgBox "活动单元格" & ActiveCell.Address(0, 0) & IIf(ActiveCell _
  10.         .HasFormula, "包含有公式", "没有存在公式")
  11. Rem 04 判断激活工作表是否处于筛选状态
  12.     MsgBox "激活工作表" & ActiveSheet.Name & IIf(ActiveSheet.AutoFilter _
  13.         Is Nothing, "未处于筛选状态", "处于筛选状态")
  14. Rem 05 判断 激活单元格是否存在区域数组
  15.     MsgBox "激活单元格" & ActiveCell.Address(0, 0) & IIf(ActiveCell. _
  16.         CurrentRegion.HasArray, "处于区域数组范围中", "未处于区域数组范围中")
  17. Rem 06 判断激活单元格是否存在错误值
  18.     MsgBox "激活单元格" & ActiveCell.Address(0, 0) & IIf(IsError(ActiveCell) _
  19.        , "存在错误值", "未存在错误值")
  20. Rem 07 判断指定工作表是否激活
  21.     MsgBox IIf(ActiveSheet.Name = "123", "<123> 工作表处于激活状态", "<123> 工作表非激活状态")
  22. Rem 08 判断激活单元格是否隐藏
  23.     MsgBox IIf(ActiveCell.Height = 0 Or ActiveCell.Width = 0, "处于不可见状态", "处于可见状态")
  24. Rem 09 判断工作簿中是否存在指定工作表名称
  25.     Dim Sht As Worksheet, Cou As Integer
  26.     For Each Sht In Sheets
  27.         If Sht.Name = "123" Then Cou = 1
  28.     Next Sht
  29.     MsgBox "该工作簿中" & IIf(Cou, "存", "不存") & "在名为<123>的工作表"
  30. Rem 10  判断工作簿中是否存在区域数组
  31.     Dim Sht1 As Worksheet, Sel As Range, Rng As Range, Cou1 As Integer
  32.     For Each Sht1 In Sheets
  33.         On Error Resume Next    '必须错误继续执行
  34.         Sht1.Cells.SpecialCells(xlCellTypeFormulas, 23).Select '定位公式
  35.         '定位不到单元格,则下一个工作表,下一段循环取下一工作表定位公式范围
  36. '        If Err.Number = 1004 Then Sht1.Next.Activate
  37.         For Each Rng In Selection   '定位到单元格执行判断,找到第一个推出内层循环
  38.              If Rng.HasArray = True Then Cou1 = Cou1 + 1: Exit For
  39.         Next Rng
  40.     Next Sht1
  41.     MsgBox "该工作簿中 " & IIf(Cou1, Cou1 & " 个工作表存在区域数组", "不存在区域数组")
  42. Rem 11 判断工作簿是否已保存
  43.     If ThisWorkbook.Saved = True Then MsgBox "该工作簿未修改或已经保存过,并将关闭!": ThisWorkbook.Close
  44. End Sub
19楼
胖头鱼tx
1判断活动工作表是否处于保护状态
Sub 判断工作表保护状态()

   If Sheets("sheet1").ProtectContents = True Then

     MsgBox "yes"

   Else

     MsgBox "no"

    End If

End Sub
2判断活动单元格是否处于保护状态
Sub 工作表()
   If ActiveCell.Locked = True Then
    MsgBox "yes"
   Else
    MsgBox "no"
   End If
End Sub
3判断活动单元格是否有公式
Sub 工作表()
   If ActiveCell.Hasformula = True Then
     MsgBox "yes"
   Else
     MsgBox "no"
   End If
End Sub
4判断活动工作表是否处于筛选状态
Sub 工作表()
   If Sheets("Sheet1").FilterMode = True Then
     MsgBox "yes"
   Else
     MsgBox "no"
   End If
End Sub
5判断活动单元格是否于数组区域中
Sub 工作表()
   If activecell.HasArray Then
    MsgBox "yes"
   Else
    MsgBox "no"
   End If
End Sub
6判断活动单元格是否为错误值
Sub 工作表()
  If IsError(ActiveCell) Then
   MsgBox "yes"
  Else
   MsgBox "no"
  End If
End Sub
7判断“123.xls”工作簿是否处于激活状态
Sub 工作表()
  If ActiveCell.parent.parent.name=123.xls Then
   MsgBox "yes"
  Else
   MsgBox "no"
  End If
End Sub
8判断活动单元格是否处于可见状态
Sub 工作表()
  If ActiveCell.EntireRow.Hidden Or ActiveCell.EntireColumn.Hidden = True Then
   MsgBox "yes"
  Else
   MsgBox "no"
  End If
End Sub
9判断“456.xls”工作簿中是存在名为“123”的工作表
Sub 工作表1()
  Workbooks.Open "c:\456.xls"
  If Sheets("123") Is Nothing Then
   MsgBox "工作表不存在"
  Else
    MsgBox "工作表存在"
  End If
End Sub
10判断活动工作表中是否存在区域数组公式
Sub 工作表ss()
  For Each cell In ActiveSheet.UsedRange
  If cell.HasArray Then
   MsgBox "yes"
  Exit Sub
  End If
  Next
End Sub
11判断活动工作簿是否处于已保存状态(关闭时不会弹出是否需保存的提示框,表示处于已保存状

态)
Sub 工作表11()
  Dim wb As Workbook
  Set wb = Application.ThisWorkbook
  If wb.Path = "" Then
    MsgBox "该工作簿未经任何保存"
  Else
  Exit Sub
  End If
End Sub
20楼
wendel
无心手语
  1. Sub test01()
  2.     If ActiveSheet.ProtectContents Or ActiveSheet.ProtectDrawingObjects Then
  3.         MsgBox "当前工作表保护中", vbInformation
  4.     Else
  5.         MsgBox "当前工作表未保护", vbInformation
  6.     End If
  7. End Sub

  8. Sub test02()
  9.         If ActiveSheet.ProtectContents And ActiveCell.Locked = True Then
  10.         MsgBox "活动单元格已处于保护状态", vbInformation
  11.     Else
  12.         MsgBox "活动单元格没有处于保护状态", vbInformation
  13.     End If
  14. End Sub

  15. Sub test03()
  16.     If ActiveCell.HasFormula Then
  17.         MsgBox "包含公式", vbInformation
  18.     Else
  19.         MsgBox "不包含公式", vbInformation
  20.     End If
  21. End Sub

  22. Sub test04()
  23.     If ActiveSheet.AutoFilterMode Then
  24.         MsgBox "活动工作表处于筛选状态", vbInformation
  25.     Else
  26.         MsgBox "活动工作表没有处于筛选状态", vbInformation
  27.     End If
  28. End Sub

  29. Sub test05()
  30.     If ActiveCell.HasArray Then
  31.         MsgBox "活动单元格在数组区域中", vbInformation
  32.     Else
  33.         MsgBox "活动单元格没在数组区域中", vbInformation
  34.     End If
  35. End Sub

  36. Sub test06()
  37.     If IsError(ActiveCell.Value) Then
  38.         MsgBox "活动单元格为错误值", vbInformation
  39.     Else
  40.         MsgBox "活动单元格不为错误值", vbInformation
  41.     End If
  42. End Sub

  43. Sub test07()
  44.     If UCase(Application.ActiveWorkbook.Name) <> UCase("123.xls") Then
  45.         MsgBox "123.xls 当前没有激活", vbInformation
  46.     Else
  47.         MsgBox "123.xls 当前处于激活状态", vbInformation
  48.     End If
  49. End Sub

  50. Sub test08()
  51.         If Not Intersect(ActiveWindow.VisibleRange, ActiveCell) Is Nothing Then
  52.         MsgBox "活动单元格可见", vbInformation
  53.     Else
  54.         MsgBox "活动单元格不可见", vbInformation
  55.     End If
  56. End Sub

  57. Sub test09()
  58.     Dim sht As Worksheet
  59.     On Error Resume Next
  60.     Workbooks.Open ThisWorkbook.Path & "\" & "456.xls"
  61.     Set sht = Worksheets("123")
  62.         If sht Is Nothing Then
  63.             MsgBox "123工作表不存在", vbInformation
  64.         Else
  65.             MsgBox "123工作表存在", vbInformation
  66.         End If
  67. End Sub

  68. Sub test10()
  69.     Dim Rng As Range, i As Boolean
  70.     For Each Rng In ActiveSheet.UsedRange
  71.         If Rng.HasArray Then
  72.             i = True: Exit For
  73.         End If
  74.     Next
  75.     If i Then
  76.         MsgBox "活动工作表存在区域数组公式", vbInformation
  77.     Else
  78.         MsgBox "活动工作表不存在区域数组公式", vbInformation
  79.     End If
  80. End Sub

  81. Sub test11()
  82.     If ThisWorkbook.Saved Then
  83.         MsgBox "活动工作簿已保存", vbInformation
  84.     Else
  85.         MsgBox "活动工作簿未保存", vbInformation
  86.     End If
  87. End Sub

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap