【问题标题】:How to Lock cell at selected Last Row?如何在选定的最后一行锁定单元格?
【发布时间】:2016-11-28 14:26:35
【问题描述】:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim lastRow As Long

lastRow = ActiveSheet.Cells(Rows.Count, "E").End(xlUp).Row

ActiveSheet.Unprotect
lastRow.Locked = True
ActiveSheet.Protect

End Sub

*我已经运行了这段代码。但仍然没有锁定最后一行。 *当添加“MsgBox lastrow”时,它的工作并显示正确的选定行。 *谢谢你

打开此以获得更多信息----> Excel View With Msg Box

【问题讨论】:

  • 如果您想解锁 E 列中的最后一个单元格,请将您的行 lastRow.Locked = True 更改为 Cells(lastRow, "E").Locked = True
  • 如果要锁定整个最后一行,使用Cells(lastRow, "E").EntireRow.Locked = True
  • 仍有调试“Cells(lastRow, "E")Locked = True" imgur.com/89tyuR3
  • 我现在才查看您的工作表结构,您正在为列 E:K 使用合并单元格,您合并它们有​​什么原因吗?
  • 在下面的答案中尝试我的代码,看看它是否适合你

标签: excel vba


【解决方案1】:

如果您在 E 列中的单元格是合并单元格的一部分(在您的情况下,列 E:K 已合并),则将带有变量 MergedCell 的新 Range 设置为合并区域,然后 @ 987654323@整个范围的合并单元格。

代码

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim lastRow As Long, cell As Range, MergedCell As Range

' find last row in Column E
lastRow = ActiveSheet.Cells(Rows.Count, "E").End(xlUp).Row

ActiveSheet.Unprotect

Set cell = Range("E" & lastRow)

' if cell in Column E is part of merged cells
If cell.MergeCells = True Then
    Set MergedCell = cell.MergeArea
    MergedCell.Locked = True
Else
    cell.Locked = True
End If

ActiveSheet.Protect

End Sub

【讨论】:

  • @Falhuddin 不客气,请标记为答案(按小V
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多