1
我有一个电子表格,它包含18列。 我想要做的是当做数据输入时,选项卡将移动到记录结尾,即18col
。然后它进入下一行第一列。如果用户想要在记录的中间去,就不允许。如何在Excel电子表格中创建制表顺序
如果可以通过VBA来完成,请帮助我。
感谢
我有一个电子表格,它包含18列。 我想要做的是当做数据输入时,选项卡将移动到记录结尾,即18col
。然后它进入下一行第一列。如果用户想要在记录的中间去,就不允许。如何在Excel电子表格中创建制表顺序
如果可以通过VBA来完成,请帮助我。
感谢
如果只需要保持用户从选择所需的范围之外(18列),你甚至不需要VBA。使用表格保护并且不允许用户选择锁定的单元格。以下是表单保护工作原理的快速回顾:http://www.dummies.com/how-to/content/how-to-protect-cell-data-in-excel-2010.html
如果您还需要强制按顺序填充单元格,则需要添加此VBA代码。如果“上一个”单元格填充,它使用事件过程来解锁“下一个”单元格;如果不是,当前单元格移回以前的细胞,使用户可以填写好。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngPrev As Range
Dim rngNext As Range
Const LAST_COL As Long = 18
Select Case Target.Column
Case Is = 1
If Target.Row > 1 Then
Set rngPrev = Target.Offset(-1, LAST_COL - 1)
Else
Set rngPrev = Target
End If
Set rngNext = Target.Offset(0, 1)
Case 2 To LAST_COL - 1
Set rngPrev = Target.Offset(0, -1)
Set rngNext = Target.Offset(0, 1)
Case 18
Set rngPrev = Target.Offset(0, -1)
Set rngNext = Target.Offset(1, 1 - LAST_COL)
End Select
If Not IsEmpty(rngPrev.Value) > 0 Then
Me.Unprotect
rngNext.Locked = False
' note: this line is for testing purposes to show which cells get unlocked
rngNext.Interior.ColorIndex = 6
Me.Protect
Else
rngPrev.Activate
End If
End Sub
感谢凯文,你考虑,并尽快答复。它工作正常。但在第一列开始时就会出错。我将它修改为之前的值isempty。因为有些细胞没有价值。对不起,我不熟悉它。感谢您的帮助 – user1049518
我修改了代码以处理“上一个”单元格中的错误值。同样,只有当您要强制所有单元格按顺序填充时,代码才是必需的。否则,您只需要第一个建议(锁定工作表并且不允许选择锁定的单元格)。 –
非常感谢Rachel,坚持我的问题。 – user1049518