将焦点移出TextBox

时间:2018-03-23 19:08:28

标签: excel vba vsto powerpoint activex

ActiveX TextBox在右键单击菜单中提供Edit命令,您可以选择直接在TextBox中转到编辑模式类型。您可以随时按 Esc 返回正常模式。相当于第一个动作的VBA(转到编辑模式)是:

ActivePresentation.Slides(1).Shapes("TextBox21").OLEFormat.DoVerb

但是我无法找到第二个动作的等效物,即回到正常模式。有谁知道吗?

N.B。问题并非特定于PowerPoint,因此我添加了excel标记以吸引更多专家。

2 个答案:

答案 0 :(得分:0)

我没有找到任何内置的方法可以回到普通模式。我最后做的是使用SendKeys.Send("{Esc}")。这成功地将TextBox恢复到正常模式。但是,这种方法确实有一些警告。首先,如果当前焦点不在幻灯片中(例如,您正在使用功能区,或打开对话框), Esc 可能会产生不良影响(例如取消对话框)并且不会带来TextBox为Normal状态。其次,如果你有 Ctrl + Shift 键,发送 Esc 将打开Windows开始菜单。

除非这些麻烦,这种方法本身在我的情况下运作良好。希望这有助于其他人。

答案 1 :(得分:0)

我可能不完全了解你的情况,但以下内容对我有用。即使焦点位于ActiveX控件中,Select方法也会选择幻灯片上的任何形状。然后,如果您真的想要选择ActiveX控件(但不是在编辑模式下),请再次选择它。

Dim p as Presentation
Dim s as Slide
Dim shp as Shape

Set p = ActivePresentation
Set s = p.Slides(1)
Set shp1 = s.Shapes(1)
Set shp2 = s.Shapes("TextBox3")
shp2.OLEFormat.DoVerb
shp2.OLEFormat.Object.Text = "test"
shp1.Select 'transitory
shp2.Select