gpt4 book ai didi

excel - Excel VBA UDF自动完成参数

转载 作者:行者123 更新时间:2023-12-02 22:39:15 26 4
gpt4 key购买 nike

我意识到在此网站,外部论坛和其他讨论组上有成千上万的评论和数百个与UDF工具提示相关的问题。我确实是VBA和Excel的新手,但最近学到了很多东西。在学习的那段时间里,我也看过那些论坛,所以请不要向我发送指向第三方解决方法(如Excel-DNA等)的链接。这不是同一问题。我不想填充工具提示,我想将UDF参数自动完成到单元格中。



总之,标题说明了一切,有一种方法可以自动将UDF参数填充到字符串中。

我已经搜索Documentation site与此相关的任何内容,但均未成功。因此,下一步就是找到一种对用户来说相对容易,对用户计算机内存极其友好的解决方案,更不用说不需要花费很多时间的,具有跨平台兼容性且易于使用的dev friendly。自定义。

由于我是Excel的新手,所以我不确定在工作簿对象方面外接程序的工作方式。我可以通过反复试验发现这一点,但是在文档站点上找到的最接近我期望结果的东西是通过强制执行自动更正:

With Application.AutoCorrect
.AddReplacement "=EPP(", "=EPP(payrate,hrs)"
End With


FigA

这很快并且可以完成工作!!! ........就是这样。

这样做有两个很好的原因:


公式/ UDF是用 =符号唯一发起的,所以我不
除其他原因外,不得不进行过多的编码以弄清楚用户在键入什么
减少代码和潜在的错误。特别是对于Win 64位版本与32位版本需要不同语法的情况,Mac用户在使用API​​时可能会出现这种情况


出于每一个好的理由,有10个不好的理由。我将重点介绍以下几点:


它允许您按Enter,Tab等进入下一个单元格,下一个单元格等。
光标移到字符串的末尾,这对于自动更正是正常的,但对于强制性参数的填写则不理想。
我将不得不手动管理“ AddReplacement”数组
在带嵌套函数的公式中这没有用


通过将其更改为以下内容,我能够解决其中的一些问题:

With Application.AutoCorrect
.AddReplacement "=EPP(", "=EPP(<payrate>,<hrs>"
End With


此处发生的是,如果用户按下Enter键,Excel将自动包含右括号,但是在这种情况下将引发错误,“ Excel认为这是公式错误:1 + 1 = 2”,因为Excel认为不是由于 <>符号而产生的公式。因此,用户现在可以100%确定需要审核。

说完这些,做完之后,一个巨大的障碍仍然存在,用户必须为该填充空间。哎哟。只要使用过excel,就不会在选择函数后再按空格键,我无法想象这对任何人来说都是很自然的事情。

因此,我尝试了几种方法来规避这种行为。到目前为止没有任何工作。我尝试在自动更正对象中使用 Application.SendKeys

With Application.AutoCorrect
.AddReplacement "=EPP(", "=EPP("
.Application.SendKeys "^+A" 'CTRL + SHIFT + A also tried " " for space
End With


接下来,我尝试使用 Application.OnKey事件来处理按下Tab键时的情况,因此我可以判断它是否在函数/ UDF之后,我一直收到错误消息,指出由于某些原因宏可能不可用。我认为无论如何现在都很好,考虑该选项可能是维护的噩梦(用户当前正在做什么?用户在哪里?用户是否按下了用户窗体控件上的标签?等等),不认为这是可行的,除非已经在该文档站点中找不到某些内置内容,否则我很困惑。

有人对核心问题有可靠的解决方法吗?我现在不关心设置光标位置等技术问题,只需要基本的自动完成即可,无需按空格。基本上,我想模拟在单元格中输入UDF之后CTRL + SHIFT + A的功能



更新1

好吧,所以在尝试了更多之后,我有更多信息可以分享。

我确实处理了与tab相关的 Application.OnKey事件,并得出以下结论:当在公式列表中选择公式选项时,Microsoft具有特殊的事件处理程序。如果有人可以帮助我弄清楚如何访问它,我认为我们可以继续前进。从建议的公式列表中选择公式时,第一次按Tab时未执行我的Debug.Print字符串“ Tab被按下”。 Application对象不能将其识别为Tab键,因为它正在从该列表中选择某项,这使我相信他们为此拥有自己的事件处理程序。只是要抓住我认为我们会很好。

同时,通过在Excel>选项>公式中将 Formula Autocomplete设置为false,我发现了一种丑陋的方法来使它起作用而无需按空格。该列表不会填充,并且如果用户仅键入`= EPP(“,它将按照需要填充其余部分!但这是用户特定的设置,因此对于缩放而言不是最佳选择。

最佳答案

关于excel - Excel VBA UDF自动完成参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41668568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com