如何防止Word VBA创建的页面颜色条被选中及移动?
如何禁止Word VBA创建的颜色条形状被点击移动?
要禁止用户点击并移动你创建的颜色条形状,只需在形状的格式设置代码中添加几个锁定属性即可。以下是修改后的完整代码:
Sub CreateColorBand() Dim pageWidth As Single Dim pageHeight As Single Dim bandWidthInches As Single Dim bandWidth As Single Dim bandColor As Long Dim bandShape As Shape Dim GroupShape As Shape ' 设置参数 pageWidth = ActiveDocument.PageSetup.pageWidth pageHeight = ActiveDocument.PageSetup.pageHeight bandWidthInches = 1.607 bandWidth = InchesToPoints(bandWidthInches) Select Case Color Case "Indigo" bandColor = RGB(51, 51, 153) Case "Ecru" bandColor = RGB(194, 178, 128) Case "Gray" bandColor = RGB(166, 166, 166) Case "Green" bandColor = RGB(83, 127, 53) End Select ' 添加颜色条形状 Set bandShape = ActiveDocument.Shapes.AddShape(msoShapeRectangle, pageWidth - bandWidth, 0, bandWidth, pageHeight) ' 格式化颜色条形状 With bandShape .Fill.Solid .Fill.ForeColor.RGB = bandColor .Line.Visible = msoFalse ' 隐藏边框 .ZOrder msoSendToBack ' 将形状置于文字和表格下方 .WrapFormat.Type = wdWrapBehind .LockAnchor = True ' 添加以下属性禁止选中和移动 .LockSelection = msoTrue ' 禁止用户选中形状 .LockPosition = msoTrue ' 锁定形状位置,防止被移动 .Selectable = msoFalse ' 标记形状为不可选中(可选,增强效果) End With End Sub
关键属性说明:
LockSelection = msoTrue:直接禁止用户通过点击选中形状,从根本上避免被移动的可能LockPosition = msoTrue:即使通过其他方式(如导航窗格)选中了形状,也无法改变其位置Selectable = msoFalse:额外标记形状为不可选中,进一步强化禁止操作的效果
内容的提问来源于stack exchange,提问作者Ramachandran Narasimhan
相关产品推荐
相关产品推荐

