我设置了一个宏,用来填充我的PDF表单。我需要在正数前面加上加号,比如+2,75。我正在使用这段代码。
Application.SendKeys Range("D" & CustRow).Value, True
我试过使用这个和其他很多变体。没有成功。
Application.SendKeys Format(Range("D" & CustRow).Value,""+"#.##;-#.##"), True
有人能帮帮我吗?
yx2lnoni1#
1.您的代码中至少有3处错误:
""+"#.##;-#.##"
""
"#.##;-#.##"
+
"+#.##;-#.##"
SendKeys
^
%
[Shift] + [=]
+=
Format()
Dim cellRef As String : cellRef = "D" & CustRow Dim cellValue As Variant: cellValue = Range( cellRef ).Value Dim formatted As String : formatted = Format( cellValue, "+#.##;-#.##" ) Dim keys As String : keys = Replace( formatted, "+", "+=" ) Application.SendKeys keys, True
1条答案
按热度按时间yx2lnoni1#
1.您的代码中至少有3处错误:
""+"#.##;-#.##"
表示 * 将""
(空字符串)与字符串"#.##;-#.##"
* 连接(即+
是VBA运算符,而不是SendKeys键)。1.假设您指的是
"+#.##;-#.##"
,那么这也不起作用,因为VBA的SendKeys
将+
、^
和%
符号视为分别表示Shift、Ctrl和Alt修饰键的特殊符号。1.最重要的是:键盘上没有“+”键。要输入“+”字符,您必须按
[Shift] + [=]
,因此您需要通过SendKeys
将“+=
“发送到Acrobat,后面是数字/数字字符。1.虽然在这个特殊情况下,您的代码并不“错误”,但您错误地假定VBA
Format()
字符串将生成您可以直接传递给SendKeys
的输出-但是Format()
和SendKeys
都查找和处理它们自己的特殊字符集,并具有它们自己的转义序列。您应该首先Format()
Excel单元格值,然后使用中间变量从该字符串生成SendKeys
字符串:这也有助于调试,因为现在您无法看到发送到SendKeys
的字符串(VBA的调试器看起来不是很复杂,因为它从 Office 2000 以来基本上没有变化)。所以试试这个:(我没有Acrobat表单来测试此功能,所以我不确定它是否能正常工作)