Я часто использую Excel для учета. Часто бывает, что я вычисляю несколько значений в одной ячейке. Так что моя камера может выглядеть как =12+345+23+88 .

Теперь стандартным поведением Excel является удаление текущего содержимого ячейки при нажатии клавиши. А если вы хотите добавить какой-либо текст, то вам нужно дважды щелкнуть или F2.

Можно ли настроить Excel для добавления при нажатии клавиш? Например, в моем примере выше я нажимал клавишу + и Excel открывал ячейку для редактирования, добавляя символ + в конец.

1 ответ1

0

У меня была такая же проблема, как и у вас, и я нашел решение, которое вы тоже можете использовать. Следующее изменено, чтобы соответствовать вашей конкретной проблеме.

Поместите это в код листа:

Private Sub Worksheet_Activate()

    Dim sht As Worksheet
    Set sht = ActiveWorkbook.Worksheets("Sheet1")

    If Not Intersect(ActiveCell, sht.Range("A1:A10")) Is Nothing Then

        ChangeKeys True

    End If

End Sub

Private Sub Worksheet_Deactivate()

    ChangeKeys False

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim sht As Worksheet
    Set sht = ActiveWorkbook.Worksheets("Sheet1")

    If Not Intersect(ActiveCell, sht.Range("A1:A10")) Is Nothing Then

        ChangeKeys True

    Else

        ChangeKeys False

    End If

End Sub

Поместите это в модуль:

Sub ChangeKeys(KeysChanged As Boolean)

    If KeysChanged Then

        'Add procedures to the keys

        'Functions on numpad (http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000520.html)
        Application.OnKey "{106}", "'KeyPress " & 42 & "'" 'Multiply *
        Application.OnKey "{107}", "'KeyPress " & 43 & "'" 'Add +
        Application.OnKey "{109}", "'KeyPress " & 45 & "'" 'Subtract -
        Application.OnKey "{111}", "'KeyPress " & 47 & "'" 'Divide /

    Else

        'Reset the keys

        'Functions on numpad (http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00000520.html)
        Application.OnKey "{106}" 'Multiply *
        Application.OnKey "{107}" 'Add +
        Application.OnKey "{109}" 'Subtract -
        Application.OnKey "{111}" 'Divide /

    End If

End Sub


Function KeyPress(the_key As Long)

    Application.SendKeys "{F2}{" & Chr$(the_key) & "}"

End Function

Поведение нажатия клавиш изменяется для «+ - * /» (хотя в Excel 2013 кажется, что оно не работает для «/») при выборе ячейки в диапазоне («A1:A10») и изменяется обратно при выборе ячейки вне этого диапазона или активирует другой лист. Возможно, вы захотите сделать нечто подобное, когда деактивируете / активируете всю книгу.

С наилучшими пожеланиями,

Саймон

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .