2012-07-25 98 views
0

如果我们使用功能区UI保护工作表,并且如果每个单元格都被锁定或未启用选择,矩形光标会消失。我可以隐藏/显示选定单元格周围的黑色边框吗?

但由于我有一些细胞与用户交互,我不会锁定每个细胞。现在矩形只出现在未锁定的单元上。

而且因为我必须使这些锁定的单元格的VBA选择,加入以下代码:

Worksheets("sheet1").Protect Password:="******", _ 
    UserInterfaceOnly:=True 

而现在因为VBA可以选择每一个细胞,无论是锁定或解锁,该矩形光标似乎无处不在。

现在我想让这个矩形本身被隐藏;可能吗?

+0

也许有点太快。请多说一点你想做的事情。 – 2012-07-25 02:13:40

+0

@ user1543250:如果要隐藏矩形光标,那么用户将如何知道哪个是活动单元格? – 2012-07-25 08:38:42

+0

@SiddharthRout在我的回答下面看到我的评论和OP的回复。 – 2012-07-25 13:24:16

回答

0

您可以通过调用Application.Cursor来覆盖光标(鼠标指针)的外观。 Here is a reference.

由于我不确定这是什么意思你的问题,你也可以找到this reference有用。

0

添加这段代码:

Worksheets("sheet1").EnableSelection = xlNoSelection 
+0

你的问题说:“如果我们使用功能区UI保护表单,并且没有单元格解锁,那么矩形光标将消失。”现在你说你不会锁定每个细胞。这是真的吗?无论如何,这是我能想出的唯一途径。 – 2012-07-25 04:45:23

+0

我不认为你可以做到这一点。此外,将光标从用户隐藏起来似乎是个不错的主意。它会让他们很难看到他们在做什么。祝你好运! – 2012-07-25 05:19:42

+0

您是否在整个代码中使用select和active语句? – 2012-07-25 11:12:04

0

我不能让它完全消失,但我可以隐藏得很好。 我从您高亮显示当前单元格批注注意,所以添加到高亮显示此代码应帮助隐藏光标:

' Code generated by record macro, and not tidied up 
Selection.Borders(xlDiagonalDown).LineStyle = xlNone 
Selection.Borders(xlDiagonalUp).LineStyle = xlNone 
With Selection.Borders(xlEdgeLeft) 
    .LineStyle = xlContinuous 
    .ColorIndex = xlAutomatic 
    .TintAndShade = 0 
    .Weight = xlThick 
End With 
With Selection.Borders(xlEdgeTop) 
    .LineStyle = xlContinuous 
    .ColorIndex = xlAutomatic 
    .TintAndShade = 0 
    .Weight = xlThick 
End With 
With Selection.Borders(xlEdgeBottom) 
    .LineStyle = xlContinuous 
    .ColorIndex = xlAutomatic 
    .TintAndShade = 0 
    .Weight = xlThick 
End With 
With Selection.Borders(xlEdgeRight) 
    .LineStyle = xlContinuous 
    .ColorIndex = xlAutomatic 
    .TintAndShade = 0 
    .Weight = xlThick 
End With 
Selection.Borders(xlInsideVertical).LineStyle = xlNone 
Selection.Borders(xlInsideHorizontal).LineStyle = xlNone 

这将打开边框的黑色,这将是白色的(非常薄黑色轮廓)时,单元格被选中。

另一种方法是将所有单元格更改为灰色粗轮廓,以便在选中该框时具有相同的颜色轮廓。编程,在改变为代码将除去colorindex线,并在其位置添加

.ThemeColor = 1 

,并改变TintAndShade线这样:

.TintAndShade = -0.5 

无论使用何种方法的,你仍然会在当前单元格中留下一条细细的黑线。

-1

1)隐藏列

2)移动到A1

0

我不知道是谁写了这个,所以我能给予信贷,但它似乎工作。

Private Declare Function ShowCursor Lib "USER32" _ 
(ByVal fShow As Integer) As Integer 

Sub hide() 
    While ShowCursor(False) >= 0 
    Wend 
End Sub 

Sub show() 
    While ShowCursor(True) < 0 
    Wend 
End Sub 
+0

这显示并隐藏鼠标,不知道它是一个好主意。而是强制application.cursor = xlarrow?不知道我是否写得对。现在不能测试 – 2017-06-13 00:55:46

0

没有办法真正隐藏矩形。

+1

这不是一个添加到vba的功能,真的不需要添加太多东西。当然,你可以尝试通过替换它来解决它,但要回答这个问题,不,不可能在excel-vba中显示/隐藏黑色选择框 – 2017-06-23 12:04:22