作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试列出每个 Excel 行从 7F 到 00 的十六进制值。我通过执行以下代码实现了它:
Sub ListDownHex()
Dim StartValue, i As Integer
Dim nRow As Long
Dim sh As Worksheet
Set sh = ActiveSheet
StartValue = 127 'memory location of 8051 RAM
nRow = 4
For i = StartValue To 0 Step -1
sh.Range("A" & nRow) = Format(Right$("00" & Hex(i), 2), "00")
nRow = nRow + 1
Next i
End Sub
除了具有“A”的十六进制值,如“7A”、“6A”、“5A”等,结果为“00”。
? Format("7B","00") 'desired output
7B
? Format("7A","00") 'not expected output
00
这是一个错误还是我错过了什么?为什么他们的行为不同?
最佳答案
Format()
是一个复杂的函数,可以格式化各种事物,包括日期和数字。
当您向它传递一个字符串("7A"
和 "7B"
是)时,它会尝试查看它们是否可以转换为数字( IsNumeric()
返回 True)或日期( IsDate()
返回 True)。如果可以,它会转换它们,然后才应用格式。IsDate()
为 "7A"
返回 True ,这是因为“7A”是时间值“早上 7 点”(早上 7 点)的有效文本表示。
反过来,这是因为 AM/PM
formatting token 的简短版本, A/P
,将“am/pm”指示符返回为“a/p”:
? Format$(#07:00:00#, "hA/P") ' => 7A
? Format$(#17:00:00#, "hA/P") ' => 5P
所以字符串“7A”首先被转换为
Date
值(value)
#12/30/1899 07:00:00#
(零日期,早上 7 点)。该值的数字表示为
0.29166667
,当根据“00”格式格式化时,四舍五入为“00”。
IsDate()
, 所以 Format 输出它而不像它对没有其他含义的字符串所做的更改。
Format()
功能,你所需要的只是
= Right$("00" & Hex$(i), 2)
关于excel - Excel VBA - 格式 ("7A", "00") 输出 "00"而格式 ("7B", "00") 导致所需的输出 "7A"。为什么它们不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62863731/
我是一名优秀的程序员,十分优秀!