我正在创建一个应该对多个用户打开的Excel工作表。重要的是,没有人可以写已经写过的东西。人员完成编辑后,是否自动锁定行?为了使其更加有趣,在锁定该行之前,应允许它在B,D,F,G和H列中进行更改。
例如:如果单元格A5中有一个值;则应锁定A5至H5,但如果单元格A5中没有值,则将其打开。此“规则”必须适用于从A5到A'XXX'的所有行。
我以前从未使用过Visual Basic,如果有人可以帮助我,我将永远感激不已!
答案 0 :(得分:0)
这是涉及事件Worksheet_SelectionChange
(用于跟踪先前的值)和Worksheet_Change
(用于将其与更改后的值进行比较)的解决方案。我已经尝试过容纳多单元格选择,但是对于较大的选择来说似乎并不是特别好玩。
将其输入到工作表的宏代码中-它不适用于工作簿级别或模块。
Dim previousValue As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
previousValue = Target.Value
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
If Target.Cells.Count > 1 Then
Dim i As Long, j As Long
For i = 1 To Target.Rows.Count
For j = 1 To Target.Columns.Count
Target(i, j) = previousValue(i, j)
Next j
Next i
GoTo Cleanup
Exit Sub
End If
If previousValue <> "" Then
Target.Value = previousValue
End If
Cleanup:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
但是,请考虑一下用户在输入数据时会犯错误,并且可能不希望被阻止纠正这些错误。