单元格 A1 包含数字 25,它是右对齐的,暗示它是一个数字,而不是文本。
D1 包含公式:
="" & A1
D1 中的 25 是左对齐的,暗示它是文本。下面的公式证实了这一点,该公式返回 1:
=IF(D1="25",1,0)
以下 VBA 代码将 25 放入 F1,但 25 是右对齐的,IF 测试返回 0:
Range("F1") = "" & Range("A1")
对差异有什么解释吗?
E1 包含以下公式,它给出左对齐的 25 并且 IF 测试返回 1:
TEXT(A1,"0")
但是,下面的代码给出了一个右对齐的 25 而 IF 测试返回 0:
Range("F1") = Application.WorksheetFunction.Text(Range("A1"), "0")
并不是说我必须使用 TEXT
函数。我只是想知道为什么它的工作方式与在工作表中时不同。
任何告诉何时或哪些工作表函数在 VBA 代码中不起作用的规则,或者更准确地说,会给出与在工作表中时不同的结果?
最佳答案
当 vba 将数据写入单元格时,如果需要,即如果数据类型与单元格的数字格式属性不同,则会调用内部类型转换函数。
您不希望调用该转换函数。
为避免调用此转换函数,请在写入数据之前为单元格选择适当的 Numberformat 属性。
Range("b4").NumberFormat = "@"
Range("b4") = Application.WorksheetFunction.Text(Range("A1"), "0")
关于vba - 工作表中的公式和 VBA 的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44981380/