excel 格式数字-加号(+)

qv7cva1a  于 2022-11-26  发布在  其他
关注(0)|答案(1)|浏览(139)

我设置了一个宏,用来填充我的PDF表单。我需要在正数前面加上加号,比如+2,75。我正在使用这段代码。

Application.SendKeys Range("D" & CustRow).Value, True

我试过使用这个和其他很多变体。没有成功。

Application.SendKeys Format(Range("D" & CustRow).Value,""+"#.##;-#.##"), True

有人能帮帮我吗?

yx2lnoni

yx2lnoni1#

1.您的代码中至少有3处错误:

  1. symtax ""+"#.##;-#.##"表示 * 将""(空字符串)与字符串"#.##;-#.##" * 连接(即+是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表单来测试此功能,所以我不确定它是否能正常工作)
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

相关问题