插入细胞的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。 我们只需告诉形状运行SelectCellmacros与我们所需的参数(工作表名称和单元格地址)。 要将指定单元格的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这些形状。