VBA如何根据某单元格内容锁定某区域

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VBA如何根据某单元格内容锁定某区域相关的知识,希望对你有一定的参考价值。

在每行(假设a1:g1、a2:g2、a3:g3、......)的h1、h2、h3、......输入内容为“保存”后,对应的a1:g1、a2:g2、a3:g3、......就锁定不能修改,请教VBA如何实现?多谢。

今天有空帮你写个简单的代码,基本能满足你的要求,但要达到适用阶段,代码还得完善

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If Not Intersect(Target, Range("H:H")) Is Nothing Then
   If Target = "保存" Then
      ActiveSheet.Unprotect "123"
      Target.Offset(, -7).Resize(, 7).Locked = True
      ActiveSheet.Protect "123"
      ActiveSheet.EnableSelection = xlUnlockedCells
   End If
End If
End Sub

注意代码不是放在标准模块里

来自:求助得到的回答
参考技术A Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
With Target
If Sheet1.Cells(.Row, 8) = "保存" And .Column < 9 Then
Sheet1.Cells(Sheet1.[H65536].End(xlUp).Row + 1, 8).Select
End If
End With
End Sub

以上在表1中的操作代码。

追问

感谢wwj805解答。现实中有多张表(sheet1、sheet2、sheet3、......)多人录入,麻烦再设置一下工作簿里的全部工作表,只要Z15、Z16、Z17、......、Z1014这些单元格的值为"已核对",则对应行的M15:Y15、M16:Y16、M17:Y17、......、M1014:Y1014就锁定不能修改(请看附图),劳烦再设置一下,多谢。

追答Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
On Error Resume Next
With Target
If ActiveSheet.Cells(.Row, 26) = "已核对" And .Column >= 13 And .Column <= 26 Or .Count > 1 Then
ActiveSheet.Cells(ActiveSheet.[Z65536].End(xlUp).Row + 1, 26).Select
End If
End With
End Sub

将代码放到ThisWorkBook中。代码中已另外增加.Count > 1,以免他人块操作误删除已录入的内容,当然删除了就是空白项,而后不能再补录入。如果觉得.Count > 1这代码不需要,可以删除。

本回答被提问者和网友采纳
参考技术B 工作表保护,所有区域取消保护
确认保存后,指定单元格区域设置为保护
参考技术C 数据验证就可以为啥非要整个vba

按键精灵中,怎么得到excel某单元格内容?

按键精灵中,怎么样把某单元格的内容 到 剪贴板?
也就是怎么样复制某一单元格?
你好,ZYLHLB.那怎么样才可以让读出来的内容写入剪切板呢?

1.首先来建立一个新的Excel文档,在桌面上点击右键,选择【新建】-【Excel工作表】,命名为【新手学员】。

2.现在这个新Excel文档是空白的,我们接下来会通过按键精灵的脚本来打开并写入一些数据。

3.打开按键精灵软件,点击【新建】,进入我的脚本界面,再点击进入【全部命令】。

4.在【全部命令】中选择【插件命令】-【office办公文档插件】-【打开Excel文档】。

5.在命令的下面可以看到命令的详细设置,点击【路径】。

6.在弹出窗口中选择【新手学员】的Excel文档,点击打开。

7.可以在命令参数中看到引用的文档,点击插入就可以插入对应的命令脚本。

8.继续在文档中写入新的数据,选择命令【writeXls 写入Excel文档单元格】,选择对应的单元格的行和列,输入要写入单元格的内容【"序号"】,点击插入。

9.在脚本界面可以看到新插入的代码。

10.根据类似的格式,可以添加其它代码,一共写入3行4列的单元格内容。

11.最后选择【closeXls 关闭文档】,点击插入对应的代码。

12.修改脚本属性的描述和保存的脚本文件名。保存脚本后按【F10】进行脚本调试。

13.脚本执行完成后,再次打开这个Excel文档,可以看到刚才设置的数据已经成功写入了。

参考技术A //下面这句是向Excel文档工作表(1)单元格(1, 1)读出内容存入(Text)变量
Plugin Text = Office.ReadXls(1, 1, 1, "C:\测试.xls")

//下面这句是获得剪切板内容
Plugin Clipboard = Sys.GetCLB()

//下面这句是输出剪切板内容
SayString Clipboard本回答被提问者采纳
参考技术B 占个座,学习一下

以上是关于VBA如何根据某单元格内容锁定某区域的主要内容,如果未能解决你的问题,请参考以下文章

vba中如何将单元格内容强制转换为文本类型?

vba中怎么用代码将单元格内容转换为文本类型?

excelvba锁定单元格图片不被删除

VBA将单元格内容分配为公式而不是其结果

Excel中如何锁定部分单元格内容不被修改?

在excel中,修改单元格数据的方法有几种?