在Excel中,VBA - 我们如何锁定一个矩形的大小调整

问题描述:

我有一个Excel工作表,其中包含两个矩形和其他单元格中的文本。 我需要允许用户只编辑矩形中的文本。他们不应该能够改变对象的大小。 在矩形上应用锁可锁定对象以及文本。 有谁知道我可以做到这一点?在Excel中,VBA - 我们如何锁定一个矩形的大小调整

为什么不创建两个对象,一个是锁定的矩形,另一个是未锁定的文本框?这非常简单,但是可能的答案。

另一个想法是让矩形等于一个单元格,并让他们在单元格中输入文本,即使在矩形锁定时它也会传输。

据我所知,Excel不包含形状事件,因此没有简单的方法检测形状大小的变化,然后调整形状。

可以通过使用替代方法模拟您要求的内容。

想象一下,您的电子表格中有两个矩形叫做“矩形1”和“矩形2”。当用户完成更新任何给定框中的文本时,他们必须单击电子表格以移出形状的“编辑”模式。您可以使用Workbook_SheetSelectionChange事件检测到此情况。

以下模块允许您设置矩形为常量的大小,并调整相应的矩形:

Const Rect1Height As Integer = 50 
Const Rect1Width As Integer = 200 

Const Rect2Height As Integer = 50 
Const Rect2Width As Integer = 200 

Sub SetRectangleSize() 

Dim Rect1 As Shape 
Dim Rect2 As Shape 

Set Rect1 = ActiveSheet.Shapes("Rectangle 1") 
Set Rect2 = ActiveSheet.Shapes("Rectangle 2") 

Rect1.Height = Rect1Height 
Rect1.Width = Rect1Width 
Rect2.Height = Rect1Height 
Rect2.Width = Rect1Width 

End Sub 

现在,所有你需要做的就是从一个工作簿级事件调用此子:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
SetRectangleSize 
End Sub 

每次用户更新他们会点击后面的电子表格和事件上矩形的一个文本被触发,导致矩形根据恒定的高度,并且您已经定义宽度等参数的尺寸设计。