精华内容
下载资源
问答
  • VBA锁定指定单元格

    千次阅读 2019-05-14 17:41:00
    If rs.RecordCount > 0 Then .Range("AF4").Value = pjno MsgBox "This project number does exists Please create a new one !", 16 .Range("A1:AH56").L...
    If rs.RecordCount > 0 Then
                    .Range("AF4").Value = pjno
                    MsgBox "This project number does exists Please create a new one !", 16
                    .Range("A1:AH56").Locked = False
                    .Range("F6:M6").Locked = True
                    ActiveSheet.Protect Password:="locked"
                    Exit Sub
    Else
                   
                    
                    .Range("AF4").Value = pjno
                
    End If

     

    转载于:https://www.cnblogs.com/luoye00/p/10863536.html

    展开全文
  • 我需要做一个表格,只有第九列可以编辑,其他地方点都点不了,不能编辑,也不能进行其他操作。另外希望顶部菜单都不能使用 ![图片说明]... # VBA 设置表格只有部分单元格可以编辑,其他单元格不能编辑
  • Excel VBA 锁定特定单元格

    万次阅读 2014-03-27 16:28:15
    在修改锁定的单元格前,要先把保护去掉.  With ThisWorkbook.Worksheets("检查信息")  ActiveSheet.Unprotect   改完单元格内容以后, 先设定Cells.Locked=False 再用select选中要锁定的范围,...

            用此法好, 不用select方法(会导致丢光标位置)

    With ThisWorkbook.Worksheets("检查信息")
            ActiveSheet.Unprotect

            AutoFilterMode = False '自动筛选
            Rows(1).AutoFilter
           
            Cells.Locked = False '序列号锁定
            Set rg = .Range("A1:A" & iNum + 100)
            For Each cell In rg
                cell.Locked = True
            Next
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowInsertingRows:=True, AllowFiltering:=True

     

     

     

    在修改锁定的单元格前,要先把保护去掉.   

    With ThisWorkbook.Worksheets("检查信息")
            ActiveSheet.Unprotect

     

    改完单元格内容以后,

    先设定Cells.Locked=False

    再用select选中要锁定的范围,可以是Range, Columns, Rows

    然后设定Selection.Locked=True

     

            Cells.Locked = False
            Columns("A:A").Select
            Selection.Locked = True
            Selection.FormulaHidden = False
            ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
            , AllowInsertingRows:=True, AllowFiltering:=True

    展开全文
  • 开发过程中,表格单元格里的显示数据经常超出单元格的宽度。遇到这种情况一般会这样处理。 1、超出部分显示省略号(…) 解决办法:在css中设置 text-overflow: ellipsis; text-overflow: 2、换行显示 解决办法: ...
  • '1、用VBA单元格中输入普通公式 Sub t1() Range("d2") = "=b2*c2" End Sub '2、用VBA单元格输入带引号的公式 Sub t3() Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" '遇到单引号就把单引号加倍 ...

    '1、工作簿

           Workbooks 代表工作簿集合,所有的工作簿,Workbooks(N),表示已打开的第N个工作簿
           Workbooks ("工作簿名称")
           ActiveWorkbook 正在操作的工作簿
           ThisWorkBook '代码所在的工作簿
    

    '2、工作表

            ' 'Sheets("工作表名称")
              'Sheet2.UsedRange 工作表已使用单元格集合
              'Sheet1 表示第一个插入的工作表,Sheet2表示第二个插入的工作表....
              'Sheets(n) 表示按排列顺序,第n个工作表
              'Sheets(1).Name = "工作表改名了"
              'ActiveSheet 表示活动工作表,光标所在工作表
              'worksheet 也表示工作表,但不包括图表工作表、宏工作表等。
              'Sheet1.Move before:=Sheets("Sheet3")  工作表移动到“”之前
              'Sheet1.Move after:=Sheets(worksheets.count) 工作表移动到所有表最后
    

    '3、单元格

               'cells 所有单元格
               'Range("A1").CurrentRegion 单元格所在区域连续的单元格集合
               'Range ("单元格地址")
               'Cells(行数,列数)
               'Activecell 正在选中或编辑的单元格
               'Selection 正被选中或选取的单元格或单元格区域
              ' Range("A2").Interior.ColorIndex = 3  单元格背景色3-8
    

    在这里插入图片描述

    '1、用VBA在单元格中输入普通公式

     Sub t1()
       Range("d2") = "=b2*c2"
     End Sub
    

    '2、用VBA在单元格输入带引号的公式

     Sub t3()
     
     Range("c16") = "=SUMIF(A2:A6,""b"",B2:B6)" '遇到单引号就把单引号加倍
     
     End Sub
    

    '3、用VBA在单元格中输入数组公式

    Sub t4()
      Range("c9").FormulaArray = "=SUM(B2:B6*C2:C6)"
    End Sub
    

    二、利用单元格公式返回值

     Sub t5()
         Range("d16") = Evaluate("=SUMIF(A2:A6,""b"",B2:B6)")
         Range("d9") = Evaluate("=SUM(B2:B6*C2:C6)")
     End Sub
    

    三、借用工作表函数

     Sub t6()
         Range("d8") = Application.WorksheeFunction.CountIf(Range("A1:A10"), "B")
     End Sub
    

    '立即窗口可以把运行过程中的值立即显示出来,主要用于程序的调试

    Sub d()
     Dim x As Integer, st As String
     For x = 1 To 10
        st = st & Cells(x, 1)
        Debug.Print "第" & x & "次运行结果:" _
        & st
        Debug.Print x
     Next x
    End Sub
    

    '一、END语句

      '作用:强制退出所有正在运行的程序。
    

    '二、Exit语句

      '退出指定的语句
    1、Exit Sub
    2、Exit function
    3、Exit for
    4、Exit do
    

    on error resume next '遇到错误,跳过继续执行下一句
    on error goto 0 '取消错误跳转

    'on error goto '出错时跳到指定的行数

      Sub t4()
          On Error GoTo 100
          Dim x As Integer
          
          For x = 1 To 10
            Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
          Next x
          
           Exit Sub
        100:
           MsgBox "在第" & x & "行出错了"
      End Sub
    

    'excel文件和工作簿

    'excel文件就是excel工作簿,excel文件打开需要excel程的支持
    'Workbooks 工作簿集合,泛指excel文件或工作簿
    'Workbooks(“A.xls”),名称为A的excel工作簿

    'ActiveWorkbook ,当打开多个excel工作簿时,正在操作的那个就是 ActiveWorkbook(活动工作簿)

    'Thisworkbook,VBA程序所在的工作簿,无论你打开多少个工作簿,无论当前是哪个工作簿是活动的,thisworkbook就是指它所在的工作簿。

    'Windows(“A.xls”),A工作簿的窗口,使用windows可以设置工作簿窗口的状态,如是否隐藏等。

     Sub t3()
     	Windows("e:/A.xls").Visible = False
     End Sub
      ActiveWindow.VisibleRange.Top 活动窗体的可见单元格区域的top位置
    

    工作表操作

    '1 判断A工作表文件是否存在

    Sub s1()
     Dim X As Integer
      For X = 1 To Sheets.Count
        If Sheets(X).Name = "A" Then
          MsgBox "A工作表存在"
          Exit Sub
        End If
      Next
      MsgBox "A工作表不存在"
    End Sub
    

    '2 excel工作表的插入

      Sub s2()
         Dim sh As Worksheet
         Set sh = Sheets.Add
           sh.Name = "模板"
           sh.Range("a1") = 100
      End Sub
    

    '3 excel工作表隐藏和取消隐藏

     Sub s3()
        Sheets(2).Visible = True
     End Sub
    

    '4 excel工作表的移动

      Sub s4()
         Sheets("Sheet2").Move before:=Sheets("sheet1") 'sheet2移动到sheet1前面
         Sheets("Sheet1").Move after:=Sheets(Sheets.Count) 'sheet1移动到所有工作表的最后面
       End Sub
    

    '6 excel工作表的复制

       Sub s5() '在本工作簿中
          Dim sh As Worksheet
          Sheets("模板").Copy before:=Sheets(1)
           Set sh = ActiveSheet
              sh.Name = "1日"
              sh.Range("a1") = "测试"
       End Sub`在这里插入代码片`
    

    Sub s6() '另存为新工作簿

      Sub s6() '另存为新工作簿
          Dim wb As Workbook
           Sheets("模板").Copy
           Set wb = ActiveWorkbook
              wb.SaveAs ThisWorkbook.Path & "/1日.xls"
              wb.Sheets(1).Range("b1") = "测试"
              wb.Close True
       End Sub
    

    '7 保护工作表

      Sub s7()
          Sheets("sheet2").Protect "123"
       End Sub
       Sub s8() '判断工作表是否添加了保护密码
          If Sheets("sheet2").ProtectContents = True Then
            MsgBox "工作簿保护了"
          Else
            MsgBox "工作簿没有添加保护"
          End If
       End Sub
    

    '8 工作表删除

     Sub s9()
       Application.DisplayAlerts = False
         Sheets("模板").Delete
       Application.DisplayAlerts = True
     End Sub
    

    '9 工作表的选取

    Sub s10()
       Sheets("sheet2").Select
    End Sub
    

    单元格操作

    '1 表示一个单元格(a1)

     Sub s()
       Range("a1").Select
       Cells(1, 1).Select
       Range("A" & 1).Select
       Cells(1, "A").Select
       Cells(1).Select
       [a1].Select
     End Sub
    

    '2 表示相邻单元格区域

      Sub d() '选取单元格a1:c5
          Range("a1:c5").Select
          Range("A1", "C5").Select
          Range(Cells(1, 1), Cells(5, 3)).Select
          Range("a1:a10").Offset(0, 1).Select
          Range("a1").Resize(5, 3).Select
       End Sub
    

    '3 表示不相邻的单元格区域

    Sub d1()
          Range("a1,c1:f4,a7").Activate
          Union(Range("a1"), Range("c1:f4"), Range("a7")).Activate
    End Sub
    
    Sub dd() 'union示例
      Dim rg As Range, x As Integer
      For x = 2 To 10 Step 2
        If x = 2 Then
            Set rg = Cells(x, 1)  'rg初始化,不然rg=nothing
        Else
            Set rg = Union(rg, Cells(x, 1))
        End If
      Next x
      rg.Select
    End Sub
    

    '4 表示行

    Sub h()
          Rows(1).Select
          Rows("3:7").Select
          Range("1:2,4:5").Select
          Range("c4:f5").EntireRow.Select
          Range("A1").EntireRow.Select
    End Sub
    

    '5 表示列

    Sub L()
          Dim first As Range, second As Range
          
          Columns(1).Select
          Columns("A:B").Select
          Range("A:B,D:E").Select
          Set first = Range("c4:f5").EntireRow '选取c4:f5所在的行
          Set second = Range("A1").EntireColumn '选取A1所在的列
          Union(first, second).Select
    End Sub
    

    '6 重置坐标下的单元格表示方法

    Sub cc()
      Range("b2").Range("a1") = 100
      cells.Cells(1,1)
    End Sub
    

    特殊单元格定位

    '1 已使用的单元格区域

     Sub d1()
      
        Sheets("sheet2").UsedRange.Select
        
        wb.Sheets(1).Range("a1:a10").Copy Range("i1")
        
      End Sub
    

    '2 某单元格所在的单元格区域

       Sub d2()
        
          Range("b8").CurrentRegion.Select
        
       End Sub
    

    '3 两个单元格区域共同的区域

    Sub d3()
     
    	 Intersect(Columns("b:c"), Rows("3:5")).Select
      
    End Sub
    

    '4 调用定位条件选取特殊单元格

    Sub d4()
    
       Range("A1:A6").SpecialCells(xlCellTypeBlanks).Select
       Range("B1:B6").SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 4
       
    End Sub
    

    '5 端点单元格

     Sub d5()
       
         Range("a65536").End(xlUp).Offset(1, 0) = 1000
         Range("A1").End(xlToRight).End(xlDown).Select
         
       End Sub
    

    单元格信息

    '1 单元格的值

      Sub x1()
        Range("b10") = Range("c2").Value
        Range("b11") = Range("c2").Text
        Range("c10") = "'" & Range("I3").Formula
      End Sub
    

    '2 单元格的地址

    Sub x2()
     With Range("b2").CurrentRegion
       [b12] = .Address
       [c12] = .Address(0, 0)
     End With
    End Sub
    

    '3 单元格的行列信息

    Sub x3()
      With Range("b2").CurrentRegion
        [b13] = .Row
        [b14] = .Rows.Count
        [b15] = .Column
        [b16] = .Columns.Count
        [b17] = .Range("a1").Address
      End With
    End Sub
    

    '4、单元格的格式信息

    Sub x4()
      With Range("b2")
        [b19] = .Font.Size
        [b20] = .Font.ColorIndex
        [b21] = .Interior.ColorIndex
        [b22] = .Borders.LineStyle
      End With
    End Sub
    

    '5、单元格批注信息

      Sub x5()
            [B24] = Range("I2").Comment.Text
      End Sub
    

    '6 单元格的位置信息

    Sub x6()
        With Range("b3")
          [b26] = .Top
          [b27] = .Left
          [b28] = .Height
          [b29] = .Width
        End With
    End Sub
    

    '7 单元格的上级信息

     Sub x7()
          With Range("b3")
            [b31] = .Parent.Name
            [b32] = .Parent.Parent.Name
          End With
     End Sub
    

    '8 内容判断

      Sub x8()
       With Range("i3")
        [b34] = .HasFormula
        [b35] = .Hyperlinks.Count
       End With
      End Sub
    

    单元格格式

    '1 判断是否为空单元格

    Sub d1()
       [b1] = ""
       If Range("a1") = "" Then
       If Len([a1]) = 0 Then
       
       If VBA.IsEmpty([a1]) Then
          [b1] = "空值"
       End If
    End Sub
    

    '2 判断是否为数字

      Sub d2()
          [b2] = ""
          If VBA.IsNumeric([a2]) And [a2] <> "" Then
          
          If Application.WorksheetFunction.IsNumber([a2]) Then
            [b2] = "数字"
          End If
      End Sub
    

    '3 判断是否为文本

    Sub d3()
      [b3] = ""
       If Application.WorksheetFunction.IsText([A3]) Then
       If VBA.TypeName([a3].Value) = "String" Then
         [b3] = "文本"
      End If
    End Sub
    

    '4 判断是否为汉字

       Sub d4()
            [b4] = ""
            If [a4] > "z" Then
              [b4] = "汉字"
            End If
       End Sub
    

    '5 判断错误值

    Sub d10()
          [b5] = ""
          If VBA.IsError([a5]) Then
          If Application.WorksheetFunction.IsError([a5]) Then
             [b5] = "错误值"
          End If
    End Sub
    
    Sub d11()
          [b6] = ""
          If VBA.IsDate([a6]) Then
             [b6] = "日期"
          End If
    End Sub
    

    '二、设置单元格自定义格式

       Sub d30()
            Range("d1:d8").NumberFormatLocal = "0.00"
       End Sub
    

    '三、按指定格式从单元格返回数值

       Format函数语法(和工作表数Text用法基本一致)
       
       Format(数值,自定义格式代码)
    

    合并单元格

    '单元格合并

    Sub h1()
        Range("g1:h3").Merge
        range.UnMerge 
    End Sub
    

    '合并区域的返回信息

      Sub h2()
            Range("e1") = Range("b3").MergeArea.Address '返回合并单元格地址
      End Sub
    

    '判断是否含合并单元格 MergeCells

    Sub h3()
        MsgBox Range("b2").MergeCells  ’在合并单元格中,返回true
        MsgBox Range("A1:D7").MergeCells ' 不在合并单元格中,返回false
        Range("e2") = IsNull(Range("a1:d7").MergeCells) '部分合并单元格,返回null
        Range("e3") = IsNull(Range("a9:d72").MergeCells)
    End Sub
    

    '综合示例

    '合并H列相同单元格

     Sub h4()
      Dim x As Integer
      Dim rg As Range
      Set rg = Range("h1")   '初始化
      Application.DisplayAlerts = False
      
      For x = 1 To 13
          If Range("h" & x + 1) = Range("h" & x) Then
          	 Set rg = Union(rg, Range("h" & x + 1))
          Else
             rg.Merge
             Set rg = Range("h" & x + 1)
          End If
      Next x
      Application.DisplayAlerts = True
     End Sub
    

    单元格编辑

    '1 单元格输入

    Sub t1()
      Range("a1") = "a" & "b"
      Range("b1") = "a" & Chr(10) & "b" '换行答输入
    End Sub
    

    '2 单元格复制和剪切

      Sub t2()
        Range("a1:a10").Copy Range("c1") 'A1:A10的内容复制到C1起点
      End Sub
    -------------------------------------------------------------
      Sub t3()
        Range("a1:a10").Copy
        ActiveSheet.Paste Range("d1") '粘贴至D1
      End Sub
     -----------------------------------------------------------
      Sub t4()
        Range("a1:a10").Copy
        Range("e1").PasteSpecial (xlPasteValues) '只粘贴为数值
      End Sub
      ----------------------------------------------------------
      Sub t5()
        Range("a1:a10").Cut
        ActiveSheet.Paste Range("f1") '粘贴到f1
      End Sub
     -------------------------------------------------------------
      Sub t6()
        Range("c1:c10").Copy
        Range("a1:a10").PasteSpecial Operation:=xlAdd '选择粘贴-加
      End Sub
      ------------------------------------------------------------
      Sub T7()
          Range("G1:G10") = Range("A1:A10").Value
      End Sub
    

    '3 填充公式

     Sub T8()
          Range("b1") = "=a1*10"
          Range("b1:b10").FillDown '向下填充公式
     End Sub
    

    单元格行列的删除和插入

    Sub c1()
      Rows(4).Insert
    End Sub
    -----------------------------------------------------------------
    
    Sub c2() '插入行并复制公式
      Rows(4).Insert
      Rows("12:14").Insert
      Range("3:4").FillDown
      Range("4:4").SpecialCells(xlCellTypeConstants) = ""
    End Sub
     -----------------------------------------------------------------
    
    Sub c3()
      Dim x As Integer
      For x = 2 To 20
        If Cells(x, 3) <> Cells(x + 1, 3) Then
          Rows(x + 1).Insert
          x = x + 1
        End If
      Next x
    End Sub
     -----------------------------------------------------------------
    
    Sub c4()
      Dim x As Integer, m1 As Integer, m2 As Integer
      Dim k As Integer
      m1 = 2
      For x = 2 To 1000   '在范围内
        If Cells(x, 1) = "" Then Exit Sub  ‘单元格为空,过程结束
        If Cells(x, 3) <> Cells(x + 1, 3) Then ’如果当前单元格不等于下个单元格
          m2 = x	 ‘记录下当前单元格行数
          Rows(x + 1).Insert  	‘在下一单元格前面插入一行
          Cells(x + 1, "c") = Cells(x, "c") & " 小计" 		’编辑下插入一行的单元格内容
          Cells(x + 1, "h") = "=sum(h" & m1 & ":h" & m2 & ")" 	’起始单元格到结尾单元格相加
          Cells(x + 1, "h").Resize(1, 4).FillRight	‘插入的单元格向右填充公式
          Cells(x + 1, "i") = ""		‘插入的一个单元格清空
          x = x + 1		‘跨过插入单元格,再次循环
          m1 = m2 + 2   ‘跨过插入单元格,再次循环
        End If
      Next x
    End Sub
    ----------------------------------------------------------------
    Sub dd() '删除小计行
     	Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End Sub
    

    单元格查询
    '1 使用循环查找 (在单元格中查找效率太低)

    '2 调用工作表函数

    Sub c1() '判断是否存在,并查找所在行数
          Dim hao As Integer
          Dim icount As Integer
          icount = Application.WorksheetFunction.CountIf(Sheets("库存明细表").[b:b], [g3])
          If icount > 0 Then
    	       MsgBox "该入库单号码已经存在,请不要重复录入"
    	       MsgBox Application.WorksheetFunction.Match([g3], Sheets("库存明细表").[b:b], 0)
          End If
    End Sub
      -----------------------------------------------------------
    

    '3 使用Find方法

    Sub c2()
          Dim r As Integer, r1 As Integer
          Dim icount As Integer
          icount = Application.WorksheetFunction.CountIf(Sheets("库存明细表").[b:b], [g3])
          If icount > 0 Then
           r = Sheets("库存明细表").[b:b].Find(Range("G3"), Lookat:=xlWhole).Row '查找号码第一次出现的位置
           r1 = Sheets("库存明细表").[b:b].Find([g3], , , , , xlPrevious).Row
           MsgBox r & ":" & r1
          End If
    End Sub
    
    	------------------------------------------------------
    
    
    Sub c3() '返回最下一行非空行的行数
        
          MsgBox Sheets("库存明细表").Cells.Find("*", , , , , xlPrevious).Row
        
       End Sub
     -----------------------------------------------------
    

    入库单实例

    Sub 输入()
      Dim c As Integer   '号码在库存表中的个数
      Dim r As Integer   '入库单的数据行数
      Dim cr As Integer  '库存明细表中第一个空行的行数
    With Sheets("库存明细表")
        c = Application.CountIf(.[b:b], Range("g3"))
        If c > 0 Then
           MsgBox "该单据号码已经存在!,请不要重复录入"
           Exit Sub
        Else
           r = Application.CountIf(Range("b6:b10"), "<>")
           cr = .[b65536].End(xlUp).Row + 1
           .Cells(cr, 1).Resize(r, 1) = Range("e3")
           .Cells(cr, 2).Resize(r, 1) = Range("g3")
           .Cells(cr, 3).Resize(r, 1) = Range("c3")
           .Cells(cr, 4).Resize(r, 6) = Cells(6, 2).Resize(r, 6).Value
           MsgBox "输入已完成"
        End If
     End With
    End Sub
    ------------------------------------------------------------
    Sub 查找()
      Dim c As Integer   '号码在库存表中的个数
      Dim r As Integer   '入库单的数据行数
      
    With Sheets("库存明细表")
        c = Application.CountIf(.[b:b], Range("g3"))
        If c = 0 Then
           MsgBox "该单据号码不存在!"
           Exit Sub
        Else
            r = .[b:b].Find(Range("g3"), , , , , xlNext).Row
            Range("c3") = .Cells(r, 3)
            Range("e3") = .Cells(r, 1)
            Cells(6, 2).Resize(c, 5) = .Cells(r, 4).Resize(c, 5).Value
           MsgBox "查询已完成"
        End If
     End With
    End Sub
    -----------------------------------------------------------
    Sub 删除()
     Dim c As Integer   '号码在库存表中的个数
      Dim r As Integer   '入库单的数据行数
      
    With Sheets("库存明细表")
        c = Application.CountIf(.[b:b], Range("g3"))
        If c = 0 Then
           MsgBox "该单据号码不存在!"
           Exit Sub
        Else
            r = .[b:b].Find(Range("g3"), , , , , xlNext).Row
            .Range(r & ":" & c + r - 1).Delete
           MsgBox "删除已完成"
        End If
     End With
    End Sub
    Sub 修改()
      Call 删除
      Call 输入
    End Sub
    
    展开全文
  • 锁定单元格

    2014-01-02 10:30:12
    任意锁定单元格,文档有详细的操作步骤第1步:全选工作表,格式——单元格——保护——把“锁定...第2步:选中需要保护部分,格式——单元格——保护——选为锁定。 第3步: 工具——保护——保护工作表 ,可以设密码
  • vba 清除单元格 清除单元格并留下公式 (Clear Cells and Leave Formulas) On most of the worksheets that I build, there is a mixture of labels, data entry cells, and cells with formulas. Here's how to ...

    vb清除单元格

    On most of the worksheets that I build, there is a mixture of labels, data entry cells, and cells with formulas. Here's how to clear cells and leave formulas, if you want to start a new entry.

    在我构建的大多数工作表上,都有标签,数据输入单元和带有公式的单元的混合体。 如果要开始新的条目,请按以下步骤清除单元格并保留公式。

    订单表格 (Order Form Worksheet)

    For example, here is the worksheet from my Excel order form tutorial. The shaded cells are where you enter data, and the white cells have formulas or labels.

    例如,这是我的Excel订单表单教程中的工作表。 阴影单元格是您输入数据的地方,白色单元格具有公式或标签。

    clearconstants01

    清除数据 (Clear Out the Data)

    When it’s time to fill in a new order, what do you do? Ideally, you would have a blank template for this form, and open a new copy, each time that you wanted to create an order.

    当需要填写新订单时,您会怎么做? 理想情况下,每次要创建订单时,您都将有一个用于此表单的空白模板,并打开一个新副本。

    In real life, that doesn’t always happen, from what I’ve seen. People don’t have templates, or can’t find them, or don’t know how to use them. So, they just make a copy of an old order, and clear out the data, to make a new order.

    从我所见,在现实生活中,这并不总是发生。 人们没有模板,或者找不到模板,或者不知道如何使用它们。 因此,他们只是复制一个旧订单,并清除数据以创建一个新订单。

    If you want to clear out the old data, without deleting the formulas, how would you do it?

    如果要清除旧数据而不删除公式,您将如何处理?

    选择没有公式的单元格 (Select the Cells Without Formulas)

    On this sheet, the formula cells are locked, and the sheet is protected. If you select the entire pricing section, and press Delete, Excel shows you a warning message, and doesn’t clear the cells.

    在此工作表上,公式单元格被锁定,并且工作表受到保护。 如果选择整个定价部分,然后按Delete键,则Excel将显示警告消息,并且不会清除单元格。

    Some of the selected cells are locked, so it can’t clear any of the cells.

    某些选定的单元格已锁定,因此无法清除任何单元格。

    clearconstants02

    To select only the data entry cells, you can use the built-in Constants selector.

    要仅选择数据输入单元,可以使用内置的“常数”选择器。

    • Select all the cells in the pricing section

      选择定价部分中的所有单元格
    • On the Home tab of the Ribbon, click Find & Select (at the far right)

      在功能区的“主页”选项卡上,单击“查找并选择”(在最右侧)
    • Click Constants, to select just the cells without formulas

      单击常量,仅选择没有公式的单元格
    clearconstants03
    • Then, press the Delete key, to clear those cells.

      然后,按Delete键,以清除那些单元格。

    命名数据输入范围 (Name the Data Entry Ranges)

    Another option is to create a named range that contains all the data entry cells. Later, you can select that range and clear it.

    另一个选择是创建一个包含所有数据输入单元格的命名范围。 以后,您可以选择该范围并清除它。

    To name the range:

    命名范围:

    • Unprotect the worksheet

      取消保护工作表
    • Select the data entry cells

      选择数据输入单元格
    • Click in the Name Box (at the left of the formula bar)

      单击名称框(在编辑栏的左侧)
    • Type a one-word name for the range, e.g. DataEntryCells

      输入范围的一字名称,例如DataEntryCells
    • Press Enter, to complete the name

      按Enter键完成名称
    • Protect the worksheet

      保护工作表
    clearconstants04

    To clear the named range:

    要清除命名范围:

    • In the Name Box, click the drop down arrow

      在名称框中,单击下拉箭头
    • Select the range name – DataEntryCells – to select the cells

      选择范围名称– DataEntryCells –选择单元格
    • On the keyboard, press the Delete key, to clear the cells

      在键盘上,按Delete键,以清除单元格
    clearconstants05

    记录清理宏 (Record a Cleanup Macro)

    If you’re building a data entry sheet for someone else, you can add a “Clear” or “Reset” button to the worksheet. That might deter people from wandering around the worksheet, trying to clear things on their own!

    如果要为其他人构建数据输入表,则可以在工作表中添加“清除”或“重置”按钮。 这可能会阻止人们在工作表上四处徘徊,试图自己清除问题!

    To create the macro:

    创建宏:

    • Unprotect the worksheet, if it’s protected.

      取消保护工作表(如果已保护)。
    • Turn on the macro recorder, and name the macro

      打开宏记录器,并命名宏
    • Select the named range, and press the Delete key, to clear the cells.

      选择命名范围,然后按Delete键以清除单元格。
    • Select the first cell in the data entry range, so you’re ready to enter new data

      选择数据输入范围中的第一个单元格,这样就可以输入新数据了
    • Turn off the macro recorder

      关闭宏录制器

    To create the button:

    要创建按钮:

    • Add a rounded rectangle to the worksheet, with the caption “Clear”

      在工作表上添加一个圆角矩形,标题为“清除”
    • Right-click on the rectangle, and click Assign Macro

      用鼠标右键单击矩形,然后单击分配宏
    • Select the macro that you recorded, and click OK

      选择您录制的宏,然后单击“确定”。
    • Click on the worksheet, to unselect the button

      单击工作表,以取消选择按钮
    • Protect the worksheet again, if you removed the protection

      如果删除了保护,请再次保护工作表
    clearconstants07

    Save the File

    保存文件

    If you store a macro in your workbook, you’ll have to save it in Macro-enabled (xlsm) or binary (xlsb) format.

    如果将宏存储在工作簿中,则必须将其保存为启用宏(xlsm)或二进制(xlsb)格式。

    clearconstants06

    翻译自: https://contexturesblog.com/archives/2014/03/20/clear-cells-and-leave-formulas/

    vb清除单元格

    展开全文
  • 锁定单元格不被任意修改和删除 有时候我们希望对Excel表格的数据编辑做一些限制:比如只允许部分单元格的内容可以修改,其余的单元格数据则不允许修改(包括字号、字体等),我们可以这样操作。锁定一个单元格不被任意...
  • Excel VBA 宏 学习使用: 一、工作表单元格的锁定:  1、选择需要锁定的单元格。  2、鼠标右键----设置单元格格式。  3、设置 “保护”--锁定 -- 确定。  4、回到表头,【审阅】----保护工作薄。哦了。顺带...
  • VBA传递参数步骤

    2020-12-22 06:54:40
    到目前为止,你已经创建了简单的可以执行具体任务的VBA过程,这些过程在它们运行前没有要求你提供额外的数据。然而,在现实生活中,过程(子程序和函数)经常需要参数。参数(自变量)是过程工作时需要的一个或多个数值...
  •  但是当A1是一个合并单元格时,该语句会报错,错误说明为:无法对合并单元格进行部分修改,查找了不少资料,也没有找到相关说明和解决的方法。 后来通过录制宏,查看VBA中相关操作的过程,受到启发,测试想法,...
  • Vba菜鸟教程

    万次阅读 多人点赞 2020-05-02 18:21:15
    文章目录Vba菜鸟教程编辑器宏vba基本语法运算符变量语句简写语句sub语句调用语句退出语句分支语句循环语句判断语句公式与函数在单元格输入公式利用单元格公式返回值调用工作表函数利用vba函数自定义函数操作对象操作...
  • Excel中的单元格引用

    千次阅读 2018-08-17 09:56:22
    Excel中的工作表(Worksheet)是由一系列行和列组成的二维表,当我们在使用Excel创建应用程序(例如编写VBA代码),或者创建一个复杂的Excel应用(例如公式、数据透视表、统计图
  • 利用VBA开发数据汇总工具通常在日常工作中总会用到Excel并且经常会遇到Excel将多个表格进行汇总。经过工作中的实践,发现用VBA开发具有一定重复性的功能,能够极大提高工作效率。最近,将本人曾开发的的Excel数据...
  • VBA dialogs 调用对话框

    2021-11-03 12:05:43
    对话框 xlDialogStyle 44 【样式】对话框 xlDialogBorder 45 【边框】对话框 xlDialogCellProtection 46 【单元格保护】对话框 xlDialogColumnWidth 47 【列宽】对话框 xlDialogClear 52 【清除】对话框 ...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    部分目录: VBA常用技巧 目录 VBA常用技巧 1 第1章 Range(单元格)对象 10 技巧1 单元格的引用方法 10 1-1 使用Range属性 10 1-2 使用Cells属性 11 1-3 使用快捷记号 11 1-4 使用Offset属性 12 1-5 使用Resize属性...
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
    第Ⅲ部分 理解VBA  第7章 VBA概述  7.1 BASIC的一些基本背景  7.2 关于VBA  7.2.1 对象模型  7.2.2 VBA与XLM的对比  7.3 VBA的基础知识  7.4 Visual Basic编辑器概述  7.4.1 显示Excel的“开发工具”选项卡 ...
  • 如何撤销excel的保护

    2021-05-10 16:16:07
    有密码的情况下,很容易撤销对...方法1 vba代码撤销excel的保护 1先右键单击,点击 查看代码 2 在窗口中粘贴vba代码,以下代码亲测可用,版本为excel2016版 Sub 密码破解() ActiveSheet.Protect DrawingObjects:=True,
  • # Excel VBA编程常用语句300句 * 本文转自:**http://blog.sina.com.cn/codelee** 博主:**代码农夫** 感谢大佬总结并分享出来~ ************** # * VBA 语句集 * * (第 1 辑) * ************** ***************...
  • ——《Excel 2013 Power Programming with VBA部分章节译文 Excel工具应当让用户可以更加方便高效的完成任务。但是,如果你正在为其他用户开发一些实用工具,那么是什么使得Excel工具具有实用价值?下面列出的是我...
  • 来吧!带你玩转 Excel VBA

    千次阅读 2013-08-15 10:03:06
    带你玩转 Excel VBA(含CD光盘1张)(双色)(附带近500个VBA思考练习题,Exceltip.net出品) 罗刚君  杨嘉恺 编著 ISBN 978-7-121-20627-6 2013年7月出版 定价:85.00元 648页 16开 编辑推荐...
  • VBA实战入门教程第5篇,我们将从九九乘法表开始和结束今天的教程。之中,我们会认识VBE,也就是VBA代码的编辑器。VBE的基本概念、打开方式,以及它的布局和主要功能,它们很简单,但我们需要掌握。你可以认为这篇...
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
    第Ⅲ部分 理解VBA  第7章 VBA概述  7.1 BASIC的一些基本背景  7.2 关于VBA  7.2.1 对象模型  7.2.2 VBA与XLM的对比  7.3 VBA的基础知识  7.4 Visual Basic编辑器概述  7.4.1 显示Excel的“开发工具”选项卡 ...
  • 该如何用VBA完成? 销售经理 区域 销售数量 张万斌 崇州区 960 张万斌 大丰区 960 张万斌 新繁区 160 马秉局 天河区 160 王建华 崇州区 960 王建华 彭州区 ...
  • VBA编程常用语句(转载) 1、Option Explicit '强制对模块内所有变量进行声明 Option Private Module '标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text '字符串不区分大小写 ...
  • Excel VBA实用技巧大全 附书源码

    热门讨论 2010-10-08 18:59:24
    04106判断某单元格是否为合并单元格区域的一部分 04107获取单元格区域内的值,并使其矩阵化 04108获取单元格内的前缀字符 04109判断单元格内的数字是否为文本字符 04110获取单元格的格式 04111获取单元格的字体...
  • excel公式单元格注释We’ve shown you how to hide cells, rows, and columns and how to hide worksheets/tabs and entire workbooks in Excel. Additionally, you can hide items such as comments, formulas, ...
  • Excel VBA 操作 Word(入门篇) 本文的对象是:有一定Excel VBA基础,对Word VBA还没有什么认识,想在Excel中通过VBA操作Word还有困难的人。   一、新建Word引用 需要首先创建一个对 Word Application ...
  • 这里我推荐官网的VBA教程,在上个关于Xlwings的教程中有相应的体现。说到这也就开始了我们这次推文的主题,在Xlwings中使用VBA的宏来进行Excel的操作。 一、知识准备 在Xlwings的官方文档中,我寻找到了一个关于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,000
精华内容 400
关键字:

vba保护部分单元格