防止在Excel

时间:2017-07-19 13:24:07

标签: excel vba excel-vba

我有一个任务关键型工作簿,它基于单元格中的用户输入输入执行大量查找。如果用户输入看似拼写错误的内容,则用户输入会错误地更正。例如,当用户键入" cna"自动更正将其更改为" can",这通常是一件好事,但在这种情况下是一件坏事。我们想查找" cna"。简单的解决方案是关闭自动更正,但我们希望/喜欢自动更正,而不是在这一个用户输入单元格中。

如何为应用程序/工作簿保持自动更正,但是阻止对相关用户输入单元格(一个单元格)进行自动更正?

我研究了一下,无法找到一种方法来关闭一个细胞的自动校正。这似乎是一个全球性的背景。

我查看并且没有找到自动更正之前发生的事件,因此我可以捕获" cna",让自动更正更正值to" can",关闭事件,然后将其更改回" cna"。例如,该值已经是" can"触发此事件时:

Private Sub Worksheet_Change(ByVal Target As Range)
   debug.print target.value '<- returns "can" already
End Sub

我不想添加&#34; cna&#34;到可接受的自动更正单词列表,因为我想&#34; cna&#34;被纠正为&#34; can&#34;在所有单元格中,但用户输入了相关单元格。

2 个答案:

答案 0 :(得分:1)

您可以执行其他错误检查,您可能更喜欢以下功能:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    Application.AutoCorrect.ReplaceText = IIf(Target = Me.Range("input_cell"), False, True)
End Sub

答案 1 :(得分:0)

使用Flephal的评论,我就是这样解决的:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = ThisWorkbook.Sheets("input sheet").Range("input_cell").Address Then
         Application.AutoCorrect.ReplaceText = False
    Else
        Application.AutoCorrect.ReplaceText = True
    End If
End Sub