【问题标题】:VBA Excel - Replace Enter key with Alt+ EnterVBA Excel - 用 Alt Enter 替换 Enter 键
【发布时间】:2022-01-17 17:29:45
【问题描述】:

我正在尝试用 Alt+Enter 替换 Enter 键,以便我可以轻松地在单元格中编写多行。

我看到有一个函数 Application.OnKeyApplication.SendKeys 我想使用这样的东西:

Application.OnKey "~" , Application.SendKeys("%~") 

但是我应该把它们放在哪里呢?还是有其他想法?

【问题讨论】:

  • 问题是您可能首先需要撤消输入,然后执行 alt-enter。问题是,如果您在单元格的中间,撤消将不会被撤消。我怀疑这会奏效
  • 你也想用 Ctrl+Alt+ENTER 替换 Ctrl+ENTER 吗?
  • Dominique,我只想替换 Enter。 @Andreas 我认为可能有一种方法可以使用临时变量和位置来记住输入发生的位置,然后返回以添加回车并获得焦点,但我个人认为这种努力不值得。跨度>

标签: excel vba replace


【解决方案1】:

我想我同意@Andreas,这不太可能使用这些方法。

这就是我尝试过的:我制作了一个按钮 Button1,并在其单击方法中分配了 Enter 键以按照您在问题中的建议发送 Alt-Enter:

Sub Button1_onClick()

    Call Application.OnKey("~", "SendAltEnter")

End Sub

Sub SendAltEnter()

    Application.SendKeys ("%~")
    
End Sub

这实际上会重新路由 Enter 键,但显然 Alt-Enter 会导致对“Alt-Enter”的“Enter”部分方法的另一个调用——它第一次导致无限循环单击按钮后按 Enter 键,您必须重新启动 Excel 应用程序才能清理它。

我也试过这个,只需在 Enter 附近使用另一个键,即 #(至少在德语键盘上),您可以按该键而不是 Alt-Enter:

Sub Button1_onClick()

    Call Application.OnKey("#", "SendAltEnter")

End Sub

Sub SendAltEnter()

    Application.SendKeys ("%~")
    
End Sub

键“#”被截获,但如果您在单元格中处于输入模式,则不会截获,前提是焦点位于工作表中的某个位置。

我认为您必须在 Excel 之外使用适用于 Windows 的键盘重新映射工具来执行此操作。我通过谷歌搜索很快找到了https://www.howtogeek.com/710290/how-to-remap-any-key-or-shortcut-on-windows-10/,但对它一无所知,也不知道它是否合法。

【讨论】:

  • 我也考虑过键重映射,但该 excel 将被更多没有时间重映射的人使用。感谢您尝试^^。
【解决方案2】:

您是否考虑过只使用 Shift + Enter 来插入回车符?

【讨论】:

  • 这是个好主意,但会破坏只使用一个键的目的。
  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2014-06-22
  • 2015-08-08
  • 1970-01-01
  • 2010-12-08
  • 2018-04-26
相关资源
最近更新 更多