插入细胞的SHAPE妨碍细胞select
我有一个在单元格中插入一个形状的代码。
假设我在单元格A1中插入形状,并希望在单元格“5”中写入。
在插入形状之后,由于形状与其重叠,因此不能select鼠标hover的单元格。 我只能select形状。 或者,如果我不能select形状,我不能select形状和细胞。
为了在A1中写入“5”,我必须select例如单元格B1和键盘箭头< – 移动到单元格A1。 然后它工作。
是否有可能插入的形状不仅是不可选的,而且完全忽略了鼠标hover? 这意味着形状应该是某种“细胞之后”,但仍然可见。 因此,当您select具有形状的单元格时,单元格select优先级为100%。
Set Shp = ActWS.Shapes.AddShape(msoShapeOval, _ ActWS.Cells(rActPlan - 1, vReturnColumn).Left, _ ActWS.Cells(rActPlan - 1, vReturnColumn).Top, _ ActWS.Cells(rActPlan - 1, vReturnColumn).Width, _ ActWS.Cells(rActPlan - 1, vReturnColumn).Height) Shp.Fill.Visible = msoFalse With Shp.Line .Visible = msoTrue .ForeColor.RGB = RGB(0, 255, 0) .Transparency = 0 .Weight = 2.25 End With
如果您只需要select特定的单元格,则可以像下面那样将单元格定义为可编辑的。 之后,您保护工作表,并只允许selectlocking和/或解锁的单元格。 请让我知道,如果你需要一个程序化的解决scheme,以及。
据我所知,你不能创build一个单元格“背后”的形状。 但是,您可以做的是每次select形状时触发一个事件。 可以设置该事件来select形状后面的单元格。 这个答案的一个实现可以find。 ( 在这里额外的知识)。
将下面的代码添加到您的代码中:
Sub SelectCell(Sht As String, Address As String) ThisWorkbook.Sheets(Sht).Range(Address).Select End Sub
此过程将简单地在指定的工作表上select指定的单元格。 我们可以使用.OnAction
设置一个形状来运行这个macros。 我们只需告诉形状运行SelectCell
macros与我们所需的参数(工作表名称和单元格地址)。 要将指定单元格的parameter passing给形状,请添加以下代码:( 我假设ActWS
是您的活动工作表)
Shp.OnAction = "'SelectCell" & Chr(34) & ActWS.Name _ & Chr(34) & ", " & Chr(34) _ & ActWS.Cells(rActPlan - 1, vReturnColumn).Address _ & Chr(34) & "'"
现在,每次点击圆圈,圆圈都会点击圆圈后面的单元格,从而可以绕过圆圈select。
关于这种方法的一件好事(在我看来)是右键单击的圆形不会触发macros,所以编辑形状仍然相对容易。 关于这种方法的一个不太好的事情是单元格select不会随着形状位置(即创build形状来selectA1
,将形状移动到B1
,单击形状,形状将selectA1
)。 因此,每次对工作表进行结构更改时,都必须重新创build这些形状。