单击Excel按钮后无法编辑单元格值

时间:2017-06-05 13:52:11

标签: excel-vba excel-2016 vba excel

我有一个宏从命名范围中删除一行。
按下按钮运行该宏后,我再也无法编辑单元格了 不在该范围内,也不在我受保护的工作表中的任何可编辑单元格中 似乎具有相同代码的工作簿在Excel 2010中也不起作用。
这是我的宏:

Sub DeleteParameterRow(ByVal tCell As Range)

    '''this procedure delete a row from one of the parameters lists
    On Error GoTo ErrHandler

    Application.EnableEvents = False
    Application.DisplayAlerts = False

    Dim iRowToDelete As Integer

    Call Unprotect_All()

    If IsPartOfRange(tCell, NamedRange("Param_ParametersList"), False) Then

        tCell.Delete Shift:=xlUp

    Else

        MsgBox("Please select one of the parameters list", vbInformation, "Error")

    End If

EndProc:
    Call Protect_All()
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Exit Sub

ErrHandler:
    MsgBox(Err.Description, vbCritical, Err.Number)
    GoTo EndProc

End Sub


Function IsPartOfRange(ByVal rSearchRange As Range, ByVal rSearchInRange As Range, ByVal bIsEntireRange As Boolean) As Boolean
    '''this function gets a small range, a big range and if it is supposed to be the entire range, and check
    '''if the smaller range is part of the bigger one, and if it is  the entire range
    IsPartOfRange = False

    If Not Intersect(rSearchRange, rSearchInRange) Is Nothing Then

        If bIsEntireRange = True Then

            If rSearchRange.Address = rSearchInRange.MergeArea.Address Then IsPartOfRange = True

        Else

            IsPartOfRange = True

        End If

    End If

End Function

2 个答案:

答案 0 :(得分:0)

看到我最后的评论,我提到它似乎是一种“刷新”问题  代码运行后,Excel中会堆积一些可防止编辑的内容。 (No way to report bugs to MS... :(
为了以编程方式强制“刷新”,我发现清除任意单元格的内容是有用的。
因此,添加行tCell.ClearContents befor EndProc:可以完成游戏。

答案 1 :(得分:0)

这个问题困扰了我一段时间,没有明确的答案。您可以选择另一个工作表,然后返回工作表并再次编辑作品,或者使用单元格ClearContents的技巧。

我认为答案,至少就我而言,是在工作表上有一个ActiveX命令按钮(以及其他控件),这些按钮在单击时默认为焦点。在按钮属性中将此功能设置为False可以轻松解决编辑问题,尽管对于组合框,这会导致相同的问题,但是没有“对焦”属性!

该问题与与按钮相关联的宏无关,只要单击没有宏的按钮即可执行,因为以特定的方式聚焦会导致阻止编辑。